@fitlab-ai/agent-infra 0.8.3 → 0.8.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.zh-CN.md +10 -0
- package/bin/cli.ts +1 -1
- package/dist/bin/cli.js +1 -1
- package/dist/lib/cp.js +56 -15
- package/dist/lib/defaults.json +9 -0
- package/dist/lib/init.js +5 -0
- package/dist/lib/sandbox/capture.js +5 -3
- package/dist/lib/sandbox/clipboard/bridge.js +12 -9
- package/dist/lib/sandbox/clipboard/inbox.js +82 -0
- package/dist/lib/sandbox/commands/create.js +68 -26
- package/dist/lib/sandbox/engine.js +33 -3
- package/dist/lib/sandbox/engines/colima.js +2 -2
- package/dist/lib/sandbox/runtimes/base.dockerfile +7 -0
- package/dist/lib/sandbox/shell.js +9 -1
- package/dist/lib/sandbox/tools.js +2 -2
- package/dist/lib/server/daemon.js +9 -0
- package/dist/lib/server/process-control.js +66 -73
- package/dist/lib/server/process-state.js +168 -0
- package/dist/lib/update.js +2 -0
- package/lib/cp.ts +56 -15
- package/lib/defaults.json +9 -0
- package/lib/init.ts +9 -0
- package/lib/sandbox/capture.ts +5 -3
- package/lib/sandbox/clipboard/bridge.ts +14 -12
- package/lib/sandbox/clipboard/inbox.ts +83 -0
- package/lib/sandbox/commands/create.ts +80 -27
- package/lib/sandbox/engine.ts +37 -3
- package/lib/sandbox/engines/colima.ts +2 -2
- package/lib/sandbox/runtimes/base.dockerfile +7 -0
- package/lib/sandbox/shell.ts +11 -2
- package/lib/sandbox/tools.ts +5 -5
- package/lib/server/daemon.ts +9 -0
- package/lib/server/process-control.ts +70 -71
- package/lib/server/process-state.ts +183 -0
- package/lib/update.ts +6 -0
- package/package.json +2 -1
- package/runtime/platform-adapters/platform-sync.github.js +1501 -0
- package/templates/.agents/README.en.md +5 -0
- package/templates/.agents/README.zh-CN.md +5 -0
- package/templates/.agents/rules/create-issue.github.en.md +1 -1
- package/templates/.agents/rules/create-issue.github.zh-CN.md +1 -1
- package/templates/.agents/rules/review-handshake.en.md +5 -4
- package/templates/.agents/rules/review-handshake.zh-CN.md +5 -4
- package/templates/.agents/rules/testing-discipline.en.md +3 -41
- package/templates/.agents/rules/testing-discipline.zh-CN.md +3 -41
- package/templates/.agents/scripts/lib/agent-infra-package.js +149 -0
- package/templates/.agents/scripts/lib/post-review-commit.js +5 -0
- package/templates/.agents/scripts/platform-adapters/platform-sync.github.js +25 -1459
- package/templates/.agents/scripts/review-diff-fingerprint.js +95 -24
- package/templates/.agents/scripts/validate-artifact.js +144 -38
- package/templates/.agents/skills/analyze-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/analyze-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/archive-tasks/scripts/archive-tasks.sh +1 -1
- package/templates/.agents/skills/block-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/block-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/cancel-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/cancel-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/check-task/SKILL.zh-CN.md +9 -9
- package/templates/.agents/skills/close-codescan/SKILL.en.md +1 -1
- package/templates/.agents/skills/close-codescan/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/close-dependabot/SKILL.en.md +1 -1
- package/templates/.agents/skills/close-dependabot/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/code-task/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/code-task/reference/branch-management.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/reference/fix-mode.en.md +2 -2
- package/templates/.agents/skills/code-task/reference/fix-mode.zh-CN.md +2 -2
- package/templates/.agents/skills/code-task/reference/output-template.zh-CN.md +1 -1
- package/templates/.agents/skills/commit/SKILL.en.md +6 -4
- package/templates/.agents/skills/commit/SKILL.zh-CN.md +6 -4
- package/templates/.agents/skills/commit/reference/task-status-update.en.md +35 -8
- package/templates/.agents/skills/commit/reference/task-status-update.zh-CN.md +35 -8
- package/templates/.agents/skills/complete-manual-validation/SKILL.en.md +27 -3
- package/templates/.agents/skills/complete-manual-validation/SKILL.zh-CN.md +27 -3
- package/templates/.agents/skills/complete-task/SKILL.en.md +3 -3
- package/templates/.agents/skills/complete-task/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/complete-task/config/verify.en.json +1 -0
- package/templates/.agents/skills/complete-task/config/verify.zh-CN.json +1 -0
- package/templates/.agents/skills/create-pr/SKILL.en.md +4 -4
- package/templates/.agents/skills/create-pr/SKILL.zh-CN.md +4 -4
- package/templates/.agents/skills/create-pr/reference/pr-body-template.en.md +1 -1
- package/templates/.agents/skills/create-pr/reference/pr-body-template.zh-CN.md +1 -1
- package/templates/.agents/skills/create-task/SKILL.en.md +2 -2
- package/templates/.agents/skills/create-task/SKILL.zh-CN.md +5 -5
- package/templates/.agents/skills/import-codescan/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-codescan/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/import-dependabot/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-dependabot/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/import-issue/SKILL.en.md +2 -2
- package/templates/.agents/skills/import-issue/SKILL.zh-CN.md +3 -3
- package/templates/.agents/skills/init-labels/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/init-milestones/SKILL.en.md +5 -4
- package/templates/.agents/skills/init-milestones/SKILL.zh-CN.md +6 -5
- package/templates/.agents/skills/init-milestones/scripts/init-milestones.github.sh +170 -45
- package/templates/.agents/skills/plan-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/plan-task/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/restore-task/SKILL.en.md +1 -1
- package/templates/.agents/skills/restore-task/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/review-analysis/SKILL.en.md +1 -1
- package/templates/.agents/skills/review-analysis/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/review-analysis/reference/output-templates.en.md +5 -5
- package/templates/.agents/skills/review-analysis/reference/output-templates.zh-CN.md +5 -5
- package/templates/.agents/skills/review-code/SKILL.en.md +8 -4
- package/templates/.agents/skills/review-code/SKILL.zh-CN.md +6 -3
- package/templates/.agents/skills/review-code/config/verify.en.json +3 -1
- package/templates/.agents/skills/review-code/config/verify.zh-CN.json +3 -1
- package/templates/.agents/skills/review-code/reference/output-templates.en.md +5 -5
- package/templates/.agents/skills/review-code/reference/output-templates.zh-CN.md +5 -5
- package/templates/.agents/skills/review-code/reference/report-template.en.md +3 -2
- package/templates/.agents/skills/review-code/reference/report-template.zh-CN.md +3 -2
- package/templates/.agents/skills/review-plan/SKILL.en.md +1 -1
- package/templates/.agents/skills/review-plan/SKILL.zh-CN.md +1 -1
- package/templates/.agents/skills/review-plan/reference/output-templates.en.md +5 -5
- package/templates/.agents/skills/review-plan/reference/output-templates.zh-CN.md +5 -5
- package/templates/.agents/skills/test/SKILL.zh-CN.md +26 -8
- package/templates/.agents/skills/update-agent-infra/SKILL.en.md +5 -1
- package/templates/.agents/skills/update-agent-infra/SKILL.zh-CN.md +6 -2
- package/templates/.agents/skills/update-agent-infra/scripts/sync-templates.js +203 -142
- package/templates/.agents/skills/watch-pr/SKILL.en.md +2 -2
- package/templates/.agents/skills/watch-pr/SKILL.zh-CN.md +2 -2
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.en.md +8 -1
- package/templates/.agents/skills/watch-pr/reference/monitor-and-heal.zh-CN.md +8 -1
|
@@ -73,9 +73,10 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
73
73
|
### 4. 执行审查
|
|
74
74
|
|
|
75
75
|
遵循 `.agents/workflows/feature-development.yaml`,并同时检查完整变更上下文:
|
|
76
|
-
- `git
|
|
76
|
+
- 一次性记录 `R=$(git rev-parse HEAD)`;本轮报告、指纹和任务审查事实都复用该 R,禁止稍后重新读取 HEAD 代替
|
|
77
|
+
- `git diff --binary "$R" -- <post-review-globs>` 覆盖已跟踪变更
|
|
77
78
|
- `git ls-files -o --exclude-standard -z -- <post-review-globs>` 覆盖未跟踪新文件
|
|
78
|
-
- `node .agents/scripts/review-diff-fingerprint.js worktree
|
|
79
|
+
- `node .agents/scripts/review-diff-fingerprint.js worktree "$R" --format json` 一次生成审查差异指纹 `F` 与审查快照树 `T`,并写入报告
|
|
79
80
|
|
|
80
81
|
> 详细审查标准、严重程度划分和 reviewer 关注点见 `reference/review-criteria.md`。执行此步骤前先读取 `reference/review-criteria.md`。
|
|
81
82
|
> 测试审查硬门禁:当 `git diff` 触及测试文件时,必须先读取 `.agents/rules/testing-discipline.md` 并逐条核对(尤其"正向已覆盖时不应再加反向断言")。
|
|
@@ -91,13 +92,15 @@ tail .agents/workspace/active/{task-id}/task.md
|
|
|
91
92
|
获取当前时间:
|
|
92
93
|
|
|
93
94
|
```bash
|
|
94
|
-
date "+%Y-%m-%d %H:%M:%S
|
|
95
|
+
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
- `current_step`:code-review
|
|
98
99
|
- `assigned_to`:{当前代理}
|
|
99
100
|
- `updated_at`:{当前时间}
|
|
100
101
|
- `agent_infra_version`:按 `.agents/rules/version-stamp.md` 取值
|
|
102
|
+
- 若本轮 `总体结论` / `Overall Verdict` 为 `通过` / `Approved` 且 `T == R^{tree}`,写入 `last_reviewed_commit: {R}`;若 Approved 快照包含未提交差异,则清除既有 `last_reviewed_commit`,等待 `commit` 锚定
|
|
103
|
+
- 若本轮结论不是 Approved,保留既有 `last_reviewed_commit`,不得推进或清空
|
|
101
104
|
- 追加:
|
|
102
105
|
`- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Review Code (Round {N})** by {agent} — Verdict: {Approved/Changes Requested/Rejected}, blockers: {n}, major: {n}, minor: {n}, Manual-validation: {n} → {artifact-filename}`
|
|
103
106
|
|
|
@@ -32,10 +32,12 @@
|
|
|
32
32
|
"^\\$ ",
|
|
33
33
|
"^- \\*\\*Overall Verdict\\*\\*[::]\\s*(?:通过|需要修改|拒绝|Approved|Changes Requested|Rejected)\\s*$",
|
|
34
34
|
"^- \\*\\*Review Baseline Commit\\*\\*[::]\\s*\\S",
|
|
35
|
-
"^- \\*\\*Reviewed Diff Fingerprint\\*\\*[::]\\s*sha256:[0-9a-f]{64}\\s*$"
|
|
35
|
+
"^- \\*\\*Reviewed Diff Fingerprint\\*\\*[::]\\s*sha256:[0-9a-f]{64}\\s*$",
|
|
36
|
+
"^- \\*\\*Reviewed Snapshot Tree\\*\\*[::]\\s*[0-9a-f]{40,64}\\s*$"
|
|
36
37
|
],
|
|
37
38
|
"freshness_minutes": 30
|
|
38
39
|
},
|
|
40
|
+
"review-fact": {},
|
|
39
41
|
"activity-log": {
|
|
40
42
|
"expected_action_pattern": "(Review Code|Code Review) \\(Round \\d+\\)",
|
|
41
43
|
"freshness_minutes": 30
|
|
@@ -32,10 +32,12 @@
|
|
|
32
32
|
"^\\$ ",
|
|
33
33
|
"^- \\*\\*总体结论\\*\\*[::]\\s*(?:通过|需要修改|拒绝|Approved|Changes Requested|Rejected)\\s*$",
|
|
34
34
|
"^- \\*\\*审查基线提交\\*\\*[::]\\s*\\S",
|
|
35
|
-
"^- \\*\\*审查差异指纹\\*\\*[::]\\s*sha256:[0-9a-f]{64}\\s*$"
|
|
35
|
+
"^- \\*\\*审查差异指纹\\*\\*[::]\\s*sha256:[0-9a-f]{64}\\s*$",
|
|
36
|
+
"^- \\*\\*审查快照树\\*\\*[::]\\s*[0-9a-f]{40,64}\\s*$"
|
|
36
37
|
],
|
|
37
38
|
"freshness_minutes": 30
|
|
38
39
|
},
|
|
40
|
+
"review-fact": {},
|
|
39
41
|
"activity-log": {
|
|
40
42
|
"expected_action_pattern": "(Review Code|Code Review) \\(Round \\d+\\)",
|
|
41
43
|
"freshness_minutes": 30
|
|
@@ -29,7 +29,7 @@ Task {task-id} review completed. Verdict: approved.
|
|
|
29
29
|
|
|
30
30
|
Next step - commit the code:
|
|
31
31
|
- Claude Code / OpenCode: /commit
|
|
32
|
-
- Gemini CLI: /
|
|
32
|
+
- Gemini CLI: /{{project}}:commit
|
|
33
33
|
- Codex CLI: $commit
|
|
34
34
|
|
|
35
35
|
[When manual-validation > 0, append this final line:]
|
|
@@ -45,12 +45,12 @@ Task {task-id} review completed. Verdict: approved.
|
|
|
45
45
|
|
|
46
46
|
Next step - fix before commit (recommended):
|
|
47
47
|
- Claude Code / OpenCode: /code-task {task-ref}
|
|
48
|
-
- Gemini CLI: /
|
|
48
|
+
- Gemini CLI: /{{project}}:code-task {task-ref}
|
|
49
49
|
- Codex CLI: $code-task {task-ref}
|
|
50
50
|
|
|
51
51
|
Or commit directly (skip fix):
|
|
52
52
|
- Claude Code / OpenCode: /commit
|
|
53
|
-
- Gemini CLI: /
|
|
53
|
+
- Gemini CLI: /{{project}}:commit
|
|
54
54
|
- Codex CLI: $commit
|
|
55
55
|
|
|
56
56
|
[When manual-validation > 0, append this final line:]
|
|
@@ -66,7 +66,7 @@ Task {task-id} review completed. Verdict: changes requested.
|
|
|
66
66
|
|
|
67
67
|
Next step - fix the findings:
|
|
68
68
|
- Claude Code / OpenCode: /code-task {task-ref}
|
|
69
|
-
- Gemini CLI: /
|
|
69
|
+
- Gemini CLI: /{{project}}:code-task {task-ref}
|
|
70
70
|
- Codex CLI: $code-task {task-ref}
|
|
71
71
|
|
|
72
72
|
[When manual-validation > 0, append this final line:]
|
|
@@ -82,7 +82,7 @@ Task {task-id} review completed. Verdict: rejected, re-design the technical plan
|
|
|
82
82
|
|
|
83
83
|
Next step - re-design the technical plan:
|
|
84
84
|
- Claude Code / OpenCode: /plan-task {task-ref}
|
|
85
|
-
- Gemini CLI: /
|
|
85
|
+
- Gemini CLI: /{{project}}:plan-task {task-ref}
|
|
86
86
|
- Codex CLI: $plan-task {task-ref}
|
|
87
87
|
|
|
88
88
|
> Note: Rejected means the implementation direction needs to be reworked end-to-end, not patched locally. `code-task/scripts/detect-mode.js` branch #7 refuses a direct `/code-task` and requires a fresh plan first.
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
下一步 - 提交代码:
|
|
31
31
|
- Claude Code / OpenCode:/commit
|
|
32
|
-
- Gemini CLI:/
|
|
32
|
+
- Gemini CLI:/{{project}}:commit
|
|
33
33
|
- Codex CLI:$commit
|
|
34
34
|
|
|
35
35
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
|
|
46
46
|
下一步 - 修复问题后提交(推荐):
|
|
47
47
|
- Claude Code / OpenCode:/code-task {task-ref}
|
|
48
|
-
- Gemini CLI:/
|
|
48
|
+
- Gemini CLI:/{{project}}:code-task {task-ref}
|
|
49
49
|
- Codex CLI:$code-task {task-ref}
|
|
50
50
|
|
|
51
51
|
或直接提交(跳过修复):
|
|
52
52
|
- Claude Code / OpenCode:/commit
|
|
53
|
-
- Gemini CLI:/
|
|
53
|
+
- Gemini CLI:/{{project}}:commit
|
|
54
54
|
- Codex CLI:$commit
|
|
55
55
|
|
|
56
56
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
|
|
67
67
|
下一步 - 修复问题:
|
|
68
68
|
- Claude Code / OpenCode:/code-task {task-ref}
|
|
69
|
-
- Gemini CLI:/
|
|
69
|
+
- Gemini CLI:/{{project}}:code-task {task-ref}
|
|
70
70
|
- Codex CLI:$code-task {task-ref}
|
|
71
71
|
|
|
72
72
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
|
|
83
83
|
下一步 - 重新设计技术方案:
|
|
84
84
|
- Claude Code / OpenCode:/plan-task {task-ref}
|
|
85
|
-
- Gemini CLI:/
|
|
85
|
+
- Gemini CLI:/{{project}}:plan-task {task-ref}
|
|
86
86
|
- Codex CLI:$plan-task {task-ref}
|
|
87
87
|
|
|
88
88
|
> 注意:Rejected 表示实现方向需要整体重做,不是局部修复。`code-task/scripts/detect-mode.js` 分支 #7 会拒绝直接 `/code-task`,要求先重新方案设计。
|
|
@@ -21,8 +21,9 @@ Use this template when writing `review-code.md` or `review-code-r{N}.md`.
|
|
|
21
21
|
- **Reviewer**: {reviewer-name}
|
|
22
22
|
- **Review Time**: {timestamp}
|
|
23
23
|
- **Scope**: {file-count and major modules}
|
|
24
|
-
- **Review Baseline Commit**: {raw
|
|
25
|
-
- **Reviewed Diff Fingerprint**: {raw node .agents/scripts/review-diff-fingerprint.js worktree
|
|
24
|
+
- **Review Baseline Commit**: {raw R captured once for this round} (diff base only; see `.agents/rules/review-handshake.md`)
|
|
25
|
+
- **Reviewed Diff Fingerprint**: {raw node .agents/scripts/review-diff-fingerprint.js worktree "$R"}
|
|
26
|
+
- **Reviewed Snapshot Tree**: {tree field from node .agents/scripts/review-diff-fingerprint.js worktree "$R" --format json}
|
|
26
27
|
- **Overall Verdict**: {Approved / Changes Requested / Rejected} (pick exactly one; combined phrases will fail the verify gate)
|
|
27
28
|
- **Findings (AI-actionable)**: 0 blockers, 0 majors, 0 minors / **Manual validation**: 0
|
|
28
29
|
|
|
@@ -21,8 +21,9 @@
|
|
|
21
21
|
- **审查者**:{reviewer-name}
|
|
22
22
|
- **审查时间**:{timestamp}
|
|
23
23
|
- **审查范围**:{file-count and major modules}
|
|
24
|
-
- **审查基线提交**:{
|
|
25
|
-
- **审查差异指纹**:{node .agents/scripts/review-diff-fingerprint.js worktree
|
|
24
|
+
- **审查基线提交**:{本轮一次性捕获的 R 原文}(仅表示 diff base;详见 `.agents/rules/review-handshake.md`)
|
|
25
|
+
- **审查差异指纹**:{node .agents/scripts/review-diff-fingerprint.js worktree "$R" 原文}
|
|
26
|
+
- **审查快照树**:{node .agents/scripts/review-diff-fingerprint.js worktree "$R" --format json 的 tree 字段}
|
|
26
27
|
- **总体结论**:{通过 / 需要修改 / 拒绝}(恰取一个;禁止写组合短语,否则 verify gate 失败)
|
|
27
28
|
- **发现(AI 可处理)**:0 阻塞项,0 主要,0 次要 / **人工校验**:0
|
|
28
29
|
|
|
@@ -73,7 +73,7 @@ Create `.agents/workspace/active/{task-id}/{review-artifact}`.
|
|
|
73
73
|
Get the current time:
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
date "+%Y-%m-%d %H:%M:%S
|
|
76
|
+
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Set `current_step` to `technical-design-review`, refresh task metadata, and append:
|
|
@@ -27,7 +27,7 @@ Task {task-id} technical plan review completed. Verdict: approved.
|
|
|
27
27
|
|
|
28
28
|
Next step - write code:
|
|
29
29
|
- Claude Code / OpenCode: /code-task {task-ref}
|
|
30
|
-
- Gemini CLI: /
|
|
30
|
+
- Gemini CLI: /{{project}}:code-task {task-ref}
|
|
31
31
|
- Codex CLI: $code-task {task-ref}
|
|
32
32
|
|
|
33
33
|
[When manual-validation > 0, append:]
|
|
@@ -43,12 +43,12 @@ Task {task-id} technical plan review completed. Verdict: approved.
|
|
|
43
43
|
|
|
44
44
|
Next step - revise plan before coding (recommended):
|
|
45
45
|
- Claude Code / OpenCode: /plan-task {task-ref}
|
|
46
|
-
- Gemini CLI: /
|
|
46
|
+
- Gemini CLI: /{{project}}:plan-task {task-ref}
|
|
47
47
|
- Codex CLI: $plan-task {task-ref}
|
|
48
48
|
|
|
49
49
|
Or proceed directly to coding:
|
|
50
50
|
- Claude Code / OpenCode: /code-task {task-ref}
|
|
51
|
-
- Gemini CLI: /
|
|
51
|
+
- Gemini CLI: /{{project}}:code-task {task-ref}
|
|
52
52
|
- Codex CLI: $code-task {task-ref}
|
|
53
53
|
|
|
54
54
|
[When manual-validation > 0, append:]
|
|
@@ -64,7 +64,7 @@ Task {task-id} technical plan review completed. Verdict: changes requested.
|
|
|
64
64
|
|
|
65
65
|
Next step - revise technical plan:
|
|
66
66
|
- Claude Code / OpenCode: /plan-task {task-ref}
|
|
67
|
-
- Gemini CLI: /
|
|
67
|
+
- Gemini CLI: /{{project}}:plan-task {task-ref}
|
|
68
68
|
- Codex CLI: $plan-task {task-ref}
|
|
69
69
|
|
|
70
70
|
[When manual-validation > 0, append:]
|
|
@@ -80,7 +80,7 @@ Task {task-id} technical plan review completed. Verdict: rejected, redesign requ
|
|
|
80
80
|
|
|
81
81
|
Next step - redesign:
|
|
82
82
|
- Claude Code / OpenCode: /plan-task {task-ref}
|
|
83
|
-
- Gemini CLI: /
|
|
83
|
+
- Gemini CLI: /{{project}}:plan-task {task-ref}
|
|
84
84
|
- Codex CLI: $plan-task {task-ref}
|
|
85
85
|
|
|
86
86
|
[When manual-validation > 0, append:]
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
|
|
28
28
|
下一步 - 编写代码:
|
|
29
29
|
- Claude Code / OpenCode:/code-task {task-ref}
|
|
30
|
-
- Gemini CLI:/
|
|
30
|
+
- Gemini CLI:/{{project}}:code-task {task-ref}
|
|
31
31
|
- Codex CLI:$code-task {task-ref}
|
|
32
32
|
|
|
33
33
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
|
|
44
44
|
下一步 - 修订方案后编码(推荐):
|
|
45
45
|
- Claude Code / OpenCode:/plan-task {task-ref}
|
|
46
|
-
- Gemini CLI:/
|
|
46
|
+
- Gemini CLI:/{{project}}:plan-task {task-ref}
|
|
47
47
|
- Codex CLI:$plan-task {task-ref}
|
|
48
48
|
|
|
49
49
|
或直接进入编码:
|
|
50
50
|
- Claude Code / OpenCode:/code-task {task-ref}
|
|
51
|
-
- Gemini CLI:/
|
|
51
|
+
- Gemini CLI:/{{project}}:code-task {task-ref}
|
|
52
52
|
- Codex CLI:$code-task {task-ref}
|
|
53
53
|
|
|
54
54
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
下一步 - 修订技术方案:
|
|
66
66
|
- Claude Code / OpenCode:/plan-task {task-ref}
|
|
67
|
-
- Gemini CLI:/
|
|
67
|
+
- Gemini CLI:/{{project}}:plan-task {task-ref}
|
|
68
68
|
- Codex CLI:$plan-task {task-ref}
|
|
69
69
|
|
|
70
70
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
下一步 - 重新设计:
|
|
82
82
|
- Claude Code / OpenCode:/plan-task {task-ref}
|
|
83
|
-
- Gemini CLI:/
|
|
83
|
+
- Gemini CLI:/{{project}}:plan-task {task-ref}
|
|
84
84
|
- Codex CLI:$plan-task {task-ref}
|
|
85
85
|
|
|
86
86
|
[当 manual-validation > 0 时,在最后附加一行:]
|
|
@@ -11,16 +11,27 @@ description: >
|
|
|
11
11
|
|
|
12
12
|
## 1. 编译 / 类型检查
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
```bash
|
|
15
|
+
# TODO:替换为项目实际的编译命令
|
|
16
|
+
# npx tsc --noEmit (TypeScript)
|
|
17
|
+
# mvn compile (Maven)
|
|
18
|
+
# go build ./... (Go)
|
|
19
|
+
# make build (通用)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
确认没有编译错误。
|
|
15
23
|
|
|
16
24
|
## 2. 运行单元测试(按层级选择)
|
|
17
25
|
|
|
18
|
-
|
|
26
|
+
三层测试是可选的反馈速度优化;如果测试套件较小,所有层级都可以映射到同一个完整测试命令。
|
|
19
27
|
|
|
20
28
|
### smoke(目标 <5s)
|
|
21
29
|
|
|
22
30
|
```bash
|
|
23
|
-
|
|
31
|
+
# TODO:替换为项目的 smoke 子集命令
|
|
32
|
+
# npm run test:smoke (Node.js)
|
|
33
|
+
# pytest -m "not slow" (Python)
|
|
34
|
+
# go test -short ./... (Go)
|
|
24
35
|
```
|
|
25
36
|
|
|
26
37
|
适用场景:
|
|
@@ -31,7 +42,10 @@ npm run test:smoke
|
|
|
31
42
|
### core(目标 <15s)
|
|
32
43
|
|
|
33
44
|
```bash
|
|
34
|
-
|
|
45
|
+
# TODO:替换为项目的 core 子集命令
|
|
46
|
+
# npm run test:core (Node.js)
|
|
47
|
+
# pytest -m "not contract" (Python)
|
|
48
|
+
# go test ./... (Go)
|
|
35
49
|
```
|
|
36
50
|
|
|
37
51
|
适用场景:
|
|
@@ -39,18 +53,22 @@ npm run test:core
|
|
|
39
53
|
- 写 code.md / code-r{N}.md 报告前的最终验证
|
|
40
54
|
- 推送 PR 前的本地把关
|
|
41
55
|
|
|
42
|
-
### full
|
|
56
|
+
### full(完整测试套件)
|
|
43
57
|
|
|
44
58
|
```bash
|
|
45
|
-
|
|
59
|
+
# TODO:替换为项目的完整测试命令
|
|
60
|
+
# npm test (Node.js)
|
|
61
|
+
# mvn test (Maven)
|
|
62
|
+
# pytest (Python)
|
|
63
|
+
# go test ./... (Go)
|
|
46
64
|
```
|
|
47
65
|
|
|
48
66
|
适用场景:
|
|
49
67
|
- release / tag 前
|
|
50
|
-
- CI
|
|
68
|
+
- CI
|
|
51
69
|
- main 合并前的最终把关
|
|
52
70
|
|
|
53
|
-
|
|
71
|
+
如果项目尚未分层,smoke / core / full 可以全部使用完整测试命令;分层不是使用协作工作流的前置条件。
|
|
54
72
|
|
|
55
73
|
## 3. 输出结果
|
|
56
74
|
|
|
@@ -33,7 +33,7 @@ same-path external files, and later external sources win over earlier external
|
|
|
33
33
|
sources. Conflicts are recorded in the report. The script then performs:
|
|
34
34
|
- detect the template source version
|
|
35
35
|
- File registry sync (`defaults.json` → `.agents/.airc.json`)
|
|
36
|
-
- All managed files (language selection → exclude merged/ejected → placeholder rendering →
|
|
36
|
+
- All managed files (language selection → exclude merged/ejected → placeholder rendering → write; built-in guarded managed files use a source-baseline three-way comparison)
|
|
37
37
|
- Ejected files (create only on first install)
|
|
38
38
|
- `.agents/.airc.json` update (`templateVersion`, file lists)
|
|
39
39
|
|
|
@@ -47,6 +47,8 @@ The script outputs JSON to stdout. Parse and record the report.
|
|
|
47
47
|
list these in the report so users know which files were ignored because a
|
|
48
48
|
built-in template or later external source won
|
|
49
49
|
- `managed.written` / `managed.created`: updated / newly created managed files
|
|
50
|
+
- `managed.protected`: guarded managed files whose local user-only modification or deletion was preserved
|
|
51
|
+
- `managed.conflicts`: guarded managed files with unknown origin, two-sided changes, or ownership that cannot be proven during a platform switch; list each target, reason, and three-way hash
|
|
50
52
|
- `managed.removed`: deleted managed files (including old paths removed during template migrations)
|
|
51
53
|
- `managed.skippedPlatform`: managed / merged entries skipped because they belong to a different platform
|
|
52
54
|
- `managed.skippedTUI`: managed / merged entries skipped because they are owned by a built-in TUI that is disabled in `tuis` (customTUI command files under the same path prefix are preserved)
|
|
@@ -56,6 +58,8 @@ The script outputs JSON to stdout. Parse and record the report.
|
|
|
56
58
|
- `selfUpdate`: whether this is a self-update scenario
|
|
57
59
|
- `configUpdated`: whether `.agents/.airc.json` was updated
|
|
58
60
|
|
|
61
|
+
If `managed.conflicts` is non-empty, output every conflict and stop immediately before Phase B. Do not overwrite a conflicting file or advance its `files.managedBaselines` entry.
|
|
62
|
+
|
|
59
63
|
## Phase B: Process merged files (AI intelligent merge)
|
|
60
64
|
|
|
61
65
|
Process each item in the report's `merged.pending` list:
|
|
@@ -27,7 +27,7 @@ node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
|
27
27
|
脚本读取 `.agents/.airc.json`,并通过 npm 自动定位已安装的 `@fitlab-ai/agent-infra/templates/` 目录。同步前会合并 `templates.sources` 中配置的外部模板源;相同文件以内置模板为准,多个外部源之间后者覆盖前者,冲突会写入报告。然后自动完成:
|
|
28
28
|
- 检测模板源版本
|
|
29
29
|
- 同步文件注册表(`defaults.json` → `.agents/.airc.json`)
|
|
30
|
-
- 处理所有 managed 文件(语言选择 → 排除 merged/ejected → 占位符渲染 →
|
|
30
|
+
- 处理所有 managed 文件(语言选择 → 排除 merged/ejected → 占位符渲染 → 写入;内建 guarded managed 文件使用来源基线三方比较)
|
|
31
31
|
- 处理 ejected 文件(仅首次安装时创建)
|
|
32
32
|
- 更新 `.agents/.airc.json`(`templateVersion`、文件列表)
|
|
33
33
|
|
|
@@ -39,6 +39,8 @@ node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
|
39
39
|
- `templateRoot`:模板文件根目录绝对路径
|
|
40
40
|
- `templateSources.conflicts`:外部模板源冲突列表;报告中必须显式展示,说明哪些文件因内置模板或后续外部源获胜而被忽略
|
|
41
41
|
- `managed.written` / `managed.created`:已更新/新建的 managed 文件
|
|
42
|
+
- `managed.protected`:检测到用户单边修改或删除、因此保留本地状态的 guarded managed 文件
|
|
43
|
+
- `managed.conflicts`:来源未知、双边修改或平台切换时无法证明官方所有权的 guarded managed 冲突;必须逐项展示 target、reason 与三方哈希
|
|
42
44
|
- `managed.removed`:被删除的 managed 文件(包括模板迁移时移除的旧路径)
|
|
43
45
|
- `managed.skippedPlatform`:因归属其他平台而被跳过的 managed / merged 条目
|
|
44
46
|
- `managed.skippedTUI`:因 `tuis` 中未启用对应内建 TUI 而被跳过的 managed / merged 条目(落在同一路径前缀下的 customTUI 命令文件会被保留)
|
|
@@ -48,6 +50,8 @@ node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
|
48
50
|
- `selfUpdate`:是否为自更新模式
|
|
49
51
|
- `configUpdated`:`.agents/.airc.json` 是否已更新
|
|
50
52
|
|
|
53
|
+
如果 `managed.conflicts` 非空,输出全部冲突并立即停止,不进入阶段 B;禁止覆盖冲突文件或推进其 `files.managedBaselines`。
|
|
54
|
+
|
|
51
55
|
## 阶段 B:处理 merged 文件(AI 智能合并)
|
|
52
56
|
|
|
53
57
|
根据报告中 `merged.pending` 列表,逐个文件处理。对于每个条目:
|
|
@@ -133,7 +137,7 @@ node .agents/skills/update-agent-infra/scripts/sync-templates.js
|
|
|
133
137
|
```
|
|
134
138
|
下一步 - 提交代码:
|
|
135
139
|
- Claude Code / OpenCode:/commit
|
|
136
|
-
- Gemini CLI:/
|
|
140
|
+
- Gemini CLI:/{{project}}:commit
|
|
137
141
|
- Codex CLI:$commit
|
|
138
142
|
```
|
|
139
143
|
|