@tea-agent/loop-agent 0.3.0 → 0.5.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 (57) hide show
  1. package/AGENTS.md +16 -14
  2. package/CHANGELOG.md +70 -53
  3. package/README.md +28 -25
  4. package/bin/agent-worker.js +22 -0
  5. package/dist/application/dag/validate-dag.js +14 -1
  6. package/dist/commands/init.js +220 -32
  7. package/dist/executors/config-core.js +3 -2
  8. package/dist/executors/dag-pi-executor.js +8 -1
  9. package/dist/executors/model-routing.js +43 -0
  10. package/dist/governance/manifest-types.js +9 -1
  11. package/dist/worker/cli.js +119 -0
  12. package/dist/worker/loop-agent/command-result.js +1 -0
  13. package/dist/worker/loop-agent/loop-agent-client.js +105 -0
  14. package/dist/worker/loop-agent/parse-json.js +14 -0
  15. package/dist/worker/materialize/harness-task-materializer.js +157 -0
  16. package/dist/worker/pool/failure-routing.js +98 -0
  17. package/dist/worker/pool/run-store.js +125 -0
  18. package/dist/worker/pool/types.js +1 -0
  19. package/dist/worker/preflight.js +108 -0
  20. package/dist/worker/profile-mapping.js +76 -0
  21. package/dist/worker/progress-reporter.js +81 -0
  22. package/dist/worker/report/morning-report.js +69 -0
  23. package/dist/worker/repos/repo-resolver.js +23 -0
  24. package/dist/worker/run-task/run-task.js +359 -0
  25. package/dist/worker/runner/run-ready.js +216 -0
  26. package/dist/worker/task-graph/acceptance-schema.js +25 -0
  27. package/dist/worker/task-graph/ready-queue.js +23 -0
  28. package/dist/worker/task-graph/task-graph-schema.js +28 -0
  29. package/dist/worker/task-graph/types.js +1 -0
  30. package/dist/worker/task-graph/validate.js +188 -0
  31. package/dist/worker/task-spec/complexity-mapping.js +8 -0
  32. package/dist/worker/task-spec/schema.js +116 -0
  33. package/dist/worker/task-spec/types.js +1 -0
  34. package/dist/worker/task-spec/validate.js +352 -0
  35. package/dist/workflows/dag/init-hybrid.js +4 -13
  36. package/dist/workflows/dag/skill-instructions.js +4 -0
  37. package/dist/workflows/dag/types.js +1 -1
  38. package/dist/workflows/dag/validate.js +3 -2
  39. package/docs/README.md +11 -7
  40. package/docs/development-principles.md +2 -0
  41. package/docs/exec-plans/active/README.md +1 -1
  42. package/docs/exec-plans/completed/README.md +8 -0
  43. package/docs/init-surface.manifest.json +199 -175
  44. package/docs/skills/vetted-skill-registry.md +4 -4
  45. package/docs/templates/agent-dag.base.json +1 -1
  46. package/docs/templates/agent-dag.final-verification.json +1 -1
  47. package/docs/templates/agent-dag.supervised-implementation.json +1 -1
  48. package/docs/templates/hybrid-dag.json +1 -1
  49. package/docs/templates/init-evolution-review.md +33 -33
  50. package/examples/example-dag.json +1 -1
  51. package/examples/hybrid-loop-agent-dag.json +1 -1
  52. package/harness.json +7 -32
  53. package/package.json +14 -12
  54. package/skills/init-capability-evolution/SKILL.md +69 -69
  55. package/skills/loop-agent/SKILL.md +2 -0
  56. package/skills/loop-agent/references/command-reference.md +63 -35
  57. package/skills/loop-agent/references/harness-policy.md +2 -1
