@zhushanwen/subagent-core 0.2.0 → 0.5.1

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 (347) hide show
  1. package/README.md +45 -2
  2. package/agents/analyst.md +60 -0
  3. package/agents/coder.md +69 -0
  4. package/agents/debugger.md +66 -0
  5. package/agents/doc-reviewer.md +49 -0
  6. package/agents/explorer.md +63 -0
  7. package/agents/general-purpose.md +32 -0
  8. package/agents/orchestrator.md +61 -0
  9. package/agents/planner.md +53 -0
  10. package/agents/researcher.md +67 -0
  11. package/agents/reviewer.md +73 -0
  12. package/dist/chunk-43ONBFZX.js +240 -0
  13. package/dist/chunk-APZY4IME.js +27 -0
  14. package/dist/chunk-V3VHZ2VX.js +59 -0
  15. package/dist/execution/engine/engines/zcode/constants.cjs +62 -9
  16. package/dist/execution/engine/engines/zcode/constants.d.cts +116 -12
  17. package/dist/execution/engine/engines/zcode/constants.d.ts +116 -12
  18. package/dist/execution/engine/engines/zcode/constants.js +39 -7
  19. package/dist/execution/engine/engines/zcode/reader.d.cts +2 -1
  20. package/dist/execution/engine/engines/zcode/reader.d.ts +2 -1
  21. package/dist/execution/engine/engines/zcode/reader.js +4 -234
  22. package/dist/execution/engine/paths.js +7 -19
  23. package/dist/index.cjs +18234 -1277
  24. package/dist/index.d.cts +5646 -673
  25. package/dist/index.d.ts +5646 -673
  26. package/dist/index.js +17828 -1277
  27. package/dist/{types-BxyAidGf.d.cts → types-Dv4QhSJ_.d.cts} +678 -112
  28. package/dist/{types-BxyAidGf.d.ts → types-Dv4QhSJ_.d.ts} +678 -112
  29. package/package.json +7 -4
  30. package/src/__tests__/agent-opts-resolver-schema-prompt.test.ts +0 -1
  31. package/src/__tests__/append-system-prompt-assembly.test.ts +8 -7
  32. package/src/__tests__/fr4-get-state-handshake.test.ts +2 -2
  33. package/src/__tests__/m2-append-content-probe.test.ts +0 -1
  34. package/src/__tests__/manifest-store.test.ts +10 -9
  35. package/src/__tests__/record-store-cache.test.ts +0 -2
  36. package/src/__tests__/record-store-index.test.ts +1 -2
  37. package/src/__tests__/review-fix-loop-script.test.ts +93 -3
  38. package/src/__tests__/review-fix-loop-utils.test.ts +31 -10
  39. package/src/__tests__/robustness-low-batch1.test.ts +6 -5
  40. package/src/__tests__/robustness-medium-batch1.test.ts +2 -2
  41. package/src/__tests__/robustness-medium-batch2.test.ts +17 -6
  42. package/src/__tests__/robustness-medium-batch4.test.ts +2 -2
  43. package/src/__tests__/session-runner.test.ts +1 -1
  44. package/src/__tests__/smoke.test.ts +9 -2
  45. package/src/core/__tests__/host-services.test.ts +2 -2
  46. package/src/core/__tests__/logger.test.ts +1 -1
  47. package/src/core/error-message.ts +9 -0
  48. package/src/core/host-services.ts +21 -5
  49. package/src/core/notify-ports.ts +18 -5
  50. package/src/execution/__tests__/agent-profile.test.ts +232 -0
  51. package/src/execution/__tests__/agent-registry.test.ts +370 -0
  52. package/src/execution/__tests__/agent-result-mapper.test.ts +18 -2
  53. package/src/execution/__tests__/agents-assembly.test.ts +219 -0
  54. package/src/execution/__tests__/ask-user-transit-e2e.test.ts +6 -6
  55. package/src/execution/__tests__/chat-engine-routing.test.ts +136 -30
  56. package/src/execution/__tests__/chatmode-first-round-closure-spawn.test.ts +5 -4
  57. package/src/execution/__tests__/cold-resurrect.test.ts +283 -0
  58. package/src/execution/__tests__/create-concurrency-pool.test.ts +194 -0
  59. package/src/execution/__tests__/delivery-methods.test.ts +77 -62
  60. package/src/execution/__tests__/descendant-sweep-guards.test.ts +220 -0
  61. package/src/execution/__tests__/descendant-sweep.test.ts +269 -0
  62. package/src/execution/__tests__/dialog-queue.test.ts +199 -1
  63. package/src/execution/__tests__/engine-model-validation.test.ts +741 -0
  64. package/src/execution/__tests__/epipe-fallback.test.ts +31 -24
  65. package/src/execution/__tests__/execute-and-await-worktree.test.ts +21 -91
  66. package/src/execution/__tests__/execute-nesting.test.ts +34 -188
  67. package/src/execution/__tests__/execution-record.test.ts +217 -60
  68. package/src/execution/__tests__/execution-runtime-face.test.ts +272 -0
  69. package/src/execution/__tests__/explicit-agent-ref-guard.test.ts +3 -3
  70. package/src/execution/__tests__/finalize-record.test.ts +278 -16
  71. package/src/execution/__tests__/gc-timer.test.ts +57 -2
  72. package/src/execution/__tests__/get-record-for-action-restart.test.ts +14 -12
  73. package/src/execution/__tests__/get-state-handshake.test.ts +127 -0
  74. package/src/execution/__tests__/helpers/mock-extension-api.ts +1 -1
  75. package/src/execution/__tests__/helpers/session-runner-mocks.ts +113 -0
  76. package/src/execution/__tests__/helpers/spawn-mock.ts +150 -3
  77. package/src/execution/__tests__/helpers/subagent-service-mocks.ts +137 -0
  78. package/src/execution/__tests__/keep-alive-no-progress.test.ts +280 -0
  79. package/src/execution/__tests__/kill-all-escalation.test.ts +196 -0
  80. package/src/execution/__tests__/lifecycle-manager-idle-timer-identity.test.ts +117 -0
  81. package/src/execution/__tests__/lifecycle-manager.test.ts +39 -0
  82. package/src/execution/__tests__/lifecycle-predicates.test.ts +1 -2
  83. package/src/execution/__tests__/manifest-parentid.test.ts +4 -4
  84. package/src/execution/__tests__/manifest-store-tmp-recovery.test.ts +99 -0
  85. package/src/execution/__tests__/max-turns-to-watchdog-ms.test.ts +113 -0
  86. package/src/execution/__tests__/model-resolver.test.ts +2 -2
  87. package/src/execution/__tests__/nested-visibility-env-propagation.test.ts +23 -121
  88. package/src/execution/__tests__/nested-visibility.test.ts +2 -0
  89. package/src/execution/__tests__/notify-ledger.test.ts +1249 -0
  90. package/src/execution/__tests__/output-collector.test.ts +117 -6
  91. package/src/execution/__tests__/pi-invocation.test.ts +1 -1
  92. package/src/execution/__tests__/record-store-orphan-revive.test.ts +159 -0
  93. package/src/execution/__tests__/record-store.test.ts +89 -5
  94. package/src/execution/__tests__/records-cwd-isolation.test.ts +2 -2
  95. package/src/execution/__tests__/recursive-visibility-baseline.test.ts +29 -132
  96. package/src/execution/__tests__/recursive-visibility-env.test.ts +55 -179
  97. package/src/execution/__tests__/rpc-mode.test.ts +2 -2
  98. package/src/execution/__tests__/run-and-finalize-anchoring.test.ts +387 -0
  99. package/src/execution/__tests__/run-and-finalize-chatmode.test.ts +19 -9
  100. package/src/execution/__tests__/run-spawn-chatmode-settled.test.ts +5 -4
  101. package/src/execution/__tests__/run-spawn-edges.test.ts +418 -26
  102. package/src/execution/__tests__/run-spawn-integration.test.ts +3 -3
  103. package/src/execution/__tests__/run-spawn-resume.test.ts +2 -2
  104. package/src/execution/__tests__/run-spawn-rpc-mode.test.ts +2 -2
  105. package/src/execution/__tests__/run-spawn-stdout-callback-throw.test.ts +16 -8
  106. package/src/execution/__tests__/service-kill-escalation.test.ts +91 -0
  107. package/src/execution/__tests__/session-context-resolver.test.ts +0 -2
  108. package/src/execution/__tests__/session-file-gc.test.ts +35 -0
  109. package/src/execution/__tests__/session-pending.test.ts +471 -0
  110. package/src/execution/__tests__/session-reconstructor.test.ts +366 -15
  111. package/src/execution/__tests__/session-runner-branch-cache-lru.test.ts +110 -0
  112. package/src/execution/__tests__/session-runner-close-prune.test.ts +181 -0
  113. package/src/execution/__tests__/session-runner-dispatch.test.ts +489 -0
  114. package/src/execution/__tests__/session-runner-epipe.test.ts +4 -3
  115. package/src/execution/__tests__/session-runner-heartbeat-idle-fallback.test.ts +227 -0
  116. package/src/execution/__tests__/session-runner-lifecycle-helpers.test.ts +290 -0
  117. package/src/execution/__tests__/session-runner-schema-env.test.ts +7 -5
  118. package/src/execution/__tests__/settled-watchdog.test.ts +524 -0
  119. package/src/execution/__tests__/spawn-args.test.ts +11 -10
  120. package/src/execution/__tests__/spawn-event-adapter-rpc.test.ts +26 -23
  121. package/src/execution/__tests__/spawn-event-adapter.test.ts +1 -1
  122. package/src/execution/__tests__/spawn-worktree-guidance.test.ts +5 -4
  123. package/src/execution/__tests__/spawned-children.test.ts +155 -11
  124. package/src/execution/__tests__/start-sync-model-guard.test.ts +4 -4
  125. package/src/execution/__tests__/stdin-writer.test.ts +6 -4
  126. package/src/execution/__tests__/stream-sink-retirement.test.ts +6 -6
  127. package/src/execution/__tests__/subagent-actions-core.test.ts +1017 -0
  128. package/src/execution/__tests__/subagent-service-message-close.test.ts +99 -35
  129. package/src/execution/__tests__/subagent-service-multiproc-guard.test.ts +174 -0
  130. package/src/execution/__tests__/subagent-service-notify-gate.test.ts +271 -0
  131. package/src/execution/__tests__/subagent-service-parent-guard.test.ts +33 -29
  132. package/src/execution/__tests__/subagent-service-recovery-bounds.test.ts +341 -0
  133. package/src/execution/__tests__/subagent-service.test.ts +37 -30
  134. package/src/execution/__tests__/subprocess-agent-runner-routing.test.ts +88 -12
  135. package/src/execution/__tests__/subprocess-agent-runner-timeout.test.ts +75 -0
  136. package/src/execution/__tests__/subprocess-agent-runner.test.ts +22 -20
  137. package/src/execution/__tests__/temp-prompt.test.ts +1 -1
  138. package/src/execution/__tests__/timeout-integration.test.ts +13 -12
  139. package/src/execution/__tests__/turn-limiter-semantics.test.ts +1 -1
  140. package/src/execution/__tests__/turn-limiter.test.ts +1 -1
  141. package/src/execution/__tests__/ui-request-handler-factory.test.ts +107 -7
  142. package/src/execution/__tests__/ui-request-handler.test.ts +4 -3
  143. package/src/execution/__tests__/ui-request-queue.test.ts +167 -2
  144. package/src/execution/__tests__/worktree-git-ops.test.ts +571 -0
  145. package/src/execution/__tests__/worktree-manager.test.ts +14 -5
  146. package/src/execution/__tests__/worktree-pid-registration.integration.test.ts +4 -3
  147. package/src/execution/__tests__/worktree-reconcile-aging.test.ts +204 -0
  148. package/src/execution/agent-registry.ts +298 -30
  149. package/src/execution/agent-result-mapper.ts +3 -0
  150. package/src/execution/agents-assembly.ts +88 -0
  151. package/src/execution/cold-resurrect.ts +199 -0
  152. package/src/execution/concurrency-pool.ts +71 -9
  153. package/src/execution/dialog-queue.ts +101 -3
  154. package/src/execution/engine/__tests__/common/capability-gate.test.ts +91 -0
  155. package/src/execution/engine/__tests__/common/data-dir.test.ts +1 -1
  156. package/src/execution/engine/__tests__/common/journal-wiring.test.ts +84 -0
  157. package/src/execution/engine/__tests__/common/kill-chain.test.ts +34 -7
  158. package/src/execution/engine/__tests__/common/persona-router.test.ts +4 -5
  159. package/src/execution/engine/__tests__/common/pool-manager.test.ts +211 -51
  160. package/src/execution/engine/__tests__/common/session-view-service-zcode-dbpath.test.ts +149 -0
  161. package/src/execution/engine/__tests__/common/session-view-service.test.ts +499 -0
  162. package/src/execution/engine/__tests__/conformance/contract.abort.test.ts +56 -99
  163. package/src/execution/engine/__tests__/conformance/contract.agent-events.test.ts +88 -15
  164. package/src/execution/engine/__tests__/conformance/engine-conformance.live.test.ts +33 -7
  165. package/src/execution/engine/__tests__/conformance/golden-replay.pi.test.ts +1 -1
  166. package/src/execution/engine/__tests__/conformance/golden-replay.zcode.test.ts +75 -54
  167. package/src/execution/engine/__tests__/conformance/zcode-appserver-harness.ts +128 -0
  168. package/src/execution/engine/__tests__/engine-discovery.test.ts +15 -3
  169. package/src/execution/engine/__tests__/model-prompt.test.ts +15 -3
  170. package/src/execution/engine/__tests__/registry.test.ts +94 -3
  171. package/src/execution/engine/__tests__/routing.test.ts +115 -6
  172. package/src/execution/engine/common/capability-gate.ts +92 -0
  173. package/src/execution/engine/common/journal-wiring.ts +97 -0
  174. package/src/execution/engine/common/kill-chain.ts +42 -10
  175. package/src/execution/engine/common/nesting-guard.ts +66 -0
  176. package/src/execution/engine/common/persona-router.ts +18 -8
  177. package/src/execution/engine/common/pool-manager.ts +332 -78
  178. package/src/execution/engine/common/session-view-service.ts +506 -0
  179. package/src/execution/engine/common/session-view-types.ts +125 -0
  180. package/src/execution/engine/engine-discovery.ts +12 -16
  181. package/src/execution/engine/engines/pi/__tests__/pi-engine.test.ts +174 -28
  182. package/src/execution/engine/engines/pi/__tests__/spawn-opts-direct.test.ts +257 -0
  183. package/src/execution/{argv-mirror.ts → engine/engines/pi/argv-mirror.ts} +43 -21
  184. package/src/execution/{get-state-handshake.ts → engine/engines/pi/get-state-handshake.ts} +86 -11
  185. package/src/execution/{output-collector.ts → engine/engines/pi/output-collector.ts} +108 -19
  186. package/src/execution/engine/engines/pi/pi-engine.ts +434 -38
  187. package/src/execution/{pi-invocation.ts → engine/engines/pi/pi-invocation.ts} +2 -2
  188. package/src/execution/engine/engines/pi/reader.ts +11 -0
  189. package/src/execution/engine/engines/pi/registration.ts +4 -2
  190. package/src/execution/engine/engines/pi/session-runner.ts +2840 -0
  191. package/src/execution/{spawn-event-adapter.ts → engine/engines/pi/spawn-event-adapter.ts} +75 -34
  192. package/src/execution/{stdin-writer.ts → engine/engines/pi/stdin-writer.ts} +10 -9
  193. package/src/execution/{temp-prompt.ts → engine/engines/pi/temp-prompt.ts} +2 -2
  194. package/src/execution/{turn-limiter.ts → engine/engines/pi/turn-limiter.ts} +1 -1
  195. package/src/execution/engine/engines/zcode/__tests__/__fixtures__/fake-appserver.mjs +301 -0
  196. package/src/execution/engine/engines/zcode/__tests__/__fixtures__/zcode-golden-appserver.json +36 -0
  197. package/src/execution/engine/engines/zcode/__tests__/appserver-launcher.test.ts +321 -0
  198. package/src/execution/engine/engines/zcode/__tests__/connection.test.ts +473 -0
  199. package/src/execution/engine/engines/zcode/__tests__/parser.test.ts +7 -210
  200. package/src/execution/engine/engines/zcode/__tests__/preparer.test.ts +6 -110
  201. package/src/execution/engine/engines/zcode/__tests__/session-channel-dispose-harvest.test.ts +247 -0
  202. package/src/execution/engine/engines/zcode/__tests__/session-channel-turn-timers.test.ts +451 -0
  203. package/src/execution/engine/engines/zcode/__tests__/session-channel.test.ts +792 -0
  204. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-appserver.test.ts +782 -0
  205. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-degrade.test.ts +168 -0
  206. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-dispose.test.ts +210 -0
  207. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-retry.test.ts +353 -0
  208. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-status.test.ts +282 -0
  209. package/src/execution/engine/engines/zcode/__tests__/zcode-engine-timeout.test.ts +372 -0
  210. package/src/execution/engine/engines/zcode/__tests__/zcode-engine.live.test.ts +65 -47
  211. package/src/execution/engine/engines/zcode/appserver-launcher.ts +167 -0
  212. package/src/execution/engine/engines/zcode/connection.ts +598 -0
  213. package/src/execution/engine/engines/zcode/constants.ts +147 -14
  214. package/src/execution/engine/engines/zcode/golden-sample.ts +42 -34
  215. package/src/execution/engine/engines/zcode/parser.ts +12 -346
  216. package/src/execution/engine/engines/zcode/preparer.ts +22 -150
  217. package/src/execution/engine/engines/zcode/session-channel.ts +968 -0
  218. package/src/execution/engine/engines/zcode/zcode-engine.ts +1023 -250
  219. package/src/execution/engine/host-task-spec.ts +32 -36
  220. package/src/execution/engine/model-validation.ts +177 -0
  221. package/src/execution/engine/port.ts +65 -7
  222. package/src/execution/engine/registry.ts +53 -0
  223. package/src/execution/engine/routing.ts +75 -1
  224. package/src/execution/engine/types.ts +30 -103
  225. package/src/execution/execution-record.ts +222 -144
  226. package/src/execution/finalize-record.ts +181 -85
  227. package/src/execution/idle-gc.ts +28 -0
  228. package/src/execution/lifecycle-manager.ts +27 -3
  229. package/src/execution/lifecycle-predicates.ts +1 -1
  230. package/src/execution/manifest-store.ts +53 -62
  231. package/src/execution/notifier.ts +10 -10
  232. package/src/execution/notify-host.ts +212 -0
  233. package/src/execution/notify-ledger.ts +117 -16
  234. package/src/execution/record-entry.ts +8 -2
  235. package/src/execution/record-store.ts +148 -88
  236. package/src/execution/round-settlement.ts +93 -0
  237. package/src/execution/session-file-gc.ts +96 -62
  238. package/src/execution/session-pending.ts +213 -62
  239. package/src/execution/session-reconstructor.ts +256 -143
  240. package/src/execution/sessions-index.ts +127 -102
  241. package/src/execution/settled-watchdog.ts +311 -0
  242. package/src/execution/subagent-actions-core.ts +686 -0
  243. package/src/execution/subagent-service.ts +1106 -907
  244. package/src/execution/subprocess-agent-runner.ts +144 -97
  245. package/src/execution/types.ts +9 -0
  246. package/src/execution/ui-request-handler-factory.ts +126 -75
  247. package/src/execution/ui-request-queue.ts +50 -19
  248. package/src/execution/worktree-git-ops.ts +397 -0
  249. package/src/execution/worktree-manager.ts +72 -10
  250. package/src/execution/worktree-registry.ts +6 -12
  251. package/src/index.ts +542 -9
  252. package/src/orchestration/__tests__/__fixtures__/worker-template.snapshot.txt +42 -3
  253. package/src/orchestration/__tests__/agent-call-catch-fallback.test.ts +3 -5
  254. package/src/orchestration/__tests__/agent-call-stream.test.ts +2 -2
  255. package/src/orchestration/__tests__/args-meta.test.ts +358 -0
  256. package/src/orchestration/__tests__/args-validator.test.ts +14 -0
  257. package/src/orchestration/__tests__/error-recovery-rebuild-failure.test.ts +312 -0
  258. package/src/orchestration/__tests__/error-recovery-terminal-hardening.test.ts +384 -0
  259. package/src/orchestration/__tests__/execute-agent-call.test.ts +151 -11
  260. package/src/orchestration/__tests__/file-run-store-prune.test.ts +168 -0
  261. package/src/orchestration/__tests__/file-run-store-throttle.test.ts +168 -0
  262. package/src/orchestration/__tests__/file-run-store.test.ts +390 -0
  263. package/src/orchestration/__tests__/helpers/flush-microtasks.ts +13 -0
  264. package/src/orchestration/__tests__/launcher-nested-workflow.test.ts +34 -0
  265. package/src/orchestration/__tests__/lifecycle-abort-broadcast-signal.test.ts +357 -0
  266. package/src/orchestration/__tests__/lifecycle-recover-crashed.test.ts +289 -0
  267. package/src/orchestration/__tests__/lifecycle-runid-injection.test.ts +3 -3
  268. package/src/orchestration/__tests__/lifecycle.test.ts +84 -5
  269. package/src/orchestration/__tests__/non-cloneable-return-e2e.test.ts +1 -1
  270. package/src/orchestration/__tests__/run-snapshot.test.ts +356 -0
  271. package/src/orchestration/__tests__/script-generate.test.ts +314 -0
  272. package/src/orchestration/__tests__/script-lint.test.ts +17 -0
  273. package/src/orchestration/__tests__/test-mocks.ts +2 -0
  274. package/src/orchestration/__tests__/worker-exit-without-result.test.ts +7 -6
  275. package/src/orchestration/__tests__/worker-message-pump-finalize-run.test.ts +229 -0
  276. package/src/orchestration/__tests__/{error-recovery-handlers.test.ts → worker-message-pump-handlers.test.ts} +28 -27
  277. package/src/orchestration/__tests__/{error-recovery-postmessage-defense.test.ts → worker-message-pump-postmessage-defense.test.ts} +8 -8
  278. package/src/orchestration/__tests__/{error-recovery-serialize-failed-result.test.ts → worker-message-pump-serialize-failed-result.test.ts} +2 -2
  279. package/src/orchestration/__tests__/{error-recovery-workflow-call.test.ts → worker-message-pump-workflow-call.test.ts} +1 -1
  280. package/src/orchestration/__tests__/worker-pending-timeout-abort.test.ts +275 -0
  281. package/src/orchestration/__tests__/worker-script-builder-runtime.test.ts +78 -1
  282. package/src/orchestration/__tests__/worker-script-builder.test.ts +1 -1
  283. package/src/orchestration/__tests__/workflow-files.test.ts +186 -0
  284. package/src/orchestration/__tests__/workflow-nesting-e2e.test.ts +1 -1
  285. package/src/orchestration/__tests__/workflow-run-summary.test.ts +119 -0
  286. package/src/orchestration/__tests__/workflow-script-registry-impl.test.ts +124 -0
  287. package/src/orchestration/agent-opts-resolver.ts +8 -8
  288. package/src/orchestration/args-meta.ts +198 -0
  289. package/src/orchestration/args-validator.ts +53 -31
  290. package/src/orchestration/execute-agent-call.ts +25 -79
  291. package/src/orchestration/file-run-store.ts +327 -0
  292. package/src/orchestration/launcher.ts +160 -104
  293. package/src/orchestration/lifecycle.ts +371 -97
  294. package/src/orchestration/models/agent-call.ts +7 -7
  295. package/src/orchestration/models/budget.ts +5 -5
  296. package/src/orchestration/models/ports.ts +4 -4
  297. package/src/orchestration/models/run-runtime.ts +15 -15
  298. package/src/orchestration/models/trace.ts +9 -9
  299. package/src/orchestration/models/types.ts +111 -22
  300. package/src/orchestration/models/workflow-run.ts +28 -28
  301. package/src/orchestration/models/workflow-script.ts +4 -4
  302. package/src/orchestration/run-snapshot.ts +266 -0
  303. package/src/orchestration/script-generate.ts +154 -0
  304. package/src/orchestration/script-lint.ts +123 -90
  305. package/src/orchestration/worker-handle.ts +10 -10
  306. package/src/orchestration/worker-host.ts +10 -10
  307. package/src/orchestration/{error-recovery.ts → worker-message-pump.ts} +498 -221
  308. package/src/orchestration/worker-script-builder.ts +401 -346
  309. package/src/orchestration/workflow-files.ts +37 -11
  310. package/src/orchestration/workflow-run-summary.ts +69 -0
  311. package/src/orchestration/workflow-script-registry-impl.ts +31 -9
  312. package/src/shared/__tests__/agent-ref.test.ts +209 -2
  313. package/src/shared/__tests__/atomic-write.test.ts +267 -0
  314. package/src/shared/__tests__/bounded-serialize.test.ts +236 -0
  315. package/src/shared/__tests__/injection-render.test.ts +518 -0
  316. package/src/shared/__tests__/meta-parser.test.ts +151 -0
  317. package/src/shared/__tests__/resource-discovery-host-roots.test.ts +474 -0
  318. package/src/shared/__tests__/resource-discovery.test.ts +261 -217
  319. package/src/shared/agent-ref.ts +143 -2
  320. package/src/shared/atomic-write.ts +323 -0
  321. package/src/shared/bounded-serialize.ts +154 -0
  322. package/src/shared/injection-render.ts +279 -0
  323. package/src/shared/meta-parser.ts +182 -68
  324. package/src/shared/model-ref.ts +15 -2
  325. package/src/shared/resource-discovery.ts +97 -204
  326. package/src/shared/resource-meta.ts +14 -0
  327. package/src/shared/schema-jsonify.ts +1 -1
  328. package/src/shared/xml-injection.ts +9 -9
  329. package/workflows/README.md +9 -9
  330. package/workflows/chain.js +4 -2
  331. package/workflows/map-reduce.js +5 -3
  332. package/workflows/parallel.js +5 -3
  333. package/workflows/review-fix-loop-utils.cjs +165 -92
  334. package/workflows/review-fix-loop-utils.d.cts +287 -0
  335. package/workflows/review-fix-loop.js +18 -7
  336. package/workflows/scatter-gather.js +4 -2
  337. package/dist/chunk-3VOERJPJ.js +0 -22
  338. package/src/execution/__tests__/execute-options-mapper.test.ts +0 -200
  339. package/src/execution/engine/engines/pi/__tests__/task-spec-mapper.test.ts +0 -164
  340. package/src/execution/engine/engines/pi/task-spec-mapper.ts +0 -100
  341. package/src/execution/engine/engines/zcode/__tests__/__fixtures__/zcode-golden-spawn.json +0 -39
  342. package/src/execution/engine/engines/zcode/__tests__/launcher.test.ts +0 -150
  343. package/src/execution/engine/engines/zcode/__tests__/zcode-engine.test.ts +0 -580
  344. package/src/execution/engine/engines/zcode/launcher.ts +0 -161
  345. package/src/execution/execute-options-mapper.ts +0 -115
  346. package/src/execution/session-runner.ts +0 -1789
  347. package/src/shared/__tests__/resource-discovery-manifest-cache.test.ts +0 -288
