@tea-agent/loop-agent 0.13.0 → 0.14.0

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.
Files changed (270) hide show
  1. package/AGENTS.md +157 -157
  2. package/CHANGELOG.md +73 -301
  3. package/README.md +338 -334
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/commands/cursor-prompt.js +6 -6
  7. package/dist/commands/init.js +505 -505
  8. package/dist/commands/loop-benchmark.js +11 -11
  9. package/dist/commands/pi-reuse-benchmark.js +16 -16
  10. package/dist/executors/pi-event-serializer.js +33 -11
  11. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  12. package/dist/task/runtime.js +27 -27
  13. package/dist/worker/observe/spec-evidence.js +19 -10
  14. package/dist/worker/observe/static/api.js +46 -46
  15. package/dist/worker/observe/static/app.js +151 -150
  16. package/dist/worker/observe/static/constants.js +156 -148
  17. package/dist/worker/observe/static/copy.js +67 -67
  18. package/dist/worker/observe/static/dag-helpers.js +201 -172
  19. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  20. package/dist/worker/observe/static/dag-layout.js +83 -83
  21. package/dist/worker/observe/static/dag-model.js +72 -72
  22. package/dist/worker/observe/static/dom.js +122 -122
  23. package/dist/worker/observe/static/format-pool.d.ts +71 -0
  24. package/dist/worker/observe/static/format-pool.js +134 -67
  25. package/dist/worker/observe/static/format.js +317 -292
  26. package/dist/worker/observe/static/index.html +350 -308
  27. package/dist/worker/observe/static/kpi.js +100 -94
  28. package/dist/worker/observe/static/markdown-render.js +124 -0
  29. package/dist/worker/observe/static/relations.js +133 -133
  30. package/dist/worker/observe/static/router.js +93 -93
  31. package/dist/worker/observe/static/run-processing.js +148 -148
  32. package/dist/worker/observe/static/shell-chrome.js +74 -68
  33. package/dist/worker/observe/static/state.js +273 -267
  34. package/dist/worker/observe/static/styles.css +2504 -1902
  35. package/dist/worker/observe/static/views/batch.js +227 -227
  36. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  37. package/dist/worker/observe/static/views/dag-inspector.js +530 -627
  38. package/dist/worker/observe/static/views/dag.js +371 -371
  39. package/dist/worker/observe/static/views/dashboard.js +86 -100
  40. package/dist/worker/observe/static/views/failures.js +143 -143
  41. package/dist/worker/observe/static/views/feature.js +492 -492
  42. package/dist/worker/observe/static/views/pool.js +708 -350
  43. package/dist/worker/observe/static/views/run.js +453 -453
  44. package/dist/worker/observe/static/views/session-timeline.js +771 -219
  45. package/dist/worker/observe/static/views/shell.js +7 -7
  46. package/dist/worker/observe/static/views/task.js +314 -314
  47. package/dist/worker/observe/static/views/timeline.js +163 -163
  48. package/dist/workflows/dag/canvas-observer.js +275 -275
  49. package/docs/README.md +105 -104
  50. package/docs/agent-dag-recovery-playbook.md +195 -195
  51. package/docs/agent-dag-runner.md +67 -67
  52. package/docs/architecture/README.md +26 -26
  53. package/docs/architecture/dag-execution.md +140 -140
  54. package/docs/architecture/evolution.md +54 -54
  55. package/docs/architecture/facts-and-state.md +71 -71
  56. package/docs/architecture/runtime-boundaries.md +191 -191
  57. package/docs/architecture/system-overview.md +93 -93
  58. package/docs/architecture/worker-and-feature.md +85 -85
  59. package/docs/cursor-prompt-sidecar.md +36 -36
  60. package/docs/decisions/README.md +18 -18
  61. package/docs/design/README.md +167 -167
  62. package/docs/development-principles.md +73 -73
  63. package/docs/exec-plans/README.md +6 -6
  64. package/docs/exec-plans/active/README.md +2 -1
  65. package/docs/exec-plans/completed/README.md +105 -104
  66. package/docs/feature-workflow.md +414 -414
  67. package/docs/harness-methodology-debugging.md +153 -153
  68. package/docs/harness-methodology-tdd.md +130 -130
  69. package/docs/harness-methodology-verification.md +27 -27
  70. package/docs/init-surface.manifest.json +307 -307
  71. package/docs/loop-agent-harness.md +142 -142
  72. package/docs/production-readiness.md +96 -96
  73. package/docs/progress/README.md +59 -58
  74. package/docs/reports/README.md +123 -119
  75. package/docs/skills/README.md +7 -7
  76. package/docs/skills/vetted-skill-registry.md +29 -29
  77. package/docs/templates/adr.md +60 -60
  78. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  79. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  80. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  81. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  82. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  83. package/docs/templates/agent-dag-report.schema.json +473 -473
  84. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  85. package/docs/templates/agent-dag.base.json +190 -190
  86. package/docs/templates/agent-dag.final-verification.json +185 -185
  87. package/docs/templates/agent-dag.schema.json +411 -411
  88. package/docs/templates/agent-dag.supervised-implementation.json +620 -620
  89. package/docs/templates/backend-test-analysis.schema.json +44 -44
  90. package/docs/templates/backend-test-case-manifest.schema.json +190 -190
  91. package/docs/templates/backend-test-dag.classify.prompt.md +75 -75
  92. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +204 -204
  93. package/docs/templates/backend-test-dag.json +559 -559
  94. package/docs/templates/backend-test-dag.retrospect.prompt.md +139 -139
  95. package/docs/templates/backend-test-dag.review-cases.prompt.md +83 -83
  96. package/docs/templates/backend-test-execution.schema.json +133 -133
  97. package/docs/templates/backend-test-result.schema.json +99 -99
  98. package/docs/templates/exec-plan.md +64 -64
  99. package/docs/templates/feature-spec.md +53 -53
  100. package/docs/templates/frontend-design-contract.md +42 -42
  101. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  102. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  103. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  104. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  105. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  106. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  107. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  108. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  109. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  110. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  111. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  112. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  113. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  114. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  115. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  116. package/docs/templates/frontend-eval/metrics.md +138 -138
  117. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  118. package/docs/templates/frontend-implementation-contract.schema.json +27 -27
  119. package/docs/templates/frontend-task-constraints.md +35 -35
  120. package/docs/templates/frontend-task-requirement.md +70 -70
  121. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -5
  122. package/docs/templates/frontend-test-dag.json +23 -23
  123. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -3
  124. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -3
  125. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -3
  126. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -3
  127. package/docs/templates/harness.schema.json +221 -221
  128. package/docs/templates/hybrid-dag.json +188 -188
  129. package/docs/templates/init-evolution-review.md +35 -35
  130. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  131. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  132. package/docs/templates/knowledge-sync-dag.json +178 -178
  133. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  134. package/docs/templates/product-line/AGENTS.md +8 -8
  135. package/docs/templates/product-line/README.md +9 -9
  136. package/docs/templates/product-line/acceptance.yaml +14 -14
  137. package/docs/templates/product-line/closeout.yaml +9 -9
  138. package/docs/templates/product-line/design.md +13 -13
  139. package/docs/templates/product-line/links.md +10 -10
  140. package/docs/templates/product-line/requirement.md +17 -17
  141. package/docs/templates/product-line/task-graph.yaml +15 -15
  142. package/docs/templates/product-line/task.yaml +64 -64
  143. package/docs/templates/product-line/test-plan.md +7 -7
  144. package/docs/templates/production-readiness-checklist.md +57 -57
  145. package/docs/templates/progress-log.md +17 -17
  146. package/docs/templates/project-start-checklist.md +9 -9
  147. package/docs/templates/qa-report.md +48 -48
  148. package/docs/templates/sprint-contract.md +29 -29
  149. package/docs/templates/worker-dogfood-evidence.md +80 -80
  150. package/docs/templates/worker-dogfood-setup.md +68 -68
  151. package/docs/verification-matrix.md +70 -70
  152. package/examples/decision-gate-agent-dag.json +173 -173
  153. package/examples/example-dag.json +46 -46
  154. package/examples/hybrid-loop-agent-dag.json +188 -188
  155. package/harness.json +66 -66
  156. package/package.json +88 -52
  157. package/scripts/check-product-line-docs.sh +29 -29
  158. package/scripts/check-task-pool-root.sh +32 -32
  159. package/scripts/kb-bootstrap-init-skeleton.sh +240 -240
  160. package/scripts/kb-graph-incremental-prepare.mjs +386 -386
  161. package/scripts/kb-graph-incremental-prepare.sh +5 -5
  162. package/scripts/kb-graph-materialize.mjs +105 -105
  163. package/scripts/kb-graph-materialize.sh +4 -4
  164. package/scripts/kb-graph-promote.mjs +164 -164
  165. package/scripts/kb-graph-promote.sh +4 -4
  166. package/scripts/kb-query.mjs +554 -554
  167. package/scripts/kb-query.sh +5 -5
  168. package/skills/agent-worker/SKILL.md +39 -39
  169. package/skills/agent-worker/references/agent-worker-operator.md +60 -60
  170. package/skills/ai-engineering-context/SKILL.md +48 -48
  171. package/skills/analyze-product-dependencies/SKILL.md +67 -67
  172. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
  173. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
  174. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
  175. package/skills/analyze-product-dependencies/references/example.md +76 -76
  176. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
  177. package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
  178. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
  179. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
  180. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
  181. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
  182. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
  183. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
  184. package/skills/analyze-product-requirements/SKILL.md +90 -90
  185. package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
  186. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
  187. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
  188. package/skills/analyze-product-requirements/references/example.md +86 -86
  189. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
  190. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
  191. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
  192. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
  193. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
  194. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
  195. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
  196. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
  197. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
  198. package/skills/browser-tools/SKILL.md +196 -196
  199. package/skills/browser-tools/browser-content.js +103 -103
  200. package/skills/browser-tools/browser-cookies.js +35 -35
  201. package/skills/browser-tools/browser-eval.js +53 -53
  202. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  203. package/skills/browser-tools/browser-nav.js +44 -44
  204. package/skills/browser-tools/browser-pick.js +162 -162
  205. package/skills/browser-tools/browser-screenshot.js +34 -34
  206. package/skills/browser-tools/browser-start.js +86 -86
  207. package/skills/browser-tools/package-lock.json +2556 -2556
  208. package/skills/browser-tools/package.json +19 -19
  209. package/skills/code-review-core/SKILL.md +20 -20
  210. package/skills/codebase-scout/SKILL.md +19 -19
  211. package/skills/frontend-design-review/SKILL.md +66 -66
  212. package/skills/frontend-design-review/references/review-checklist.md +58 -58
  213. package/skills/frontend-implementation/SKILL.md +49 -49
  214. package/skills/frontend-implementation/references/code-standards.md +32 -32
  215. package/skills/frontend-implementation/references/design-spec.md +46 -46
  216. package/skills/frontend-implementation/references/node-contracts.md +27 -27
  217. package/skills/frontend-review/SKILL.md +59 -59
  218. package/skills/frontend-review/references/review-findings.md +47 -47
  219. package/skills/frontend-verification/SKILL.md +53 -53
  220. package/skills/frontend-verification/references/verification-checklist.md +68 -68
  221. package/skills/grill-me/SKILL.md +10 -10
  222. package/skills/grill-with-docs/SKILL.md +88 -88
  223. package/skills/grill-with-docs/adr-format.md +47 -47
  224. package/skills/grill-with-docs/context-format.md +60 -60
  225. package/skills/init-capability-evolution/SKILL.md +70 -70
  226. package/skills/loop-agent/SKILL.md +151 -151
  227. package/skills/loop-agent/references/README.md +67 -67
  228. package/skills/loop-agent/references/command-reference.md +527 -527
  229. package/skills/loop-agent/references/docs-converge.md +126 -126
  230. package/skills/loop-agent/references/harness-policy.md +263 -263
  231. package/skills/loop-agent/references/hybrid-dag.md +243 -243
  232. package/skills/loop-agent/references/learned/README.md +21 -21
  233. package/skills/loop-agent/references/long-running-loop.md +57 -57
  234. package/skills/loop-agent/references/model-routing.md +36 -36
  235. package/skills/loop-agent/references/multi-worktree.md +54 -54
  236. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  237. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  238. package/skills/loop-agent/references/pi-prompt.md +23 -23
  239. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  240. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  241. package/skills/loop-agent/references/task-workflow.md +89 -89
  242. package/skills/loop-agent/references/verification-and-failure-handling.md +141 -141
  243. package/skills/playwright-cli/SKILL.md +420 -420
  244. package/skills/playwright-cli/references/element-attributes.md +23 -23
  245. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  246. package/skills/playwright-cli/references/request-mocking.md +87 -87
  247. package/skills/playwright-cli/references/running-code.md +241 -241
  248. package/skills/playwright-cli/references/session-management.md +225 -225
  249. package/skills/playwright-cli/references/storage-state.md +275 -275
  250. package/skills/playwright-cli/references/test-generation.md +433 -433
  251. package/skills/playwright-cli/references/tracing.md +139 -139
  252. package/skills/playwright-cli/references/video-recording.md +143 -143
  253. package/skills/playwright-cli-case-generator/SKILL.md +74 -74
  254. package/skills/requesting-code-review/SKILL.md +101 -101
  255. package/skills/requesting-code-review/code-reviewer.md +168 -168
  256. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  257. package/skills/systematic-debugging/SKILL.md +296 -296
  258. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  259. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  260. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  261. package/skills/systematic-debugging/find-polluter.sh +63 -63
  262. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  263. package/skills/systematic-debugging/test-academic.md +14 -14
  264. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  265. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  266. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  267. package/skills/test-driven-development/SKILL.md +20 -20
  268. package/skills/using-git-worktrees/SKILL.md +215 -215
  269. package/skills/verification-before-completion/SKILL.md +154 -154
  270. package/skills/webapp-testing/SKILL.md +19 -19
