@zhushanwen/subagent-core 0.2.0 → 0.4.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.
- package/README.md +45 -2
- package/agents/analyst.md +60 -0
- package/agents/coder.md +69 -0
- package/agents/debugger.md +66 -0
- package/agents/doc-reviewer.md +49 -0
- package/agents/explorer.md +63 -0
- package/agents/general-purpose.md +32 -0
- package/agents/orchestrator.md +61 -0
- package/agents/planner.md +53 -0
- package/agents/researcher.md +67 -0
- package/agents/reviewer.md +73 -0
- package/dist/chunk-4KN4TTG7.js +240 -0
- package/dist/chunk-APZY4IME.js +27 -0
- package/dist/chunk-X7SZ5HLQ.js +66 -0
- package/dist/execution/engine/engines/zcode/constants.cjs +65 -0
- package/dist/execution/engine/engines/zcode/constants.d.cts +93 -1
- package/dist/execution/engine/engines/zcode/constants.d.ts +93 -1
- package/dist/execution/engine/engines/zcode/constants.js +43 -1
- package/dist/execution/engine/engines/zcode/reader.d.cts +1 -1
- package/dist/execution/engine/engines/zcode/reader.d.ts +1 -1
- package/dist/execution/engine/engines/zcode/reader.js +4 -234
- package/dist/execution/engine/paths.js +7 -19
- package/dist/index.cjs +14709 -100
- package/dist/index.d.cts +4053 -200
- package/dist/index.d.ts +4053 -200
- package/dist/index.js +14358 -102
- package/dist/{types-BxyAidGf.d.cts → types-DpUO16pj.d.cts} +464 -1
- package/dist/{types-BxyAidGf.d.ts → types-DpUO16pj.d.ts} +464 -1
- package/package.json +6 -3
- package/src/__tests__/review-fix-loop-script.test.ts +90 -2
- package/src/__tests__/review-fix-loop-utils.test.ts +21 -0
- package/src/__tests__/smoke.test.ts +9 -2
- package/src/execution/__tests__/agent-profile.test.ts +232 -0
- package/src/execution/__tests__/agents-assembly.test.ts +219 -0
- package/src/execution/__tests__/chat-engine-routing.test.ts +71 -0
- package/src/execution/__tests__/chatmode-first-round-closure-spawn.test.ts +1 -0
- package/src/execution/__tests__/create-concurrency-pool.test.ts +194 -0
- package/src/execution/__tests__/delivery-methods.test.ts +2 -0
- package/src/execution/__tests__/descendant-sweep.test.ts +269 -0
- package/src/execution/__tests__/dialog-queue.test.ts +199 -1
- package/src/execution/__tests__/epipe-fallback.test.ts +2 -0
- package/src/execution/__tests__/execution-runtime-face.test.ts +272 -0
- package/src/execution/__tests__/finalize-record.test.ts +106 -0
- package/src/execution/__tests__/gc-timer.test.ts +2 -0
- package/src/execution/__tests__/get-record-for-action-restart.test.ts +2 -0
- package/src/execution/__tests__/get-state-handshake.test.ts +127 -0
- package/src/execution/__tests__/keep-alive-no-progress.test.ts +378 -0
- package/src/execution/__tests__/kill-all-escalation.test.ts +196 -0
- package/src/execution/__tests__/lifecycle-manager-idle-timer-identity.test.ts +117 -0
- package/src/execution/__tests__/lifecycle-manager.test.ts +39 -0
- package/src/execution/__tests__/manifest-store-tmp-recovery.test.ts +99 -0
- package/src/execution/__tests__/max-turns-to-watchdog-ms.test.ts +113 -0
- package/src/execution/__tests__/notify-ledger.test.ts +294 -0
- package/src/execution/__tests__/record-store-orphan-revive.test.ts +159 -0
- package/src/execution/__tests__/record-store.test.ts +83 -0
- package/src/execution/__tests__/run-and-finalize-chatmode.test.ts +4 -0
- package/src/execution/__tests__/run-spawn-chatmode-settled.test.ts +1 -0
- package/src/execution/__tests__/run-spawn-edges.test.ts +407 -17
- package/src/execution/__tests__/run-spawn-integration.test.ts +1 -1
- package/src/execution/__tests__/run-spawn-stdout-callback-throw.test.ts +12 -4
- package/src/execution/__tests__/service-kill-escalation.test.ts +89 -0
- package/src/execution/__tests__/session-pending.test.ts +228 -0
- package/src/execution/__tests__/session-runner-branch-cache-lru.test.ts +110 -0
- package/src/execution/__tests__/session-runner-close-prune.test.ts +181 -0
- package/src/execution/__tests__/session-runner-epipe.test.ts +1 -0
- package/src/execution/__tests__/session-runner-heartbeat-idle-fallback.test.ts +226 -0
- package/src/execution/__tests__/settled-watchdog.test.ts +289 -0
- package/src/execution/__tests__/spawned-children.test.ts +153 -10
- package/src/execution/__tests__/subagent-actions-core.test.ts +997 -0
- package/src/execution/__tests__/subagent-service-message-close.test.ts +71 -10
- package/src/execution/__tests__/subagent-service-multiproc-guard.test.ts +174 -0
- package/src/execution/__tests__/subagent-service-notify-gate.test.ts +266 -0
- package/src/execution/__tests__/subagent-service-parent-guard.test.ts +3 -0
- package/src/execution/__tests__/subagent-service-recovery-bounds.test.ts +316 -0
- package/src/execution/__tests__/timeout-integration.test.ts +7 -7
- package/src/execution/__tests__/ui-request-handler-factory.test.ts +95 -1
- package/src/execution/__tests__/ui-request-queue.test.ts +25 -0
- package/src/execution/__tests__/worktree-git-ops.test.ts +571 -0
- package/src/execution/__tests__/worktree-reconcile-aging.test.ts +204 -0
- package/src/execution/agent-registry.ts +225 -1
- package/src/execution/agents-assembly.ts +88 -0
- package/src/execution/concurrency-pool.ts +71 -9
- package/src/execution/dialog-queue.ts +101 -3
- package/src/execution/engine/__tests__/conformance/contract.abort.test.ts +49 -2
- package/src/execution/engine/__tests__/conformance/contract.agent-events.test.ts +87 -1
- package/src/execution/engine/__tests__/conformance/engine-conformance.live.test.ts +26 -0
- package/src/execution/engine/__tests__/conformance/golden-replay.zcode.test.ts +83 -1
- package/src/execution/engine/__tests__/conformance/zcode-appserver-harness.ts +131 -0
- package/src/execution/engine/__tests__/registry.test.ts +90 -1
- package/src/execution/engine/engine-discovery.ts +12 -16
- package/src/execution/engine/engines/pi/task-spec-mapper.ts +3 -3
- package/src/execution/engine/engines/zcode/__tests__/__fixtures__/fake-appserver.mjs +274 -0
- package/src/execution/engine/engines/zcode/__tests__/__fixtures__/zcode-golden-appserver.json +36 -0
- package/src/execution/engine/engines/zcode/__tests__/connection.test.ts +472 -0
- package/src/execution/engine/engines/zcode/__tests__/preparer-appserver.test.ts +387 -0
- package/src/execution/engine/engines/zcode/__tests__/session-channel.test.ts +780 -0
- package/src/execution/engine/engines/zcode/__tests__/zcode-engine-appserver.test.ts +815 -0
- package/src/execution/engine/engines/zcode/__tests__/zcode-engine-degrade.test.ts +462 -0
- package/src/execution/engine/engines/zcode/__tests__/zcode-engine.live.test.ts +119 -1
- package/src/execution/engine/engines/zcode/__tests__/zcode-engine.test.ts +136 -6
- package/src/execution/engine/engines/zcode/appserver-home.ts +442 -0
- package/src/execution/engine/engines/zcode/appserver-probe.ts +141 -0
- package/src/execution/engine/engines/zcode/connection.ts +585 -0
- package/src/execution/engine/engines/zcode/constants.ts +129 -0
- package/src/execution/engine/engines/zcode/golden-sample.ts +54 -8
- package/src/execution/engine/engines/zcode/preparer.ts +25 -22
- package/src/execution/engine/engines/zcode/session-channel.ts +656 -0
- package/src/execution/engine/engines/zcode/zcode-engine.ts +909 -41
- package/src/execution/engine/host-task-spec.ts +3 -3
- package/src/execution/engine/port.ts +41 -1
- package/src/execution/engine/registry.ts +53 -0
- package/src/execution/finalize-record.ts +63 -5
- package/src/execution/get-state-handshake.ts +85 -10
- package/src/execution/lifecycle-manager.ts +27 -3
- package/src/execution/manifest-store.ts +53 -62
- package/src/execution/notifier.ts +10 -10
- package/src/execution/notify-ledger.ts +117 -16
- package/src/execution/record-entry.ts +8 -2
- package/src/execution/record-store.ts +29 -15
- package/src/execution/session-pending.ts +213 -62
- package/src/execution/session-runner.ts +974 -128
- package/src/execution/sessions-index.ts +10 -55
- package/src/execution/settled-watchdog.ts +99 -0
- package/src/execution/subagent-actions-core.ts +686 -0
- package/src/execution/subagent-service.ts +396 -49
- package/src/execution/ui-request-handler-factory.ts +27 -4
- package/src/execution/worktree-git-ops.ts +397 -0
- package/src/execution/worktree-manager.ts +72 -10
- package/src/execution/worktree-registry.ts +6 -12
- package/src/index.ts +413 -6
- package/src/orchestration/__tests__/__fixtures__/worker-template.snapshot.txt +42 -3
- package/src/orchestration/__tests__/agent-call-catch-fallback.test.ts +2 -4
- package/src/orchestration/__tests__/args-meta.test.ts +358 -0
- package/src/orchestration/__tests__/error-recovery-handlers.test.ts +1 -8
- package/src/orchestration/__tests__/error-recovery-rebuild-failure.test.ts +312 -0
- package/src/orchestration/__tests__/error-recovery-terminal-hardening.test.ts +382 -0
- package/src/orchestration/__tests__/file-run-store-prune.test.ts +168 -0
- package/src/orchestration/__tests__/file-run-store-throttle.test.ts +168 -0
- package/src/orchestration/__tests__/file-run-store.test.ts +389 -0
- package/src/orchestration/__tests__/helpers/flush-microtasks.ts +13 -0
- package/src/orchestration/__tests__/launcher-nested-workflow.test.ts +34 -0
- package/src/orchestration/__tests__/lifecycle-abort-broadcast-signal.test.ts +357 -0
- package/src/orchestration/__tests__/lifecycle-recover-crashed.test.ts +289 -0
- package/src/orchestration/__tests__/lifecycle.test.ts +77 -0
- package/src/orchestration/__tests__/run-snapshot.test.ts +353 -0
- package/src/orchestration/__tests__/script-generate.test.ts +314 -0
- package/src/orchestration/__tests__/worker-pending-timeout-abort.test.ts +275 -0
- package/src/orchestration/__tests__/worker-script-builder-runtime.test.ts +78 -1
- package/src/orchestration/__tests__/workflow-files.test.ts +186 -0
- package/src/orchestration/__tests__/workflow-run-summary.test.ts +119 -0
- package/src/orchestration/__tests__/workflow-script-registry-impl.test.ts +124 -0
- package/src/orchestration/agent-opts-resolver.ts +7 -7
- package/src/orchestration/args-meta.ts +198 -0
- package/src/orchestration/error-recovery.ts +416 -146
- package/src/orchestration/execute-agent-call.ts +9 -9
- package/src/orchestration/file-run-store.ts +327 -0
- package/src/orchestration/launcher.ts +35 -26
- package/src/orchestration/lifecycle.ts +355 -79
- package/src/orchestration/models/agent-call.ts +7 -7
- package/src/orchestration/models/budget.ts +5 -5
- package/src/orchestration/models/run-runtime.ts +13 -13
- package/src/orchestration/models/trace.ts +8 -8
- package/src/orchestration/models/workflow-run.ts +27 -27
- package/src/orchestration/models/workflow-script.ts +4 -4
- package/src/orchestration/run-snapshot.ts +266 -0
- package/src/orchestration/script-generate.ts +154 -0
- package/src/orchestration/script-lint.ts +33 -33
- package/src/orchestration/worker-handle.ts +10 -10
- package/src/orchestration/worker-host.ts +10 -10
- package/src/orchestration/worker-script-builder.ts +401 -346
- package/src/orchestration/workflow-files.ts +37 -11
- package/src/orchestration/workflow-run-summary.ts +69 -0
- package/src/orchestration/workflow-script-registry-impl.ts +31 -9
- package/src/shared/__tests__/agent-ref.test.ts +209 -2
- package/src/shared/__tests__/atomic-write.test.ts +267 -0
- package/src/shared/__tests__/bounded-serialize.test.ts +236 -0
- package/src/shared/__tests__/injection-render.test.ts +518 -0
- package/src/shared/__tests__/resource-discovery-host-roots.test.ts +474 -0
- package/src/shared/__tests__/resource-discovery.test.ts +3 -2
- package/src/shared/agent-ref.ts +143 -2
- package/src/shared/atomic-write.ts +320 -0
- package/src/shared/bounded-serialize.ts +154 -0
- package/src/shared/injection-render.ts +279 -0
- package/src/shared/meta-parser.ts +41 -1
- package/src/shared/resource-discovery.ts +104 -37
- package/src/shared/resource-meta.ts +14 -0
- package/src/shared/xml-injection.ts +9 -9
- package/workflows/README.md +9 -9
- package/workflows/chain.js +4 -2
- package/workflows/map-reduce.js +5 -3
- package/workflows/parallel.js +5 -3
- package/workflows/review-fix-loop-utils.cjs +14 -3
- package/workflows/review-fix-loop.js +18 -7
- package/workflows/scatter-gather.js +4 -2
- package/dist/chunk-3VOERJPJ.js +0 -22
package/workflows/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 内置通用编排 Workflow
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
5 个开箱即用的通用 subagent 编排 workflow,覆盖日常常见的多 agent 协作模式。每个脚本用 `agent()`/`parallel()` 自包含实现,`workflow run <name>` 直接执行,无需额外定义子 workflow。
|
|
4
4
|
|
|
5
5
|
## 文件清单
|
|
6
6
|
|
|
@@ -56,26 +56,26 @@ workflow run map-reduce --args itemsJson=/path/to/items.json --args operation=".
|
|
|
56
56
|
|
|
57
57
|
```
|
|
58
58
|
workflow run review-fix-loop --args targetType=git-diff target=main \
|
|
59
|
-
--args
|
|
59
|
+
--args fallowScan=true --args batch1=/path/to/reviewer.md --args autoCommit=true
|
|
60
60
|
workflow run review-fix-loop --args targetType=file target=/path/to/doc.md \
|
|
61
|
-
--args batch1
|
|
61
|
+
--args batch1=/path/to/doc-reviewer.md
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
- `targetType` 枚举:`git-diff`(target=base ref)/ `file`(target=路径)/ `dir`(target=目录)/ `text`(target=自由描述)
|
|
65
65
|
- `batch1..batchN`:批串行,批内并行 review → aggregate → fix → 重审直到 clean;批次用于前置依赖(如 `fallow-scan` 静态分析先行,后续审查才有意义)
|
|
66
66
|
- 批内某 agent 无 must-fix 后后续轮跳过(`skipCleanAgents` 默认 true + `recheckAfterFix` 默认 false):clean agent 下轮跳过不重派;显式传 `recheckAfterFix=true` 启用强回归模式——fix 后重派全批,clean agent 走限定 prompt(只审 modifiedFiles ∪ 自检关联点,不诱导全量重扫)
|
|
67
|
-
- agent
|
|
68
|
-
- `fixAgent`(可选):fix 阶段加载指定 agent
|
|
67
|
+
- agent 项仅支持 .md 文件绝对路径(如 `batch1=/path/to/reviewer.md`,`~/` 前缀可展开;内置角色取 <available_subagents> 注入的 <location> 路径,名字只是展示标签,裸名会被拒);`fallow-scan` 静态分析不走 agent 项——由独立参数 `fallowScan=true` 前置插入首批(不占 batchN);**内置 `doc-reviewer`**(文档场景推荐:`targetType=file/dir` + `batch1=<doc-reviewer.md 的注入路径>`,四遍审查方法论:事实锚点核实/逻辑断言验证/落地清单完备性/边界与迁移;不写文件,报告经 schema 返回由 workflow 落盘)
|
|
68
|
+
- `fixAgent`(可选):fix 阶段加载指定 agent(.md 绝对路径,值语义同 batchN 的 agent 项);代码场景可在该 agent.md 内写 verify 命令(typecheck/test 实测)当轮拦截编译类回归。⚠️ agent.md 内写的 verify 命令**必须确认能在目标项目可运行**(target 的包管理器/目录结构未知),否则命令失败会误报 fix 状态
|
|
69
69
|
- `maxFixAttempts`(可选,默认 2):needs-redesign 阈值。问题经 maxFixAttempts 次修复仍未收敛(regressed)→ 终止该批,terminated="needs-redesign"(结构性问题需人工介入,非继续补丁能解决)
|
|
70
70
|
- `convergeNewIssues`(可选,默认 1)+ `convergeRounds`(可选,默认 2):新发现率收敛阈值。连续 convergeRounds 轮新发现问题 ≤ convergeNewIssues **且**无 open/regressed 活跃条目 → terminated="converged"(推进下一批)。收敛不等于问题全清——需同时满足无活跃条目才终止
|
|
71
71
|
- ⚠️ **fix 阶段会修改文件;`autoCommit` 默认 false(不 commit)**,需要提交时显式 `autoCommit=true`
|
|
72
72
|
|
|
73
73
|
## 编排 API
|
|
74
74
|
|
|
75
|
-
这些 workflow 内部使用的编排函数(`agent()` / `parallel()` / `pipeline()` / `workflow()`)由 worker 线程注入,完整 API 参考见
|
|
75
|
+
这些 workflow 内部使用的编排函数(`agent()` / `parallel()` / `pipeline()` / `workflow()`)由 worker 线程注入,完整 API 参考见 workflow-script-format SKILL.md——该文档位于 pi 侧 subagent-workflow extension 内(`extensions/universal/subagent-workflow/skills/workflow-script-format/SKILL.md`,相对 pi extension 包根解析),**不是本包资产**,本包内无对应路径。
|
|
76
76
|
|
|
77
77
|
## 相关文档
|
|
78
78
|
|
|
79
|
-
-
|
|
80
|
-
- `docs/extensions/adr/pi-ext-030-subagents-workflow-merge.md
|
|
81
|
-
- `docs/extensions/adr/pi-ext-032-builtin-orchestration-workflows.md
|
|
79
|
+
- workflow-script-format SKILL.md(位于 pi 侧 subagent-workflow extension,`extensions/universal/subagent-workflow/skills/workflow-script-format/`,非本包资产)— workflow script 完整 API(agent/parallel/pipeline/workflow 签名、$ARGS/$BUDGET、lint 规则)
|
|
80
|
+
- `docs/extensions/adr/pi-ext-030-subagents-workflow-merge.md`(位于 workspace 仓根,非本包内路径)— 合并决策(决策 3 分层配额 + workflow 嵌套)
|
|
81
|
+
- `docs/extensions/adr/pi-ext-032-builtin-orchestration-workflows.md`(位于 workspace 仓根,非本包内路径)— 从"参考模板"改为"内置通用编排 workflow"的决策
|
package/workflows/chain.js
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
// 适用于需要"先分析、再变换、最后综合"的多阶段任务。
|
|
5
5
|
//
|
|
6
6
|
// 用法:
|
|
7
|
-
// workflow run chain --args task="把这段需求文档拆成技术任务:..."
|
|
7
|
+
// workflow run chain --args task="把这段需求文档拆成技术任务:..."(pi 宿主语法)
|
|
8
|
+
// zsw workflow --workflow chain --task "<任务书>" --workdir <绝对路径>(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际执行以 SessionStart 注入段的 node "<绝对路径>/bin/zsw.js" 形态为准;per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
8
9
|
//
|
|
9
10
|
// ⚠️ lintScript 约束(本脚本已遵守):
|
|
10
11
|
// - 含 agent() 入口
|
|
@@ -25,7 +26,8 @@ usage: |
|
|
|
25
26
|
## 使用说明
|
|
26
27
|
- 顺序三步链:analyze(提取要点)→ transform(产出方案)→ synthesize(合成结论)
|
|
27
28
|
- agents:逗号分隔的 agent .md 绝对路径,按顺序对应三步(少于 3 个尾部用默认执行者)
|
|
28
|
-
-
|
|
29
|
+
- 示例(pi 宿主语法):workflow run chain --args task="<任务描述>" agents="/path/analyzer.md,/path/planner.md"
|
|
30
|
+
- 示例(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际以注入段 node "<绝对路径>/bin/zsw.js" 形态为准):zsw workflow --workflow chain --task "<任务描述>" --workdir <绝对路径>(per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
29
31
|
*/
|
|
30
32
|
|
|
31
33
|
// ── 入参($ARGS)──────────────────────────────────────────────────
|
package/workflows/map-reduce.js
CHANGED
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
// map-reduce 强调对"已知 items 数组"的变换+聚合(items 已有,map 变换、reduce 归约)。
|
|
9
9
|
//
|
|
10
10
|
// 用法:
|
|
11
|
-
// workflow run map-reduce --args 'items=["file1.ts","file2.ts","file3.ts"]' --args operation="审查代码风格"
|
|
12
|
-
// workflow run map-reduce --args itemsJson=/path/to/items.json --args operation="..."
|
|
11
|
+
// workflow run map-reduce --args 'items=["file1.ts","file2.ts","file3.ts"]' --args operation="审查代码风格"(pi 宿主语法)
|
|
12
|
+
// workflow run map-reduce --args itemsJson=/path/to/items.json --args operation="..."(pi 宿主语法)
|
|
13
|
+
// zsw workflow --workflow map-reduce --task "<任务书>" --workdir <绝对路径>(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际执行以 SessionStart 注入段的 node "<绝对路径>/bin/zsw.js" 形态为准;per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
13
14
|
//
|
|
14
15
|
// ⚠️ lintScript 约束(本脚本已遵守):含 parallel() 入口(兼 agent 嵌套),禁止 bare IIFE
|
|
15
16
|
|
|
@@ -32,7 +33,8 @@ usage: |
|
|
|
32
33
|
## 使用说明
|
|
33
34
|
- items 与 itemsJson 至少一个:items 直接传字符串数组,itemsJson 传文件路径(内容为 JSON 数组)
|
|
34
35
|
- agents:逗号分隔的 agent .md 绝对路径,按顺序对应 map/reduce 两段
|
|
35
|
-
-
|
|
36
|
+
- 示例(pi 宿主语法):workflow run map-reduce --args operation="<对每个 item 做什么>" itemsJson="/path/items.json" agents="/path/mapper.md,/path/reducer.md"
|
|
37
|
+
- 示例(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际以注入段 node "<绝对路径>/bin/zsw.js" 形态为准):zsw workflow --workflow map-reduce --task "<任务书>" --workdir <绝对路径>(per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
36
38
|
*/
|
|
37
39
|
|
|
38
40
|
const fs = require("fs");
|
package/workflows/parallel.js
CHANGED
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
// 适用于需要多维度评估(安全/性能/可维护性等)的场景。
|
|
5
5
|
//
|
|
6
6
|
// 用法:
|
|
7
|
-
// workflow run parallel --args target="src/auth/login.ts"
|
|
8
|
-
// workflow run parallel --args target="..." --args 'perspectives=["security","readability"]'
|
|
7
|
+
// workflow run parallel --args target="src/auth/login.ts"(pi 宿主语法)
|
|
8
|
+
// workflow run parallel --args target="..." --args 'perspectives=["security","readability"]'(pi 宿主语法)
|
|
9
|
+
// zsw workflow --workflow parallel --task "<分析目标>" --workdir <绝对路径>(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际执行以 SessionStart 注入段的 node "<绝对路径>/bin/zsw.js" 形态为准;per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
9
10
|
//
|
|
10
11
|
// ⚠️ 分层配额规则(来源:ADR-030 决策 3):
|
|
11
12
|
// - 全局并发上限 maxConcurrent = 6
|
|
@@ -29,7 +30,8 @@ usage: |
|
|
|
29
30
|
## 使用说明
|
|
30
31
|
- 多视角并行分析后聚合;perspectives 缺省用 3 个默认视角
|
|
31
32
|
- agents:逗号分隔的 agent .md 绝对路径;1 个应用于所有视角,N 个一一对应视角数
|
|
32
|
-
-
|
|
33
|
+
- 示例(pi 宿主语法):workflow run parallel --args target="<分析目标>" agents="/path/analyst.md"
|
|
34
|
+
- 示例(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际以注入段 node "<绝对路径>/bin/zsw.js" 形态为准):zsw workflow --workflow parallel --task "<分析目标>" --workdir <绝对路径>(per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
33
35
|
*/
|
|
34
36
|
|
|
35
37
|
// ── 入参($ARGS)──────────────────────────────────────────────────
|
|
@@ -310,10 +310,16 @@ function normIssueId(s) {
|
|
|
310
310
|
* fix 阶段(fix-attempted/deferred 标记)与 ES3 校验共用——精确键查表会把
|
|
311
311
|
* "mf-1"/"MF-1 (fixed)" 等漂移 ID 判为未追踪,导致 fix-attempted → fixed/regressed
|
|
312
312
|
* → needs-redesign 状态链静默失效;deferred 侧漂移则创建幽灵条目(原条目仍 open 阻塞收敛)。
|
|
313
|
+
*
|
|
314
|
+
* 首查必须 Object.hasOwn(上收 zsw 侧同款修复):truthy 查表(issues[issueId])会让
|
|
315
|
+
* 原型链键("__proto__"/"toString"/"constructor")误命中——ID 来自 LLM 产出,攻击面
|
|
316
|
+
* 真实存在;误命中会把非 own 键当台账键返回,后续 issues[key].severity 读取原型
|
|
317
|
+
* 成员(undefined 或函数)污染 fix 对账。归一化回退段的 Object.keys 只枚举 own 键,
|
|
318
|
+
* 本就无此问题。
|
|
313
319
|
*/
|
|
314
320
|
function findIssueKey(issues, issueId) {
|
|
315
321
|
if (!issues || typeof issueId !== "string" || !issueId) return undefined;
|
|
316
|
-
if (issues
|
|
322
|
+
if (Object.hasOwn(issues, issueId)) return issueId;
|
|
317
323
|
const norm = normIssueId(issueId);
|
|
318
324
|
if (!norm) return undefined;
|
|
319
325
|
for (const key of Object.keys(issues)) {
|
|
@@ -785,7 +791,9 @@ function resolveIssueIdentity(entry, { issues, dormant }) {
|
|
|
785
791
|
*/
|
|
786
792
|
function translateId(idMap, id, issues) {
|
|
787
793
|
if (typeof id !== "string" || !id) return id;
|
|
788
|
-
|
|
794
|
+
// Object.hasOwn:truthy 查表会让原型链键("__proto__"/"toString")误判为台账键
|
|
795
|
+
// 直接返回,跳过 idMap 翻译(与 findIssueKey 同款加固,nextFreeId 键空间同理)。
|
|
796
|
+
if (issues && Object.hasOwn(issues, id)) return id;
|
|
789
797
|
if (idMap && Object.prototype.hasOwnProperty.call(idMap, id)) return idMap[id];
|
|
790
798
|
return id;
|
|
791
799
|
}
|
|
@@ -1417,7 +1425,10 @@ const FALLOW_DEF = { name: "fallow-scan", title: "FALLOW STATIC ANALYSIS", repor
|
|
|
1417
1425
|
*
|
|
1418
1426
|
* - def 只含标识(path/name/report/title),**不读文件**——agent 内容的加载与 systemPrompt
|
|
1419
1427
|
* 注入由主线程 resolveAgentOpts(agent-call 按 path 加载)统一完成
|
|
1420
|
-
* - `fallow-scan` 是脚本内部保留字(fallowScan
|
|
1428
|
+
* - `fallow-scan` 是脚本内部保留字(fallowScan 参数前置插入的首批),非用户参数值域:
|
|
1429
|
+
* 本函数对字面值仍静默映射 FALLOW_DEF(fallowScan 前置批与 batchN 兼容形态依赖此
|
|
1430
|
+
* 映射),用户参数侧的拒收在脚本层——fixAgent=fallow-scan 由 review-fix-loop.js
|
|
1431
|
+
* 在调用本函数前 fail-fast(RX2-F2),防 fix 派发静默退化为通用 subagent
|
|
1421
1432
|
* @param batchNames 批内 agentRef 路径数组
|
|
1422
1433
|
*/
|
|
1423
1434
|
function resolveAgentDefs(batchNames) {
|
|
@@ -22,9 +22,10 @@
|
|
|
22
22
|
//
|
|
23
23
|
// 用法:
|
|
24
24
|
// workflow run review-fix-loop --args targetType=git-diff target=main \
|
|
25
|
-
// batch1="/path/reviewer-a.md,/path/reviewer-b.md" autoCommit=true
|
|
25
|
+
// batch1="/path/reviewer-a.md,/path/reviewer-b.md" autoCommit=true(pi 宿主语法)
|
|
26
26
|
// workflow run review-fix-loop --args targetType=file target=/path/to/doc.md \
|
|
27
|
-
// batch1="/path/doc-reviewer.md" autoCommit=false
|
|
27
|
+
// batch1="/path/doc-reviewer.md" autoCommit=false(pi 宿主语法)
|
|
28
|
+
// zsw workflow --workflow review-fix-loop --task "<任务书>" --workdir <绝对路径>(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际执行以 SessionStart 注入段的 node "<绝对路径>/bin/zsw.js" 形态为准;per-workflow 参数用 zsw 专属 flag --target-type/--target/--batch1 等,语义见 @pi-meta parameters)
|
|
28
29
|
//
|
|
29
30
|
// S4 路径统一:batch1..batchN/fixAgent 值 = agentRef(.md 绝对路径,<available_subagents> 的
|
|
30
31
|
// <location>);fallowScan=true 独立参数前置插入静态分析批次(不占 batchN)。
|
|
@@ -75,7 +76,8 @@ usage: |
|
|
|
75
76
|
- batch1..batchN 与 agents 互斥(至少传一个 batchN);值 = agentRef(.md 绝对路径,<available_subagents> 的 <location>)
|
|
76
77
|
- fixAgent:fix 阶段执行者(agentRef),缺省用通用 subagent + 内联 fixPrompt
|
|
77
78
|
- fallowScan=true 仅 targetType=git-diff 合法(前置静态分析批次,不占 batchN)
|
|
78
|
-
-
|
|
79
|
+
- 示例(pi 宿主语法):workflow run review-fix-loop --args targetType=git-diff target=main batch1="/path/fallow-agent.md,/path/reviewer.md" autoCommit=true
|
|
80
|
+
- 示例(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际以注入段 node "<绝对路径>/bin/zsw.js" 形态为准):zsw workflow --workflow review-fix-loop --task "<任务书>" --workdir <绝对路径>(per-workflow 参数用 zsw 专属 flag --target-type/--target/--batch1 等,语义见 @pi-meta parameters)
|
|
79
81
|
*/
|
|
80
82
|
|
|
81
83
|
// ── 参数解析 + 白名单校验(fail-fast) ────────────────────────────
|
|
@@ -187,11 +189,18 @@ const skipCleanAgents = coerceBool($ARGS.skipCleanAgents, true);
|
|
|
187
189
|
// RC-5(fix 后全批全量重审放大 token)在默认场景消失。传 true 启用可选强回归模式:fix 后重派
|
|
188
190
|
// 全批,clean agent 走限定 prompt(buildScopedRecheckPrompt,只审 modifiedFiles,5.5)。
|
|
189
191
|
const recheckAfterFix = coerceBool($ARGS.recheckAfterFix, false);
|
|
190
|
-
// fixAgent(5.3
|
|
191
|
-
// resolveAgentDefs
|
|
192
|
-
//
|
|
192
|
+
// fixAgent(5.3):值 = .md 绝对路径(同 batchN 的 agent 项值域);`fallow-scan` 是
|
|
193
|
+
// fallowScan 参数的内部保留字,显式拒收(RX2-F2)——resolveAgentDefs 对它会静默映射
|
|
194
|
+
// 为内置工具型 FALLOW_DEF(无 path),fix 派发即退化为通用 subagent + 内联 prompt,
|
|
195
|
+
// 与「不属于 fixAgent 值域」相悖,故在解析前 fail-fast。其余合法值解析复用
|
|
196
|
+
// resolveAgentDefs 白名单与加载逻辑:传入时 fix 阶段用 agent({agent: ...}) 派发
|
|
197
|
+
// (代码场景的 verify 命令写在该 agent.md 内);未传保持现状(通用 subagent + 内联 prompt)。
|
|
193
198
|
const FIX_AGENT_RAW = typeof $ARGS.fixAgent === "string" && $ARGS.fixAgent.trim()
|
|
194
199
|
? $ARGS.fixAgent.trim() : undefined;
|
|
200
|
+
if (FIX_AGENT_RAW === "fallow-scan") {
|
|
201
|
+
fail("fixAgent=fallow-scan 是内部保留字:fallow-scan 是 fallowScan 前置批次的内部标记,不属于 fixAgent 值域。" +
|
|
202
|
+
"要跑 fallow 静态分析前置批请用参数 fallowScan=true(需 targetType=git-diff);要指定 fix 执行者请传 agent .md 绝对路径。");
|
|
203
|
+
}
|
|
195
204
|
const FIX_DEF = FIX_AGENT_RAW ? resolveAgentDefs([FIX_AGENT_RAW])[0] : null;
|
|
196
205
|
// 5.7 收敛终止参数:maxFixAttempts(needs-redesign 阈值,RC-7)/ convergeNewIssues +
|
|
197
206
|
// convergeRounds(新发现率收敛阈值)
|
|
@@ -1039,7 +1048,9 @@ for (let batchIndex = 1; batchIndex <= BATCHES.length; batchIndex++) {
|
|
|
1039
1048
|
const r1IdMap = {};
|
|
1040
1049
|
for (const entry of agg.must_fix_ids) {
|
|
1041
1050
|
const id = typeof entry === "string" ? entry : entry && entry.id;
|
|
1042
|
-
|
|
1051
|
+
// Object.hasOwn:truthy 查表会让原型链键("__proto__"/"toString")误判已登记
|
|
1052
|
+
// 而 continue 跳过真实条目(与 utils findIssueKey 同款加固;id 来自 LLM 产出)。
|
|
1053
|
+
if (!id || Object.hasOwn(state.issues, id)) continue;
|
|
1043
1054
|
if (!activeIds.has(id)) continue;
|
|
1044
1055
|
const resolved = resolveIssueIdentity(
|
|
1045
1056
|
typeof entry === "string" ? { id } : entry,
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
// 适用于"任务太大需要先拆分再并行处理"的场景。
|
|
9
9
|
//
|
|
10
10
|
// 用法:
|
|
11
|
-
// workflow run scatter-gather --args task="重构认证模块,涉及 session/jwt/oauth 三块"
|
|
11
|
+
// workflow run scatter-gather --args task="重构认证模块,涉及 session/jwt/oauth 三块"(pi 宿主语法)
|
|
12
|
+
// zsw workflow --workflow scatter-gather --task "<大任务描述>" --workdir <绝对路径>(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际执行以 SessionStart 注入段的 node "<绝对路径>/bin/zsw.js" 形态为准;per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
12
13
|
//
|
|
13
14
|
// ⚠️ lintScript 约束(本脚本已遵守):含 parallel() 入口(兼 agent 嵌套),禁止 bare IIFE
|
|
14
15
|
|
|
@@ -26,7 +27,8 @@ usage: |
|
|
|
26
27
|
## 使用说明
|
|
27
28
|
- scatter 拆解大任务 → process 并行处理 → gather 聚合结果
|
|
28
29
|
- agents:逗号分隔的 agent .md 绝对路径,按顺序对应 scatter/process/gather 三段
|
|
29
|
-
-
|
|
30
|
+
- 示例(pi 宿主语法):workflow run scatter-gather --args task="<大任务描述>" agents="/path/splitter.md,/path/processor.md"
|
|
31
|
+
- 示例(zsw 宿主直参语法;`zsw` 为 CLI 简写,实际以注入段 node "<绝对路径>/bin/zsw.js" 形态为准):zsw workflow --workflow scatter-gather --task "<大任务描述>" --workdir <绝对路径>(per-workflow 参数用 zsw 专属 flag,语义见 @pi-meta parameters)
|
|
30
32
|
*/
|
|
31
33
|
|
|
32
34
|
// ── 入参($ARGS)──────────────────────────────────────────────────
|
package/dist/chunk-3VOERJPJ.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// src/execution/engine/engines/zcode/constants.ts
|
|
2
|
-
var ZCODE_ENGINE_ID = "zcode";
|
|
3
|
-
var ZCODE_ADAPTER_VERSION = "1.0.0";
|
|
4
|
-
var ZCODE_CLI_DEFAULT_PATH = "/Applications/ZCode.app/Contents/Resources/glm/zcode.cjs";
|
|
5
|
-
var ZCODE_V2_CONFIG_PATH_SUFFIX = [".zcode", "v2", "config.json"];
|
|
6
|
-
var ZCODE_POOL_CONFIG_SUFFIX = [".zcode", "cli", "config.json"];
|
|
7
|
-
var ZCODE_POOL_DB_RELATIVE_PATH = ".zcode/cli/db/db.sqlite";
|
|
8
|
-
var ZCODE_FALLBACK_DEFAULT_MODEL = "builtin:bigmodel-coding-plan/GLM-5.3";
|
|
9
|
-
var ZCODE_KILL_GRACE_MS = 5e3;
|
|
10
|
-
var ZCODE_ERROR_TAIL_CHARS = 2e3;
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
ZCODE_ENGINE_ID,
|
|
14
|
-
ZCODE_ADAPTER_VERSION,
|
|
15
|
-
ZCODE_CLI_DEFAULT_PATH,
|
|
16
|
-
ZCODE_V2_CONFIG_PATH_SUFFIX,
|
|
17
|
-
ZCODE_POOL_CONFIG_SUFFIX,
|
|
18
|
-
ZCODE_POOL_DB_RELATIVE_PATH,
|
|
19
|
-
ZCODE_FALLBACK_DEFAULT_MODEL,
|
|
20
|
-
ZCODE_KILL_GRACE_MS,
|
|
21
|
-
ZCODE_ERROR_TAIL_CHARS
|
|
22
|
-
};
|