@@ -1,69 +1,69 @@
1
- ---
2
- name: init-capability-evolution
3
- description: 用于 loop-agent 本仓库的初始化能力演化审查,判断代码、skill、模板、包范围或 DAG 默认能力变化是否需要同步更新目标项目 init surface。
4
- ---
5
-
6
- # Init Capability Evolution
7
-
8
- 本 skill 用于 loop-agent 本仓库。当变更可能影响 `loop-agent init` 初始化其他项目的能力时使用。
9
-
10
- ## Goal
11
-
12
- 让模型自行判断并维护初始化能力,而不是依赖人工记忆:
13
-
14
- - 新能力是否应该进入目标项目。
15
- - 新增/修改的 skill 是否应随 npm 包和 `init --profile full` 投影。
16
- - 目标项目的 `AGENTS.md`、README managed block、治理 docs、scripts 或 templates 是否需要更新。
17
- - `package.json files` 与 `docs/init-surface.manifest.json` 是否仍覆盖真实发布范围。
18
- - 是否需要目标项目 smoke、init doctor、docs audit 或 package dry-run 证据。
19
-
20
- ## Trigger Tiers
21
-
22
- 按 `docs/init-surface.manifest.json` 的 `evolutionReview.tiers` 判断成本:
23
-
24
- - `advisory`:只记录提示,不阻塞。
25
- - `surface-check`:运行 `bash scripts/check-init-surface.sh`;通过即可。
26
- - `model-review`:写一份简短 init evolution review,必要时修改 init surface、包范围、文档、skill 或测试。
27
-
28
- 不要把小改动升级成重流程。只有当变化可能改变目标项目初始化体验、默认 DAG 行为、skill resolution、发布包边界或 init 生成物时,才进入 model-review。
29
-
30
- ## Review Questions
31
-
32
- 审查时逐条回答:
33
-
34
- 1. 本次变更会改变目标项目执行 `loop-agent init --profile full --merge` 后得到的文件、规则或能力吗?
35
- 2. 是否新增、删除或重命名了 `skills/**`,并且目标项目需要 repo-local 可审计副本?
36
- 3. 是否改变了默认 DAG role skills、skill resolution、strict skill audit 或 task prompt 注入?
37
- 4. 是否新增通用治理模板、script matrix、production readiness 或 operator recovery 文档,需要目标项目初始化后可见?
38
- 5. `package.json files` 是否包含所有 npm 运行和初始化所需静态资料?
39
- 6. `docs/init-surface.manifest.json` 是否更新了 package / init / exclude / trigger contract?
40
- 7. 旧目标项目是否只需 advisory、需要手工复制新增文件,还是需要未来 `init audit/update` 迁移能力?
41
-
42
- ## Output
43
-
44
- 轻量审查可以只在 handoff 中说明。高影响审查应写入:
45
-
46
- ```text
47
- docs/reports/YYYY-MM-DD-init-evolution-review.md
48
- ```
49
-
50
- 报告保持短小,包含:
51
-
52
- - changed surface
53
- - decision: no init impact / surface check only / init update required
54
- - files updated
55
- - verification commands and results
56
- - residual risk
57
-
58
- ## Required Verification
59
-
60
- 按影响面选择最小命令:
61
-
62
- ```bash
63
- bash scripts/check-init-surface.sh
64
- bash scripts/check-repo.sh
65
- npm test -- init-command dag-skills dag-validate-command
66
- npm pack --dry-run --ignore-scripts
67
- ```
68
-
69
- 如果没有新鲜验证证据,不要宣称 init evolution 已完成。
1
+ ---
2
+ name: init-capability-evolution
3
+ description: 用于 loop-agent 本仓库的初始化能力演化审查,判断代码、skill、模板、包范围或 DAG 默认能力变化是否需要同步更新目标项目 init surface。
4
+ ---
5
+
6
+ # Init Capability Evolution
7
+
8
+ 本 skill 用于 loop-agent 本仓库。当变更可能影响 `loop-agent init` 初始化其他项目的能力时使用。
9
+
10
+ ## Goal
11
+
12
+ 让模型自行判断并维护初始化能力,而不是依赖人工记忆:
13
+
14
+ - 新能力是否应该进入目标项目。
15
+ - 新增/修改的 skill 是否应随 npm 包和 `init --profile full` 投影。
16
+ - 目标项目的 `AGENTS.md`、README managed block、治理 docs、scripts 或 templates 是否需要更新。
17
+ - `package.json files` 与 `docs/init-surface.manifest.json` 是否仍覆盖真实发布范围。
18
+ - 是否需要目标项目 smoke、init doctor、docs audit 或 package dry-run 证据。
19
+
20
+ ## Trigger Tiers
21
+
22
+ 按 `docs/init-surface.manifest.json` 的 `evolutionReview.tiers` 判断成本:
23
+
24
+ - `advisory`:只记录提示,不阻塞。
25
+ - `surface-check`:运行 `bash scripts/check-init-surface.sh`;通过即可。
26
+ - `model-review`:写一份简短 init evolution review,必要时修改 init surface、包范围、文档、skill 或测试。
27
+
28
+ 不要把小改动升级成重流程。只有当变化可能改变目标项目初始化体验、默认 DAG 行为、skill resolution、发布包边界或 init 生成物时,才进入 model-review。
29
+
30
+ ## Review Questions
31
+
32
+ 审查时逐条回答:
33
+
34
+ 1. 本次变更会改变目标项目执行 `loop-agent init --profile full --merge` 后得到的文件、规则或能力吗?
35
+ 2. 是否新增、删除或重命名了 `skills/**`,并且目标项目需要 repo-local 可审计副本?
36
+ 3. 是否改变了默认 DAG role skills、skill resolution、strict skill audit 或 task prompt 注入?
37
+ 4. 是否新增通用治理模板、script matrix、production readiness 或 operator recovery 文档,需要目标项目初始化后可见?
38
+ 5. `package.json files` 是否包含所有 npm 运行和初始化所需静态资料?
39
+ 6. `docs/init-surface.manifest.json` 是否更新了 package / init / exclude / trigger contract?
40
+ 7. 旧目标项目是否只需 advisory、需要手工复制新增文件,还是需要未来 `init audit/update` 迁移能力?
41
+
42
+ ## Output
43
+
44
+ 轻量审查可以只在 handoff 中说明。高影响审查应写入:
45
+
46
+ ```text
47
+ docs/reports/YYYY-MM-DD-init-evolution-review.md
48
+ ```
49
+
50
+ 报告保持短小,包含:
51
+
52
+ - changed surface
53
+ - decision: no init impact / surface check only / init update required
54
+ - files updated
55
+ - verification commands and results
56
+ - residual risk
57
+
58
+ ## Required Verification
59
+
60
+ 按影响面选择最小命令:
61
+
62
+ ```bash
63
+ bash scripts/check-init-surface.sh
64
+ bash scripts/check-repo.sh
65
+ npm test -- init-command dag-skills dag-validate-command
66
+ npm pack --dry-run --ignore-scripts
67
+ ```
68
+
69
+ 如果没有新鲜验证证据,不要宣称 init evolution 已完成。
@@ -91,6 +91,7 @@ bounded writer 完成后,主会话必须独立复核;命令清单见 `refere
91
91
  | Long-Running Loop(`loop` init/status/run/record-round/add-signal/closeout、auto mode、signals) | `references/long-running-loop.md` |
92
92
  | Three-Pass Convergence、repair artifact、spine audit、knowledge curate、SePO-lite prompt evolution | `references/harness-policy.md` |
93
93
  | Operator commands(status/doctor/report/closeout/promote/inspect/spine/knowledge/docs/handoff) | `references/command-reference.md` |
94
+ | 伴生 CLI `agent-worker`(TaskSpec / Task Pool / batch / morning report) | `references/command-reference.md` |
94
95
  | Post-Cursor 独立验证、verify knobs、failure handling、closeout | `references/verification-and-failure-handling.md` |
95
96
 
96
97
  ## Source Layout
@@ -104,6 +105,7 @@ bounded writer 完成后,主会话必须独立复核;命令清单见 `refere
104
105
  | Long-running loop workflow | `src/workflows/loop/` |
