feat: PR 审核流程 + 自动合并 + macOS 通知 + 订阅额度透传 + 归档详情
PR 流程(开发→提PR→CodeReview→安全审计→审核→通过即合并): - reviewer 拆分为 code review 与安全审计两个独立 CC run(kind=reviewer/security), TaskResult 四字段(summary/verdict + securitySummary/securityVerdict),闸上两节报告两枚结论徽章 - executor/merge.ts: 通过即合并——临时 worktree 内 merge --no-ff,绝不碰用户工作区/不 push; 冲突安全拒绝(报冲突文件);重复合并幂等;合并后回收执行 worktree + 删分支 - decide 路由 merge:false 逃生口 + 看板「仅通过」按钮(目标分支被工作区检出时用) 通知(daemon/notify.ts): - macOS 原生通知: 进审核闸(复审建议拒绝标⚠)/连续失败需人工/合并完成 - 同任务同类型 60s 抑制、osascript 转义截断、MAESTRO_NOTIFY=0 关闭 订阅额度透传(daemon/usage.ts): - OAuth usage API(与 Claude Code/claude-hud 同源),凭证 keychain→内存零泄漏 - 60s 成败双缓存+并发去重+5s 超时,失败降级 null - GET /api/agents 顶层 usage 字段;Agent 面板显示 5h/周用量条+重置倒计时(>80%琥珀/>95%红) 看板与生命周期: - 归档区: 深度1整树完成沉底,时间倒序分页(尺寸 chip 10/20/50/100 置底) - 归档详情对话框: 全属性/执行历史与时长/审批记录/状态流转时间线(GET /api/tasks/:id/events) - 容器收口: 已拆解 Hard 子任务全 done 自动 done(afterDone 逐级向上) - 同步按钮收进配置面板;执行白名单扩测试命令(npm/go/shellcheck/make/pytest) - Agent 面板显示调度模式与各复杂度模型;被依赖阻塞→被阻塞 测试: 74/74(新增 merge 6/notify 10/usage 7/容器收口/双复审适配) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+7
-5
@@ -40,9 +40,11 @@ export interface TaskResult {
|
||||
worktree: string | null;
|
||||
diffSummary: string | null;
|
||||
commits: string[];
|
||||
prUrl: string | null;
|
||||
summary: string | null; // 复审 summary(markdown),旧数据缺省 null
|
||||
verdict: ReviewVerdict | null; // 复审结论,解析不到 / 复审失败 = null
|
||||
prUrl: string | null; // 合并后写 merged:<mergeCommit>(复用字段记录合并产物)
|
||||
summary: string | null; // code review 报告(markdown),旧数据缺省 null
|
||||
verdict: ReviewVerdict | null; // code review 结论,解析不到 / 复审失败 = null
|
||||
securitySummary: string | null; // 安全审计报告(markdown),旧数据缺省 null
|
||||
securityVerdict: ReviewVerdict | null; // 安全审计结论,解析不到 / 审计失败 = null
|
||||
}
|
||||
|
||||
export interface Task {
|
||||
@@ -66,13 +68,13 @@ export interface Task {
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export type RunKind = 'planner' | 'executor' | 'reviewer';
|
||||
export type RunKind = 'planner' | 'executor' | 'reviewer' | 'security';
|
||||
export type RunStatus = 'started' | 'succeeded' | 'failed' | 'cancelled';
|
||||
|
||||
export interface Run {
|
||||
id: Id;
|
||||
taskId: Id;
|
||||
kind: RunKind; // planner(产出拆解/方案)| executor(执行改动)| reviewer(执行后自动复审)
|
||||
kind: RunKind; // planner(产出拆解/方案)| executor(执行改动)| reviewer(code review)| security(安全审计)
|
||||
worktree: string | null;
|
||||
branch: string | null;
|
||||
status: RunStatus;
|
||||
|
||||
Reference in New Issue
Block a user