@@ -1,161 +0,0 @@
1
- // src/execution/engine/engines/zcode/launcher.ts
2
- //
3
- // ZcodeEngine launcher(P3):spawn 命令组装 + 进程启动——四件套里唯一持有 spawn 权
4
- // 的模块(设计 §3.3.7)。TS 重写自 zsub driver.js 的 runHeadless 命令组装段,机制
5
- // 保留(真机验证过):
6
- // - argv 形态:`node <zcode.cjs> --json --cwd <dir> --mode yolo [--disallowed-tools a,b]
7
- // [--resume <sid>] --prompt <text>`;flag 拒收清单(--model/--skill/--max-turns 等
8
- // help 漂移项)一个不用;
9
- // - stdin: 'ignore'(CLI 不读 stdin,置管道会挂起——zsub 实测);
10
- // - env:HOME=隔离池目录(provider 配置与 db 全部落池内)+ 嵌套防护标记;
11
- // - 杀链:SIGTERM → grace → SIGKILL,exited 用 close 事件维护的标志判断
12
- // (child.killed 在 kill() 调用后恒 true,zsub 修过的原版死代码 bug)。
13
- //
14
- // 与 zsub 的差异:超时不在本模块(宿主公共杀链职责,设计 D4/附录 A「CLI 超时 6/6
15
- // 全缺全补」);abort 由 AbortSignal 驱动(EnginePort 契约),zsub 的 cancel() 变为
16
- // abort(graceMs)。
17
-
18
- import { spawn, type ChildProcess } from "node:child_process";
19
- import { Readable } from "node:stream";
20
-
21
- import { killChain } from "../../common/kill-chain.ts";
22
- import { buildNestedSpawnEnv } from "../../common/nesting-guard.ts";
23
- import { assertArgvBudget } from "../../common/persona-router.ts";
24
- import { ZCODE_KILL_GRACE_MS } from "./constants.ts";
25
-
26
- // ============================================================
27
- // argv 组装与字节预算(对齐点②收口:估算/断言单一权威 = common/persona-router,
28
- // 本模块只组装;引擎侧在 launch 前调 assertArgvBudget)
29
- // ============================================================
30
-
31
- export interface ZcodeSpawnSpec {
32
- /** 任务运行目录(--cwd flag 的值)。 */
33
- cwd: string;
34
- /** 完整 prompt(persona 拼接后的产物)。 */
35
- prompt: string;
36
- /** 工具 denylist(逗号连接进 --disallowed-tools;空数组不加 flag)。 */
37
- denyTools?: string[];
38
- /** 冷续聊目标 session(--resume;spawn 单轮模式内不做 resume 仿真,留给宿主)。 */
39
- resumeSessionId?: string;
40
- }
41
-
42
- /** 组装 zcode.cjs 的 argv(不含 `node` 与 cli 路径两个前导元素)。 */
43
- export function buildZcodeArgv(spec: ZcodeSpawnSpec): string[] {
44
- const args = ["--json", "--cwd", spec.cwd, "--mode", "yolo"];
45
- // denylist 硬约束:非空数组才落 flag(CLI 对空值行为未定义,不赌——zsub 同判)
46
- const disallowed = (spec.denyTools ?? []).filter((t) => typeof t === "string" && t.trim() !== "");
47
- if (disallowed.length > 0) args.push("--disallowed-tools", disallowed.join(","));
48
- if (spec.resumeSessionId) args.push("--resume", String(spec.resumeSessionId));
49
- args.push("--prompt", String(spec.prompt));
50
- return args;
51
- }
52
-
53
- /**
54
- * argv 预算断言(launch 前调用;对齐点②:公共 persona-router 的单一权威实现,
55
- * DEFAULT_ARGV_BUDGET_BYTES 128KB 阈值同源——超限抛 EngineError(prompt_too_large),
56
- * 进程创建前拦截,禁止 spawn 后撞 E2BIG)。
57
- */
58
- export function assertZcodeArgvBudget(nodeBin: string, cliPath: string, args: string[]): void {
59
- assertArgvBudget([nodeBin, cliPath, ...args]);
60
- }
61
-
62
- // ============================================================
63
- // env 构造
64
- // ============================================================
65
-
66
- /**
67
- * 构造子进程 env:嵌套防护经公共 nesting-guard(D8:注入统一 XYZ_AGENT_SUBAGENT=1 +
68
- * 剥离引擎原生嵌套标记 ZSW_NESTED/PI_SUBAGENT_*——旧标记继承会让孙代理误判嵌套层),
69
- * HOME 最后落(隔离 HOME 是 provider 配置与 db 的定位锚,基 env 同名键不许覆盖)。
70
- */
71
- export function buildZcodeEnv(homeDir: string, baseEnv: NodeJS.ProcessEnv = process.env): NodeJS.ProcessEnv {
72
- return { ...buildNestedSpawnEnv(baseEnv), HOME: homeDir };
73
- }
74
-
75
- // ============================================================
76
- // 进程启动(EngineProcess 形态,设计 §3.3.7)
77
- // ============================================================
78
-
79
- /** launcher 产出的进程句柄(parser 消费 stdout/stderr/exited;abort 是杀链执行体)。 */
80
- export interface ZcodeLaunchedProcess {
81
- /** spawn 出的原始子进程句柄([U0 D10] 终止链记账——引擎经 RunContext.onChildSpawned 注册进宿主 spawnedChildren)。 */
82
- readonly child: ChildProcess;
83
- readonly pid: number;
84
- readonly stdout: Readable;
85
- readonly stderr: Readable;
86
- /** 杀链:SIGTERM → graceMs 后未退出则 SIGKILL;resolve 于进程退出。幂等。 */
87
- readonly abort: (graceMs?: number) => Promise<void>;
88
- /** 进程退出(code=null 表示被信号杀死)。 */
89
- readonly exited: Promise<{ code: number | null; signal: string | undefined }>;
90
- /** 本方杀链是否介入过(合成终态的判据:介入后 code 语义不再是引擎自身失败)。 */
91
- readonly killedByUs: () => boolean;
92
- }
93
-
94
- export interface ZcodeLaunchOptions {
95
- /** zcode CLI 路径(node 脚本)。 */
96
- cliPath: string;
97
- /** cliPath 之后的 argv(buildZcodeArgv 产物)。 */
98
- args: string[];
99
- /** 完整 env(buildZcodeEnv 产物)。 */
100
- env: NodeJS.ProcessEnv;
101
- /** node 二进制(缺省 'node',走 PATH)。 */
102
- nodeBin?: string;
103
- }
104
-
105
- /**
106
- * 启动 zcode 子进程。spawn 同步失败(如 node 不存在)直接 throw——调用方(引擎 run)
107
- * 按进程创建前错误处理;启动成功后的一切失败归 parser 终态路径(不 throw)。
108
- *
109
- * 杀链(对齐点②收口):SIGTERM → grace → SIGKILL 的实现单一权威 =
110
- * common/kill-chain.killChain(ChildProcess 结构满足 KillableChild)——本模块只保留
111
- * killedByUs 标志(合成终态判据:「我方介入过」与「引擎自身失败」的区分)与幂等守卫。
112
- */
113
- export function launchZcodeProcess(opts: ZcodeLaunchOptions): ZcodeLaunchedProcess {
114
- const nodeBin = opts.nodeBin ?? "node";
115
- const child = spawn(nodeBin, [opts.cliPath, ...opts.args], {
116
- env: opts.env,
117
- stdio: ["ignore", "pipe", "pipe"],
118
- });
119
-
120
- let exited = false;
121
- let killTriggered = false;
122
-
123
- // ENOENT(node 缺失)等 spawn 失败经 'error' 事件异步到达且 stdout/stderr 可能为
124
- // null——空流兜底,保证消费方(parser)始终拿到可读流
125
- const emptyStream = (): Readable => Readable.from([]);
126
- const stdoutStream = child.stdout ?? emptyStream();
127
- const stderrStream = child.stderr ?? emptyStream();
128
-
129
- const exitedPromise = new Promise<{ code: number | null; signal: string | undefined }>((resolve) => {
130
- child.once("close", (code, signal) => {
131
- exited = true;
132
- resolve({ code, signal: signal ?? undefined });
133
- });
134
- child.once("error", () => {
135
- // spawn 失败(ENOENT 等)也会走 error;close 不一定触发,这里兜底 resolve 防
136
- // exited 永挂——code 取 null(无引擎语义可判)
137
- exited = true;
138
- resolve({ code: null, signal: undefined });
139
- });
140
- });
141
-
142
- const abort = (graceMs: number = ZCODE_KILL_GRACE_MS): Promise<void> => {
143
- if (!killTriggered && !exited) {
144
- killTriggered = true;
145
- // 公共杀链(不 await:abort 以 exitedPromise 为准;killChain 自身含 grace/
146
- // SIGKILL/收尸全时序,fire-and-forget 不改变 abort 的 resolve 语义)
147
- void killChain(child, { graceMs });
148
- }
149
- return exitedPromise.then(() => undefined);
150
- };
151
-
152
- return {
153
- child,
154
- pid: child.pid ?? -1,
155
- stdout: stdoutStream,
156
- stderr: stderrStream,
157
- abort,
158
- exited: exitedPromise,
159
- killedByUs: () => killTriggered,
160
- };
161
- }
@@ -1,115 +0,0 @@
1
- // src/execution/execute-options-mapper.ts
2
- //
3
- // D-A2: AgentCallOpts → ExecuteOptions 映射(adapter 职责)
4
- // D-A9: per-call timeoutMs 合并进 AbortSignal
5
- //
6
- // 接线层级:[模块内直调] —— SAR.run 内调。
7
-
8
- import type { AgentCallOpts } from "../orchestration/models/types.ts";
9
- import { HOST_TIMEOUT_ABORT_REASON } from "./engine/common/kill-chain.ts";
10
- import type { ModelInfo } from "./model-resolver.ts";
11
- import type { ExecuteOptions } from "./types.ts";
12
-
13
- // SLUG_MAX_LENGTH 权威定义(subagent-core 包抽离 u1-move 内化):core 切面不得反向
14
- // import 壳侧 interface(D1 依赖闭包判据),常量定义回归 execution 侧本文件——
15
- // 与 tool schema 的 maxLength 语义同源(壳侧 subagent-tool-schema.ts 改经本文件 import)。
16
- /**
17
- * slug 最大长度。历史值 20 偏紧——描述性 slug 如 "audit-structured-output"(23)/
18
- * "fix-subagent-wf-tools"(21)会撞上限,放宽到 35 兼顾「短到能塞进 TUI 标题行」
19
- * 与「容纳合理描述性 kebab-case 名」。
20
- */
21
- export const SLUG_MAX_LENGTH = 35;
22
-
23
- /**
24
- * D-A2: AgentCallOpts → ExecuteOptions 映射。
25
- *
26
- * adapter 职责——SubagentService 的 ExecuteOptions 是稳定内部契约,不为 workflow 的
27
- * AgentCallOpts 做适配(映射归调用方 SAR)。
28
- *
29
- * 映射规则:
30
- * prompt → task
31
- * description → slug(≤35 字符,超长截断。缺失时回落 agent 名)
32
- * agent → agent
33
- * schema → schema
34
- * schemaEnv → schemaEnv(D-A6 bridge)
35
- * cwd → cwd
36
- * model → model(显式 override 透传,ctxModel 不再压扁为 id 填底)
37
- * ctxModel → ctxModel(完整 ModelInfo 对象透传,让 resolveModel 走第 3 层透明传递)
38
- * skillPath → skillPath
39
- * thinkingLevel → thinkingLevel(M1: 否则下游 subagent-service 读到 undefined)
40
- * appendSystemPrompt → appendSystemPrompt(内容数组,同名同义透传)
41
- * maxTurns → maxTurns(turn limiter 上限;undefined = 不限,不挂 turns 估算 watchdog)
42
- *
43
- * 忽略字段(委托后由 executeAndAwait 内部机制替代):
44
- * timeoutMs —— mergeTimeoutSignal 单独处理
45
- * scene —— subagents 不消费
46
- *
47
- * description 原先被忽略,现作为 slug 透传(ExecuteOptions.slug 必填)。
48
- */
49
- export function mapToExecuteOptions(
50
- opts: AgentCallOpts,
51
- ctxModel?: ModelInfo,
52
- ): ExecuteOptions {
53
- // slug:优先 description,缺失回落 agent 名(保证非空)。超长截断。
54
- const rawSlug = opts.description ?? opts.agent ?? "workflow-agent";
55
- return {
56
- task: opts.prompt,
57
- slug: rawSlug.length > SLUG_MAX_LENGTH ? rawSlug.slice(0, SLUG_MAX_LENGTH) : rawSlug,
58
- agent: opts.agent,
59
- schema: opts.schema,
60
- schemaEnv: opts.schemaEnv,
61
- cwd: opts.cwd,
62
- fork: opts.fork,
63
- worktree: opts.worktree,
64
- model: opts.model,
65
- ctxModel,
66
- skillPath: opts.skillPath,
67
- thinkingLevel: opts.thinkingLevel,
68
- appendSystemPrompt: opts.appendSystemPrompt,
69
- maxTurns: opts.maxTurns,
70
- };
71
- }
72
-
73
- /**
74
- * D-A9: per-call timeoutMs 合并进 AbortSignal。
75
- *
76
- * 墙钟 timeoutMs(per-call)+ 外部 signal(run 级 abort)都生效。
77
- * 缺此合并则 agent({timeoutMs:5000}) 静默无效(BC-9)。
78
- *
79
- * @param signal 外部 signal(workflow run 级 controller.signal)
80
- * @param timeoutMs per-call 墙钟超时;undefined/<=0 → 不设超时,原样返回 signal
81
- * @returns 合并后的 signal(timeoutMs 或外部 signal 任一 abort 都触发)
82
- */
83
- export function mergeTimeoutSignal(
84
- signal: AbortSignal,
85
- timeoutMs?: number,
86
- ): AbortSignal {
87
- if (!timeoutMs || timeoutMs <= 0) {
88
- return signal;
89
- }
90
-
91
- const controller = new AbortController();
92
- // 超时 abort 带 reason 标记(对齐点④):引擎合成终态时判别「宿主超时」
93
- // (engine_timeout 公共合成)vs「外部 cancel」(中止标记)——pi 链路不读 reason,
94
- // 行为不变。外部 signal abort 不带标记(用户/编排层 cancel 语义)。
95
- const timer = setTimeout(() => controller.abort(HOST_TIMEOUT_ABORT_REASON), timeoutMs);
96
- timer.unref();
97
-
98
- const onExternalAbort = (): void => controller.abort();
99
- if (signal.aborted) {
100
- controller.abort();
101
- } else {
102
- signal.addEventListener("abort", onExternalAbort, { once: true });
103
- }
104
-
105
- controller.signal.addEventListener(
106
- "abort",
107
- () => {
108
- clearTimeout(timer);
109
- if (!signal.aborted) signal.removeEventListener("abort", onExternalAbort);
110
- },
111
- { once: true },
112
- );
113
-
114
- return controller.signal;
115
- }