105
106
  | Task runtime | `src/task/` |
106
107
  | Executors | `src/executors/` |
108
+ | Worker TaskSpec pipeline(伴生 CLI `agent-worker`) | `src/worker/` |
107
109
  | Run records / promotion / closeout | `src/records/` |
108
110
  | Governance | `src/governance/` |
109
111
  | Shared helpers | `src/shared/` |
@@ -14,12 +14,12 @@ loop-agent <command> ...
14
14
 
15
15
  面向自举迭代和日常使用时,全局 CLI 应来自 npm 上已发布的安装包。首次安装或有意升级使用 `@latest`:
16
16
 
17
- ```bash
18
- npm install -g @tea-agent/loop-agent@latest
19
- npm list -g @tea-agent/loop-agent --depth=0
20
- loop-agent --version
21
- loop-agent doctor
22
- ```
17
+ ```bash
18
+ npm install -g @tea-agent/loop-agent@latest
19
+ npm list -g @tea-agent/loop-agent --depth=0
20
+ loop-agent --version
21
+ loop-agent doctor
22
+ ```
23
23
 
24
24
  一次自举任务启动后不要中途升级控制器;记录 `npm list -g` 显示的实际版本。不要在 DAG 节点中反复用 `npx @latest` 拉取,也不要使用当前工作区的 `npm link` 或 `npm run dev` 作为控制器去修改 loop-agent 本仓库的 CLI、DAG runtime、executor、package metadata 或 build output。`npm run dev -- <command> ...` 只用于源码调试和聚焦 CLI 开发。