@@ -1,93 +1,93 @@
1
- # 系统全景
2
-
3
- 本页用一张全景图说明 loop-agent、agent-worker、治理层与外部系统的关系。依赖方向、import 边界与 governance hook 是契约级事实,权威源是 `runtime-boundaries.md`(本页只交叉引用,不复制)。
4
-
5
- ## 两个 CLI 二进制
6
-
7
- 发布包 `@tea-agent/loop-agent` 提供两个入口(见 `package.json` `bin`):
8
-
9
- | 二进制 | 入口 | 角色 |
10
- | --- | --- | --- |
11
- | `loop-agent` | `bin/loop-agent.js` → `src/cli.ts` | 仓库级 AI coding 任务运行时与治理控制器 |
12
- | `agent-worker` | `bin/agent-worker.js` → `src/worker/cli.ts` | 产品线 TaskSpec / Feature / Task Pool / Observe 外层适配 |
13
-
14
- 两个二进制是独立进程,不共享 in-process runtime。`agent-worker` 真正执行 DAG 时通过已发布的 `loop-agent` 子进程调用(详见 `worker-and-feature.md`)。
15
-
16
- ## 分层概览(交叉引用)
17
-
18
- 完整分层图、各层职责、允许/禁止的 import 方向见 `runtime-boundaries.md` §分层概览 与 §各层职责。一句话摘要:
19
-
20
- ```text
21
- Skill layer .agents/skills/loop-agent、.agents/skills/agent-worker(Markdown,非 TS import)
22
- CLI layer src/cli/ — argv 解析、调用 application/handler、格式化输出
23
- Application src/application/ — typed use-case(validate/run/generate DAG 等)
24
- Workflow runtime src/workflows/ — DAG / Dynamic / Loop 核心执行规则
25
- Executors src/executors/ — Pi / shell / static 受治理外部工具适配
26
- Sidecars src/sidecars/cursor-prompt — 显式手工 one-shot;不得被 workflow 自动依赖
27
- Worker adapter src/worker/ — 产品线适配 + Observe;子进程调用已发布 loop-agent
28
- Infrastructure src/infrastructure/ — .harness 副作用、run lifecycle、原子写入
29
- Governance scripts/check-*.sh、src/governance/ — 防漂移机器校验
30
- ```
31
-
32
- ## 两条入口路径
33
-
34
- ### 直接任务路径
35
-
36
- ```text
37
- 人类 / 主 agent
38
- │ 写任务源与执行约束(.harness/tasks/<taskId>/source)
39
-
40
- loop-agent(runtime + 治理控制器)
41
- │ dag run-task / validate / run-dag / report / doctor / reconcile-run
42
-
43
- workflow runtime(调度 Pi / shell / static 节点)
44
- │ 证据落入 .harness/dag-runs/{active,paused,completed}/<runId>/
45
- └─ report / doctor / promote / closeout 读取并投影证据
46
- ```
47
-
48
- ### 产品线 Feature 路径
49
-
50
- ```text
51
- 人类 / 外部调度器
52
- → agent-worker(TaskSpec / Feature / Task Pool)
53
- → 冻结 controller identity
54
- → spawn 已发布 loop-agent 子进程
55
- → 同一 DAG runtime 与 executor registry
56
- → DAG facts + Task Pool records
57
- → Feature review / morning report / Observe(派生只读视图)
58
- ```
59
-
60
- `agent-worker` 位于核心 runtime 的**上游调用侧**,不是 DAG 执行完成后的必经下游。Observe 可以在任一路径后读取现有事实,但不会改变执行结果。
61
-
62
- ## 外部边界
63
-
64
- - npm 发布包:`@tea-agent/loop-agent`,包含两个 bin 与静态能力资料。
65
- - 目标仓库:`loop-agent init` 投影语言无关治理资料;源码仓库专用架构文档只随包可读,不默认投影。
66
- - 本地文件系统:`.harness/` 保存运行态事实;Git 工作树保存代码、治理文档与长期交接资料。
67
- - 远程 Git/PR/CI、云 Worker 与云 Task Pool 当前不是核心 runtime 的已实现内置边界,见 `evolution.md`。
68
-
69
- ## 治理层入口
70
-
71
- 治理检查是机器校验,不是文档约定。主入口:
72
-
73
- - `scripts/check-repo.sh` — 聚合入口,CI / in-flight DAG 均调它。
74
- - 子脚本:`scripts/check-architecture-boundaries.sh`(import 边界)、`scripts/check-command-registry-drift.sh`(command registry)、`scripts/check-skill-entry.sh`(公共 skill entry)、`scripts/check-doc-index.sh` / `scripts/check-doc-links.sh`(文档链接)、`scripts/check-init-surface.sh`(package/init surface 契约)、`scripts/check-init-evolution-needed.sh`(高影响变更需报告)。
75
- - `src/governance/**` — 治理逻辑与相关 Vitest。
76
- - `scripts/self-host-canary.mjs` — 源码仓库的 deterministic candidate takeover 证据入口;**不**属于发布 package surface。
77
-
78
- 完整的 governance hook 表(哪个脚本检查什么、失败条件)见 `runtime-boundaries.md` §Governance 钩子。
79
-
80
- ## 受治理 Agent runtime = Pi-only
81
-
82
- 自 0.10.0 起受治理 Agent runtime 硬切为 Pi-only(ADR 0001)。DAG 中 `dagNodeExecutorSchema = z.enum(["pi","shell","static"])`;`executor: "cursor"` 会抛 `CURSOR_DAG_EXECUTOR_REMOVED_ERROR`。`cursor-prompt` 仅保留为显式手工 one-shot sidecar,不进入 Loop auto-execute 或 Delegate 自动写入。详见 `dag-execution.md` 与 `runtime-boundaries.md` §Executors / §Sidecars。
83
-
84
- ## 运行态 vs 治理资料 vs 用法文档
85
-
86
- | 位置 | 内容 | 权威性质 |
87
- | --- | --- | --- |
88
- | `.harness/` | 任务、DAG run、one-shot run、Task Pool、live state | 运行态事实(canonical + derived) |
89
- | 根目录 `ai_workspace/loop-agent/` | 原则、边界、计划、报告、模板 | 治理权威 |
90
- | `website/docs/` | 使用者/贡献者导读与操作说明 | 用法双树 |
91
- | `.agents/skills/` | agent 可加载的入口与 reference | 运行时可加载 |
92
-
93
- `.harness/` 内部哪些可写、哪些只读、哪些是 derived,详见 `facts-and-state.md`。
1
+ # 系统全景
2
+
3
+ 本页用一张全景图说明 loop-agent、agent-worker、治理层与外部系统的关系。依赖方向、import 边界与 governance hook 是契约级事实,权威源是 `runtime-boundaries.md`(本页只交叉引用,不复制)。
4
+
5
+ ## 两个 CLI 二进制
6
+
7
+ 发布包 `@tea-agent/loop-agent` 提供两个入口(见 `package.json` `bin`):
8
+
9
+ | 二进制 | 入口 | 角色 |
10
+ | --- | --- | --- |
11
+ | `loop-agent` | `bin/loop-agent.js` → `src/cli.ts` | 仓库级 AI coding 任务运行时与治理控制器 |
12
+ | `agent-worker` | `bin/agent-worker.js` → `src/worker/cli.ts` | 产品线 TaskSpec / Feature / Task Pool / Observe 外层适配 |
13
+
14
+ 两个二进制是独立进程,不共享 in-process runtime。`agent-worker` 真正执行 DAG 时通过已发布的 `loop-agent` 子进程调用(详见 `worker-and-feature.md`)。
15
+
16
+ ## 分层概览(交叉引用)
17
+
18
+ 完整分层图、各层职责、允许/禁止的 import 方向见 `runtime-boundaries.md` §分层概览 与 §各层职责。一句话摘要:
19
+
20
+ ```text
21
+ Skill layer .agents/skills/loop-agent、.agents/skills/agent-worker(Markdown,非 TS import)
22
+ CLI layer src/cli/ — argv 解析、调用 application/handler、格式化输出
23
+ Application src/application/ — typed use-case(validate/run/generate DAG 等)
24
+ Workflow runtime src/workflows/ — DAG / Dynamic / Loop 核心执行规则
25
+ Executors src/executors/ — Pi / shell / static 受治理外部工具适配
26
+ Sidecars src/sidecars/cursor-prompt — 显式手工 one-shot;不得被 workflow 自动依赖
27
+ Worker adapter src/worker/ — 产品线适配 + Observe;子进程调用已发布 loop-agent
28
+ Infrastructure src/infrastructure/ — .harness 副作用、run lifecycle、原子写入
29
+ Governance scripts/check-*.sh、src/governance/ — 防漂移机器校验
30
+ ```
31
+
32
+ ## 两条入口路径
33
+
34
+ ### 直接任务路径
35
+
36
+ ```text
37
+ 人类 / 主 agent
38
+ │ 写任务源与执行约束(.harness/tasks/<taskId>/source)
39
+
40
+ loop-agent(runtime + 治理控制器)
41
+ │ dag run-task / validate / run-dag / report / doctor / reconcile-run
42
+
43
+ workflow runtime(调度 Pi / shell / static 节点)
44
+ │ 证据落入 .harness/dag-runs/{active,paused,completed}/<runId>/
45
+ └─ report / doctor / promote / closeout 读取并投影证据
46
+ ```
47
+
48
+ ### 产品线 Feature 路径
49
+
50
+ ```text
51
+ 人类 / 外部调度器
52
+ → agent-worker(TaskSpec / Feature / Task Pool)
53
+ → 冻结 controller identity
54
+ → spawn 已发布 loop-agent 子进程
55
+ → 同一 DAG runtime 与 executor registry
56
+ → DAG facts + Task Pool records
57
+ → Feature review / morning report / Observe(派生只读视图)
58
+ ```
59
+
60
+ `agent-worker` 位于核心 runtime 的**上游调用侧**,不是 DAG 执行完成后的必经下游。Observe 可以在任一路径后读取现有事实,但不会改变执行结果。
61
+
62
+ ## 外部边界
63
+
64
+ - npm 发布包:`@tea-agent/loop-agent`,包含两个 bin 与静态能力资料。
65
+ - 目标仓库:`loop-agent init` 投影语言无关治理资料;源码仓库专用架构文档只随包可读,不默认投影。
66
+ - 本地文件系统:`.harness/` 保存运行态事实;Git 工作树保存代码、治理文档与长期交接资料。
67
+ - 远程 Git/PR/CI、云 Worker 与云 Task Pool 当前不是核心 runtime 的已实现内置边界,见 `evolution.md`。
68
+
69
+ ## 治理层入口
70
+
71
+ 治理检查是机器校验,不是文档约定。主入口:
72
+
73
+ - `scripts/check-repo.sh` — 聚合入口,CI / in-flight DAG 均调它。
74
+ - 子脚本:`scripts/check-architecture-boundaries.sh`(import 边界)、`scripts/check-command-registry-drift.sh`(command registry)、`scripts/check-skill-entry.sh`(公共 skill entry)、`scripts/check-doc-index.sh` / `scripts/check-doc-links.sh`(文档链接)、`scripts/check-init-surface.sh`(package/init surface 契约)、`scripts/check-init-evolution-needed.sh`(高影响变更需报告)。
75
+ - `src/governance/**` — 治理逻辑与相关 Vitest。
76
+ - `scripts/self-host-canary.mjs` — 源码仓库的 deterministic candidate takeover 证据入口;**不**属于发布 package surface。
77
+
78
+ 完整的 governance hook 表(哪个脚本检查什么、失败条件)见 `runtime-boundaries.md` §Governance 钩子。
79
+
80
+ ## 受治理 Agent runtime = Pi-only
81
+
82
+ 自 0.10.0 起受治理 Agent runtime 硬切为 Pi-only(ADR 0001)。DAG 中 `dagNodeExecutorSchema = z.enum(["pi","shell","static"])`;`executor: "cursor"` 会抛 `CURSOR_DAG_EXECUTOR_REMOVED_ERROR`。`cursor-prompt` 仅保留为显式手工 one-shot sidecar,不进入 Loop auto-execute 或 Delegate 自动写入。详见 `dag-execution.md` 与 `runtime-boundaries.md` §Executors / §Sidecars。
83
+
84
+ ## 运行态 vs 治理资料 vs 用法文档
85
+
86
+ | 位置 | 内容 | 权威性质 |
87
+ | --- | --- | --- |
88
+ | `.harness/` | 任务、DAG run、one-shot run、Task Pool、live state | 运行态事实(canonical + derived) |
89
+ | 根目录 `ai_workspace/loop-agent/` | 原则、边界、计划、报告、模板 | 治理权威 |
90
+ | `website/docs/` | 使用者/贡献者导读与操作说明 | 用法双树 |
91
+ | `.agents/skills/` | agent 可加载的入口与 reference | 运行时可加载 |
92
+
93
+ `.harness/` 内部哪些可写、哪些只读、哪些是 derived,详见 `facts-and-state.md`。
@@ -1,85 +1,85 @@
1
- # Worker 与 Feature 架构
2
-
3
- 本页说明 `agent-worker` 如何通过冻结的已发布 `loop-agent` 子进程执行 DAG(不 in-process import runtime kernel),以及其上的产品线 read model:TaskSpec、Task Pool、Feature 与 Observe。边界契约权威是 `runtime-boundaries.md` §Worker adapter。
4
-
5
- ## 核心事实:子进程,非 in-process
6
-
7
- `agent-worker` 真正执行 DAG 时通过 Node `child_process.spawn` 启动**已发布**的 `loop-agent`,**不** in-process import runtime kernel:
8
-
9
- | 事实 | 源码入口 |
10
- | --- | --- |
11
- | 客户端 | `src/worker/loop-agent/loop-agent-client.ts` `LoopAgentClient` |
12
- | 执行入口 | `LoopAgentClient.run(args, options)` |
13
- | spawn 实现 | `spawnCommand(...)` → `spawn(input.command, input.args, { cwd, env, shell: false, stdio: ["ignore", "pipe", "pipe"] })` |
14
- | 治理禁止 | `scripts/check-architecture-boundaries.sh` 禁止 `src/worker/**` → `src/{cli,commands,application}/**`,transitional allowlist 为空 |
15
-
16
- `shell: false` + 绝对 launch spec(见下)意味着 Worker 不走 PATH 重新解析,也不在当前进程内加载 CLI command 实现。
17
-
18
- ## controller identity(冻结的已发布 controller)
19
-
20
- 每次写入型 Feature/batch/Task/final verification 在任何目标仓库或 Task Pool 状态写入前,`LoopAgentClient` 解析并冻结 schemaVersion 1 identity(`ControllerIdentityV1`,定义在 `src/shared/package-metadata.ts`):
21
-
22
- | 字段 | 含义 |
23
- | --- | --- |
24
- | `schemaVersion` | 固定 `1` |
25
- | `packageName` | 必须为 `@tea-agent/loop-agent` |
26
- | `binName` / `requested` / `entry` / `realEntry` | 入口解析链(realEntry 经 `realpathSync`) |
27
- | `launch.command` / `launch.argsPrefix` | 直接可执行的绝对 launch spec |
28
- | `binarySha256` | `actualEntry` 二进制 hash |
29
- | `packageVersion` | `package.json` version |
30
- | `packageFingerprint` | 覆盖 `package.json`、`bin/**`、`dist/**`、`.agents/skills/**` 的 portable fingerprint(`computePackageFingerprint`) |
31
-
32
- 关键方法:
33
-
34
- - `resolveIdentity()`(`loop-agent-client.ts`):首次解析并冻结 identity;`this._identityResolved = true`。
35
- - `assertControllerIdentityUnchangedBeforeSpawn(identity)`(`loop-agent-client.ts`):**每次 spawn 前**重验,漂移即 throw(`run` 与 `runCommand` 路径都调)。
36
- - `getIdentity()` / `observeReportedVersion(reportedVersion)`:读取/校验子进程回报的版本须与 `packageVersion` 一致。
37
-
38
- CLI 层(`src/worker/cli.ts`)在写入型命令传 `resolveIdentity: true` 构造 `LoopAgentClient`,并支持 `--expected-controller-version` / `--expected-controller-fingerprint` fail-fast(见 `src/worker/preflight.ts`)。
39
-
40
- controller identity 与 DAG skill snapshot 是两个不同冻结层(前者跨 Worker/Task Pool/Feature 生命周期,后者单个 DAG run),见 `runtime-boundaries.md` §版本化自举边界。
41
-
42
- ## 独立 CLI
43
-
44
- `agent-worker` 是独立 CLI(`bin/agent-worker.js` → `src/worker/cli.ts`),有自己的命令面(`task`、`batch`、`feature`、`report`、`observe` 等)。它**不是**第二套 executor 或 DAG kernel;它编排产品线 Task 并把执行委托给 `loop-agent` 子进程。
45
-
46
- ## 产品线 read model
47
-
48
- ### TaskSpec
49
-
50
- - schema/validate:`src/worker/task-spec/{schema,validate}.ts`。
51
- - 校验验收条件、依赖、验证命令;`agent-worker task validate-feature` 等用之。
52
-
53
- ### Task Pool
54
-
55
- - 唯一 runtime root:`src/worker/pool/run-store.ts`
56
- `TASK_POOL_RELATIVE_ROOT = ".harness/task-pool"`(ADR 0002)。
57
- - 此前的顶层 Task Pool 位置不读取、不迁移、不合并、不重映射。
58
- - **Feature-scoped identity(ADR 0004)**:canonical Task 身份为复合键 `TaskPoolTaskRef = { featureId, taskId }`。`taskId` 仅 Feature 内唯一;同仓库多 Feature 可安全共用同名 Task ID。
59
- - **State schema v2**:新 state 必须 `schemaVersion: 2` 且显式携带 `featureId` / `taskId`;canonical 路径为 `.harness/task-pool/states/<featureId>/<taskId>.json`。
60
- - **Consumers**:runner Ready Queue、retry、Follow-up、Feature review、Delivery / Closeout、morning report / metrics 均按 Feature 作用域读写,不得把裸 `taskId` 当作仓库全局唯一键。
61
- - **Operator**:`pool doctor` 只读 inventory;`pool migrate-state` 默认 dry-run,apply 需 `--owner` + `--reason`;legacy v1 写入路径 fail-closed。
62
- - batch / retry / morning report 等都基于此根。
63
-
64
- ### Feature(M2 交付闭环)
65
-
66
- - review/run/approve-followup/delivery/closeout/verify-final:`src/worker/feature/{review,run}.ts` 及相关。
67
- - Follow-up:`src/worker/` 下 draft-followup + approve-followup 事务,覆盖全部失败分类(可执行/Spec/Risk/Human/EnvFailure)。
68
- - Delivery / Closeout:clean Delivery HEAD 上生成 canonical QA/最终验证证据、Delivery Package、Acceptance Coverage、PR 草稿;Closeout 默认预览,显式 `--apply --owner` 才原子写回。
69
- - 权威证据:`CHANGELOG.md [0.10.0]`、`ai_workspace/loop-agent/reports/2026-07-12-m2-completion-audit.md`。
70
-
71
- ### Observe(只读 read model)
72
-
73
- - 模块:`src/worker/observe/`、`src/worker/observability/{read-model,event-store}.ts`。
74
- - 全局快照:`buildGlobalSnapshot({ repoRoot })`(`src/worker/observability/read-model.ts`),是 **derived** 视图,消费 `.harness/` 与 Task Pool 事实,**不**改变执行成败。
75
- - Observe 是本地只读暖白控制台;snapshot 投影失败返回安全错误摘要而非全零健康状态(见 `CHANGELOG.md [0.9.0]`)。
76
-
77
- ## 版本化自举的 deterministic canary
78
-
79
- 源码仓库的 deterministic candidate canary(`scripts/self-host-canary.mjs`,`npm run self-host:canary -- --deterministic`)是只读/确定性接棒证据:候选 tarball 安装到隔离 slot,两个 bin 从包内绝对入口启动,PATH 中放置 controller fallback trap,只执行 Feature dry-run 与 static/shell DAG。它必须证明 `piExecutorObserved=false` / `modelExecutorObserved=false` / `featureExecutedTasks=[]`,因此**不是** live Pi takeover。该脚本**不**属于发布 package surface(`package.json` `files` 不含它)。
80
-
81
- ## 不变式
82
-
83
- - Worker 不得 in-process import `src/cli/**`、`src/commands/**` 或 `src/application/**`(governance 机器校验)。
84
- - Worker 不实现 executor、scheduler、prompt 或 write guard。
85
- - `agent-worker` skill(`.agents/skills/agent-worker/`)不加入 `DEFAULT_SKILLS_BY_ROLE`;DAG leaf node 不得递归启动 `agent-worker`(`runtime-boundaries.md` §Skill layer)。
1
+ # Worker 与 Feature 架构
2
+
3
+ 本页说明 `agent-worker` 如何通过冻结的已发布 `loop-agent` 子进程执行 DAG(不 in-process import runtime kernel),以及其上的产品线 read model:TaskSpec、Task Pool、Feature 与 Observe。边界契约权威是 `runtime-boundaries.md` §Worker adapter。
4
+
5
+ ## 核心事实:子进程,非 in-process
6
+
7
+ `agent-worker` 真正执行 DAG 时通过 Node `child_process.spawn` 启动**已发布**的 `loop-agent`,**不** in-process import runtime kernel:
8
+
9
+ | 事实 | 源码入口 |
10
+ | --- | --- |
11
+ | 客户端 | `src/worker/loop-agent/loop-agent-client.ts` `LoopAgentClient` |
12
+ | 执行入口 | `LoopAgentClient.run(args, options)` |
13
+ | spawn 实现 | `spawnCommand(...)` → `spawn(input.command, input.args, { cwd, env, shell: false, stdio: ["ignore", "pipe", "pipe"] })` |
14
+ | 治理禁止 | `scripts/check-architecture-boundaries.sh` 禁止 `src/worker/**` → `src/{cli,commands,application}/**`,transitional allowlist 为空 |
15
+
16
+ `shell: false` + 绝对 launch spec(见下)意味着 Worker 不走 PATH 重新解析,也不在当前进程内加载 CLI command 实现。
17
+
18
+ ## controller identity(冻结的已发布 controller)
19
+
20
+ 每次写入型 Feature/batch/Task/final verification 在任何目标仓库或 Task Pool 状态写入前,`LoopAgentClient` 解析并冻结 schemaVersion 1 identity(`ControllerIdentityV1`,定义在 `src/shared/package-metadata.ts`):
21
+
22
+ | 字段 | 含义 |
23
+ | --- | --- |
24
+ | `schemaVersion` | 固定 `1` |
25
+ | `packageName` | 必须为 `@tea-agent/loop-agent` |
26
+ | `binName` / `requested` / `entry` / `realEntry` | 入口解析链(realEntry 经 `realpathSync`) |
27
+ | `launch.command` / `launch.argsPrefix` | 直接可执行的绝对 launch spec |
28
+ | `binarySha256` | `actualEntry` 二进制 hash |
29
+ | `packageVersion` | `package.json` version |
30
+ | `packageFingerprint` | 覆盖 `package.json`、`bin/**`、`dist/**`、`.agents/skills/**` 的 portable fingerprint(`computePackageFingerprint`) |
31
+
32
+ 关键方法:
33
+
34
+ - `resolveIdentity()`(`loop-agent-client.ts`):首次解析并冻结 identity;`this._identityResolved = true`。
35
+ - `assertControllerIdentityUnchangedBeforeSpawn(identity)`(`loop-agent-client.ts`):**每次 spawn 前**重验,漂移即 throw(`run` 与 `runCommand` 路径都调)。
36
+ - `getIdentity()` / `observeReportedVersion(reportedVersion)`:读取/校验子进程回报的版本须与 `packageVersion` 一致。
37
+
38
+ CLI 层(`src/worker/cli.ts`)在写入型命令传 `resolveIdentity: true` 构造 `LoopAgentClient`,并支持 `--expected-controller-version` / `--expected-controller-fingerprint` fail-fast(见 `src/worker/preflight.ts`)。
39
+
40
+ controller identity 与 DAG skill snapshot 是两个不同冻结层(前者跨 Worker/Task Pool/Feature 生命周期,后者单个 DAG run),见 `runtime-boundaries.md` §版本化自举边界。
41
+
42
+ ## 独立 CLI
43
+
44
+ `agent-worker` 是独立 CLI(`bin/agent-worker.js` → `src/worker/cli.ts`),有自己的命令面(`task`、`batch`、`feature`、`report`、`observe` 等)。它**不是**第二套 executor 或 DAG kernel;它编排产品线 Task 并把执行委托给 `loop-agent` 子进程。
45
+
46
+ ## 产品线 read model
47
+
48
+ ### TaskSpec
49
+
50
+ - schema/validate:`src/worker/task-spec/{schema,validate}.ts`。
51
+ - 校验验收条件、依赖、验证命令;`agent-worker task validate-feature` 等用之。
52
+
53
+ ### Task Pool
54
+
55
+ - 唯一 runtime root:`src/worker/pool/run-store.ts`
56
+ `TASK_POOL_RELATIVE_ROOT = ".harness/task-pool"`(ADR 0002)。
57
+ - 此前的顶层 Task Pool 位置不读取、不迁移、不合并、不重映射。
58
+ - **Feature-scoped identity(ADR 0004)**:canonical Task 身份为复合键 `TaskPoolTaskRef = { featureId, taskId }`。`taskId` 仅 Feature 内唯一;同仓库多 Feature 可安全共用同名 Task ID。
59
+ - **State schema v2**:新 state 必须 `schemaVersion: 2` 且显式携带 `featureId` / `taskId`;canonical 路径为 `.harness/task-pool/states/<featureId>/<taskId>.json`。
60
+ - **Consumers**:runner Ready Queue、retry、Follow-up、Feature review、Delivery / Closeout、morning report / metrics 均按 Feature 作用域读写,不得把裸 `taskId` 当作仓库全局唯一键。
61
+ - **Operator**:`pool doctor` 只读 inventory;`pool migrate-state` 默认 dry-run,apply 需 `--owner` + `--reason`;legacy v1 写入路径 fail-closed。
62
+ - batch / retry / morning report 等都基于此根。
63
+
64
+ ### Feature(M2 交付闭环)
65
+
66
+ - review/run/approve-followup/delivery/closeout/verify-final:`src/worker/feature/{review,run}.ts` 及相关。
67
+ - Follow-up:`src/worker/` 下 draft-followup + approve-followup 事务,覆盖全部失败分类(可执行/Spec/Risk/Human/EnvFailure)。
68
+ - Delivery / Closeout:clean Delivery HEAD 上生成 canonical QA/最终验证证据、Delivery Package、Acceptance Coverage、PR 草稿;Closeout 默认预览,显式 `--apply --owner` 才原子写回。
69
+ - 权威证据:`CHANGELOG.md [0.10.0]`、`ai_workspace/loop-agent/reports/2026-07-12-m2-completion-audit.md`。
70
+
71
+ ### Observe(只读 read model)
72
+
73
+ - 模块:`src/worker/observe/`、`src/worker/observability/{read-model,event-store}.ts`。
74
+ - 全局快照:`buildGlobalSnapshot({ repoRoot })`(`src/worker/observability/read-model.ts`),是 **derived** 视图,消费 `.harness/` 与 Task Pool 事实,**不**改变执行成败。
75
+ - Observe 是本地只读暖白控制台;snapshot 投影失败返回安全错误摘要而非全零健康状态(见 `CHANGELOG.md [0.9.0]`)。
76
+
77
+ ## 版本化自举的 deterministic canary
78
+
79
+ 源码仓库的 deterministic candidate canary(`scripts/self-host-canary.mjs`,`npm run self-host:canary -- --deterministic`)是只读/确定性接棒证据:候选 tarball 安装到隔离 slot,两个 bin 从包内绝对入口启动,PATH 中放置 controller fallback trap,只执行 Feature dry-run 与 static/shell DAG。它必须证明 `piExecutorObserved=false` / `modelExecutorObserved=false` / `featureExecutedTasks=[]`,因此**不是** live Pi takeover。该脚本**不**属于发布 package surface(`package.json` `files` 不含它)。
80
+
81
+ ## 不变式
82
+
83
+ - Worker 不得 in-process import `src/cli/**`、`src/commands/**` 或 `src/application/**`(governance 机器校验)。
84
+ - Worker 不实现 executor、scheduler、prompt 或 write guard。
85
+ - `agent-worker` skill(`.agents/skills/agent-worker/`)不加入 `DEFAULT_SKILLS_BY_ROLE`;DAG leaf node 不得递归启动 `agent-worker`(`runtime-boundaries.md` §Skill layer)。
@@ -1,36 +1,36 @@
1
- # cursor-prompt Sidecar
2
-
3
- `cursor-prompt` 是显式、手工触发的 one-shot sidecar。它不是受治理 Agent runtime,也不参与 DAG、Loop 自动写入、Delegate `--auto-run` 或 task writer 选择。
4
-
5
- ## 产品定位
6
-
7
- | 路径 | 角色 |
8
- |---|---|
9
- | Pi DAG (`implement-pi` / `repair-pi`) | 唯一受治理 Agent writer |
10
- | shell / static | 确定性验证与静态输出 |
11
- | `cursor-prompt` | 人工 one-shot 干预;成功不等于任务完成 |
12
-
13
- ## 用法
14
-
15
- ```bash
16
- loop-agent cursor-prompt --cwd . "bounded task prompt"
17
- loop-agent cursor-prompt --file <path>
18
- loop-agent cursor-prompt --stdin
19
- loop-agent cursor-prompt --model <id>
20
- loop-agent cursor-prompt --timeout <ms>
21
- loop-agent cursor-prompt --stream
22
- loop-agent cursor-prompt --list-models
23
- ```
24
-
25
- 调用时才加载 `@cursor/sdk`。缺少 SDK 或 `CURSOR_API_KEY` 时,只有这条命令失败;普通 Agent DAG / doctor / init 不要求 Cursor。
26
-
27
- ## 约束
28
-
29
- - 不读取 `harness.json` task config / DAG facts 作为授权来源。
30
- - 不复制 DAG `writeSet`、repair、resume 或 Loop auto-execute 能力。
31
- - 返回后由主会话检查 diff,并显式运行 shell verification。
32
- - one-shot evidence 写入 `.harness/runs/{active,completed,failed}`。
33
-
34
- ## 迁移说明
35
-
36
- 旧 `executor: "cursor"` DAG、`executors.cursor`、`loopAutoWritePolicy` 与 `cursor-fix` 已硬切删除。需要写入时请重新生成 Pi-only DAG,或仅在人工干预场景使用本 sidecar。
1
+ # cursor-prompt Sidecar
2
+
3
+ `cursor-prompt` 是显式、手工触发的 one-shot sidecar。它不是受治理 Agent runtime,也不参与 DAG、Loop 自动写入、Delegate `--auto-run` 或 task writer 选择。
4
+
5
+ ## 产品定位
6
+
7
+ | 路径 | 角色 |
8
+ |---|---|
9
+ | Pi DAG (`implement-pi` / `repair-pi`) | 唯一受治理 Agent writer |
10
+ | shell / static | 确定性验证与静态输出 |
11
+ | `cursor-prompt` | 人工 one-shot 干预;成功不等于任务完成 |
12
+
13
+ ## 用法
14
+
15
+ ```bash
16
+ loop-agent cursor-prompt --cwd . "bounded task prompt"
17
+ loop-agent cursor-prompt --file <path>
18
+ loop-agent cursor-prompt --stdin
19
+ loop-agent cursor-prompt --model <id>
20
+ loop-agent cursor-prompt --timeout <ms>
21
+ loop-agent cursor-prompt --stream
22
+ loop-agent cursor-prompt --list-models
23
+ ```
24
+
25
+ 调用时才加载 `@cursor/sdk`。缺少 SDK 或 `CURSOR_API_KEY` 时,只有这条命令失败;普通 Agent DAG / doctor / init 不要求 Cursor。
26
+
27
+ ## 约束
28
+
29
+ - 不读取 `harness.json` task config / DAG facts 作为授权来源。
30
+ - 不复制 DAG `writeSet`、repair、resume 或 Loop auto-execute 能力。
31
+ - 返回后由主会话检查 diff,并显式运行 shell verification。
32
+ - one-shot evidence 写入 `.harness/runs/{active,completed,failed}`。
33
+
34
+ ## 迁移说明
35
+
36
+ 旧 `executor: "cursor"` DAG、`executors.cursor`、`loopAutoWritePolicy` 与 `cursor-fix` 已硬切删除。需要写入时请重新生成 Pi-only DAG,或仅在人工干预场景使用本 sidecar。
@@ -1,18 +1,18 @@
1
- # 决策
2
-
3
- 本目录存放架构决策记录(ADR)。模板见 `docs/templates/adr.md`。
4
-
5
- ## 索引
6
-
7
- | ADR | 状态 | 摘要 |
8
- | --- | --- | --- |
9
- | [`0001-pi-only-agent-runtime.md`](0001-pi-only-agent-runtime.md) | accepted | 受治理 Agent 仅 Pi;`cursor-prompt` 为显式 sidecar |
10
- | [`0002-task-pool-runtime-root.md`](0002-task-pool-runtime-root.md) | accepted | Task Pool 唯一根 `.harness/task-pool/`,旧 `.task-pool/` 不兼容 |
11
- | [`0003-docs-dual-tree-converge.md`](0003-docs-dual-tree-converge.md) | accepted | `website/docs/` 用法 vs `docs/` 治理;docs-converge 检查表 |
12
- | [`0004-task-pool-feature-scoped-task-identity.md`](0004-task-pool-feature-scoped-task-identity.md) | accepted | Task Pool 复合身份 `{featureId,taskId}`、state v2、legacy fail-closed、Observe composite route |
13
-
14
- **读者注意(M4)**:ADR 0004 **决策边界**仍有效;正文中「M2+ 未改 consumers/Observe」段落是 M0/M1 当时的切片叙述,现已过时。实现进度以 `docs/progress/2026-07-15-task-pool-v2-feature-scoped-task-identity.md`、最终报告 `docs/reports/2026-07-15-task-pool-v2-feature-scoped-task-identity.md` 与 `CHANGELOG.md [Unreleased]` 为准。本任务 **不修改** ADR 0004 正文(不在 closeout allowedPaths)。
15
-
16
- 新增跨版本架构取舍时:用模板新增 `NNNN-title.md`,并更新本表。不要把 ADR 正文复制进 `website/docs/`。
17
-
18
- 实施细节与证据仍以对应 `docs/exec-plans/completed/` 与 `CHANGELOG.md` 为准;ADR 只固化决策边界。
1
+ # 决策
2
+
3
+ 本目录存放架构决策记录(ADR)。模板见 `docs/templates/adr.md`。
4
+
5
+ ## 索引
6
+
7
+ | ADR | 状态 | 摘要 |
8
+ | --- | --- | --- |
9
+ | [`0001-pi-only-agent-runtime.md`](0001-pi-only-agent-runtime.md) | accepted | 受治理 Agent 仅 Pi;`cursor-prompt` 为显式 sidecar |
10
+ | [`0002-task-pool-runtime-root.md`](0002-task-pool-runtime-root.md) | accepted | Task Pool 唯一根 `.harness/task-pool/`,旧 `.task-pool/` 不兼容 |
11
+ | [`0003-docs-dual-tree-converge.md`](0003-docs-dual-tree-converge.md) | accepted | `website/docs/` 用法 vs `docs/` 治理;docs-converge 检查表 |
12
+ | [`0004-task-pool-feature-scoped-task-identity.md`](0004-task-pool-feature-scoped-task-identity.md) | accepted | Task Pool 复合身份 `{featureId,taskId}`、state v2、legacy fail-closed、Observe composite route |
13
+
14
+ **读者注意(M4)**:ADR 0004 **决策边界**仍有效;正文中「M2+ 未改 consumers/Observe」段落是 M0/M1 当时的切片叙述,现已过时。实现进度以 `docs/progress/2026-07-15-task-pool-v2-feature-scoped-task-identity.md`、最终报告 `docs/reports/2026-07-15-task-pool-v2-feature-scoped-task-identity.md` 与 `CHANGELOG.md [Unreleased]` 为准。本任务 **不修改** ADR 0004 正文(不在 closeout allowedPaths)。
15
+
16
+ 新增跨版本架构取舍时:用模板新增 `NNNN-title.md`,并更新本表。不要把 ADR 正文复制进 `website/docs/`。
17
+
18
+ 实施细节与证据仍以对应 `docs/exec-plans/completed/` 与 `CHANGELOG.md` 为准;ADR 只固化决策边界。