25
25
 
@@ -66,11 +66,11 @@ loop-agent doctor
66
66
  ```
67
67
 
68
68
  ### Setup(首次)
69
- ```bash
70
- npm install -g @tea-agent/loop-agent@latest
71
- loop-agent --version
72
- loop-agent --help
73
- ```
69
+ ```bash
70
+ npm install -g @tea-agent/loop-agent@latest
71
+ loop-agent --version
72
+ loop-agent --help
73
+ ```
74
74
 
75
75
  ### 检查 repo harness
76
76
  ```bash
@@ -78,10 +78,10 @@ loop-agent inspect # 当前 repo(自
78
78
  loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
79
79
  ```
80
80
 
81
- ### 健康检查
82
- ```bash
83
- loop-agent doctor
84
- ```
81
+ ### 健康检查
82
+ ```bash
83
+ loop-agent doctor
84
+ ```
85
85
 
86
86
  `doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
87
87
 
@@ -90,26 +90,26 @@ export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fa
90
90
  export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
91
91
  ```
92
92
 
93
- SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
94
-
95
- ### 初始化与旧项目更新
96
- ```bash
97
- loop-agent init instructions --repo-root <target-repo>
98
- loop-agent init --repo-root <target-repo> --profile full --merge
99
- loop-agent init doctor --repo-root <target-repo>
100
- loop-agent init check-update --repo-root <target-repo> --json
101
- loop-agent init check-update --repo-root <target-repo> --markdown
102
- loop-agent init update --repo-root <target-repo> --bootstrap-surface
103
- loop-agent init update --repo-root <target-repo> --apply-safe
104
- ```
105
-
106
- `init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
107
-
108
- `init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。
109
-
110
- ### 创建新 task
111
- ```bash
112
- loop-agent new-task <task-id> "Task Title"
93
+ SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
94
+
95
+ ### 初始化与旧项目更新
96
+ ```bash
97
+ loop-agent init instructions --repo-root <target-repo>
98
+ loop-agent init --repo-root <target-repo> --profile full --merge
99
+ loop-agent init doctor --repo-root <target-repo>
100
+ loop-agent init check-update --repo-root <target-repo> --json
101
+ loop-agent init check-update --repo-root <target-repo> --markdown
102
+ loop-agent init update --repo-root <target-repo> --bootstrap-surface
103
+ loop-agent init update --repo-root <target-repo> --apply-safe
104
+ ```
105
+
106
+ `init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
107
+
108
+ `init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。
109
+
110
+ ### 创建新 task
111
+ ```bash
112
+ loop-agent new-task <task-id> "Task Title"
113
113
  ```
114
114
 
115
115
  创建 `.harness/tasks/<task-id>/`,含 `source/`、`artifacts/`、`logs/` 及初始 state。
@@ -348,6 +348,34 @@ loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-p
348
348
 
349
349
  读取 `.harness/knowledge/patterns.jsonl` 中 completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `./skill/references/learned/*.md`;输出会先通过 skill safety audit。
350
350
 
351
+ ### Worker TaskSpec pipeline(伴生 CLI `agent-worker`)
352
+
353
+ `agent-worker` 是与 `loop-agent` 一起发布的独立 CLI(`bin/agent-worker.js -> dist/worker/cli.js`),面向“产品线 Worker”场景:把一批 TaskSpec 规约成可校验、可串行调度、可晨报的流水线。它不进入 `loop-agent` 命令树,也不自带 executor——执行权全部通过子进程委托给已发布的 `loop-agent` CLI(最终是 DAG runtime + shell verification)。
354
+
355
+ ```bash
356
+ agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
357
+ agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
358
+ agent-worker batch run-ready \
359
+ --feature-dir <feature-dir> \ # 含 tasks/task-graph.yaml
360
+ --repo <repo-root> \ # 目标 repo
361
+ [--limit <count>] [--batch-run-id <id>] \
362
+ [--loop-agent-bin loop-agent] \
363
+ [--check-repo] [--check-repo-command <command...>] \
364
+ [--quiet] \
365
+ [--pi-model <model>] # smoke 覆盖:所有 pi 节点强制用该模型
366
+ agent-worker report morning --repo <repo-root> [--batch-run-id <id>] [--output <path>]
367
+ ```
368
+
369
+ 语义要点:
370
+
371
+ - TaskSpec 声明单个任务的业务上下文、`risk_level`、验收与 verify 边界;`risk_level` 被确定性映射到 task complexity。AcceptanceSpec / TaskGraphSpec 声明跨任务验收引用与依赖图,ready queue 决定可运行任务并检测未知依赖/环/文件一致性。
372
+ - 业务 type(`backend-feature`/`frontend-feature`/`qa-testcode` 等)是产品线 profile,不能直接传给 `loop-agent dag run-task --profile`;Worker 会映射到 `auto`/`minimal`/`standard`/`reviewed`/`supervised`。
373
+ - materializer 把 TaskSpec 物化为 `.harness/tasks/<task-id>` 后,Worker 调用 `dag run-task` / `dag validate` / `run-dag` / `dag report`。成功路径走 `promote-run` + `closeout task`;失败路径收集 `dag doctor` / `dag closeout-draft` evidence,写入目标 repo 的 `.task-pool/failure-handoffs/`(不写 `.harness/`,因为 `dag closeout-draft` 会拒绝在 completed facts 之外写入)。
374
+ - Worker runtime state 落在目标 repo 的 `.task-pool/`(artifacts、JSONL/state、晨报、failure handoffs),与 `.harness/` 分离;`.task-pool/` 默认被 `.gitignore` 忽略。
375
+ - preflight 在 `new-task` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
376
+ - `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
377
+ - 当前 Worker 仍是 v0(库 + CLI + dogfood),未接入定时/CI 驱动;`report morning` 只能从已有 Task Pool runs 汇总。
378
+
351
379
  ### 查看 duration statistics
352
380
  ```bash
353
381
  loop-agent stats
@@ -225,10 +225,11 @@ Sidecar output 为 advisory。若须成为 task evidence,通过 loop-agent run
225
225
  - `.harness/tasks/<task-id>/loop/` 是 loop runtime projection;不替代 task source 或 repo specs。
226
226
  - `.harness/dag-runs/{active,paused,completed}/<run-id>/` 是 DAG run fact storage。Completed facts 为 read-only。
227
227
  - `.harness/runs/{active,completed,failed}/<run-id>/` 是 one-shot Pi/Cursor evidence。Completed/failed facts 为 read-only。
228
+ - `.task-pool/` 是伴生 CLI `agent-worker`(Worker TaskSpec pipeline)的 runtime state:batch artifacts、Task Pool JSONL/state、晨报和 failure handoffs。默认被忽略,不提交。
228
229
  - Root `artifacts/` 是 legacy/current-work summary space,不是 DAG read-only scratchpad,也不是新 DAG work 的 default handoff。
229
230
  - Long-term conclusions 属于 repo governance docs、progress、reports、decisions、tests 或 scripts。
230
231
 
231
- 除非 task 显式 promote trimmed report 到 repo governance docs,不要提交 `.harness/dag-runs/`、`.harness/runs/` 或 `.harness/cache/` 的 runtime histories。
232
+ 除非 task 显式 promote trimmed report 到 repo governance docs,不要提交 `.harness/dag-runs/`、`.harness/runs/`、`.harness/cache/` 或 `.task-pool/` 的 runtime histories。
232
233
 
233
234
  ## Baseline, dirty workspace, and verification
234
235