@zhushanwen/pi-subagent-workflow 8.6.0 → 8.7.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 (347) hide show
  1. package/package.json +9 -13
  2. package/relay/relay.mjs +1 -1
  3. package/src/host/__tests__/pi-host.test.ts +214 -0
  4. package/src/host/pi-host.ts +109 -0
  5. package/src/index.ts +89 -32
  6. package/src/injectors/__tests__/engine-awareness.test.ts +292 -0
  7. package/src/injectors/__tests__/engine-section-stability.test.ts +341 -0
  8. package/src/injectors/__tests__/subagent-list-injector.test.ts +5 -5
  9. package/src/injectors/__tests__/workflow-list-injector.test.ts +5 -5
  10. package/src/injectors/engine-awareness.ts +123 -0
  11. package/src/injectors/model-list-injector.ts +1 -1
  12. package/src/injectors/subagent-list-injector.ts +8 -8
  13. package/src/injectors/workflow-list-injector.ts +8 -8
  14. package/src/interface/__tests__/detectors.test.ts +3 -3
  15. package/src/interface/__tests__/subagent-tool-path-guard.test.ts +2 -2
  16. package/src/interface/__tests__/tool-workflow-script-generate.test.ts +2 -2
  17. package/src/interface/__tests__/tool-workflow-throw-paths.test.ts +1 -1
  18. package/src/interface/bg-notify-render.ts +4 -4
  19. package/src/interface/commands.ts +3 -3
  20. package/src/interface/format.ts +2 -2
  21. package/src/interface/helpers.ts +1 -1
  22. package/src/interface/list-component.ts +4 -4
  23. package/src/interface/list-shared.ts +2 -2
  24. package/src/interface/list-view.ts +2 -2
  25. package/src/interface/subagent-actions.ts +263 -11
  26. package/src/interface/subagent-tool-schema.ts +20 -13
  27. package/src/interface/subagent-tool.ts +11 -6
  28. package/src/interface/subagents.ts +3 -3
  29. package/src/interface/tool-render.ts +34 -2
  30. package/src/interface/tool-workflow-script.ts +4 -4
  31. package/src/interface/tool-workflow.ts +6 -6
  32. package/src/interface/views/WorkflowsView.ts +5 -5
  33. package/src/interface/views/__tests__/WorkflowsView-signature.test.ts +3 -3
  34. package/src/interface/views/__tests__/detail-content-session-file.test.ts +2 -2
  35. package/src/interface/views/detail-content.ts +4 -4
  36. package/src/interface/views/format.ts +4 -4
  37. package/src/{orchestration/jsonl-run-store.ts → jsonl-run-store.ts} +11 -11
  38. package/src/execution/__tests__/__fixtures__/notifier-golden-snapshots.json +0 -53
  39. package/src/execution/__tests__/__fixtures__/truncline.snapshot.json +0 -1
  40. package/src/execution/__tests__/agent-registry.test.ts +0 -363
  41. package/src/execution/__tests__/agent-result-mapper.test.ts +0 -150
  42. package/src/execution/__tests__/alive-store.test.ts +0 -147
  43. package/src/execution/__tests__/ask-user-transit-e2e.test.ts +0 -490
  44. package/src/execution/__tests__/before-agent-start-injection.test.ts +0 -132
  45. package/src/execution/__tests__/bg-notify-render.test.ts +0 -329
  46. package/src/execution/__tests__/channel-registry-handshake.test.ts +0 -243
  47. package/src/execution/__tests__/chat-engine-routing.test.ts +0 -601
  48. package/src/execution/__tests__/chatmode-first-round-closure-service.test.ts +0 -365
  49. package/src/execution/__tests__/chatmode-first-round-closure-spawn.test.ts +0 -190
  50. package/src/execution/__tests__/chatmode-round-notify-real-chain.test.ts +0 -215
  51. package/src/execution/__tests__/concurrency-pool.test.ts +0 -250
  52. package/src/execution/__tests__/config.test.ts +0 -110
  53. package/src/execution/__tests__/conversation-wiring.test.ts +0 -198
  54. package/src/execution/__tests__/crash-recovery.test.ts +0 -320
  55. package/src/execution/__tests__/delivery-methods.test.ts +0 -422
  56. package/src/execution/__tests__/dialog-queue.test.ts +0 -299
  57. package/src/execution/__tests__/epipe-fallback.test.ts +0 -241
  58. package/src/execution/__tests__/execute-and-await-worktree.test.ts +0 -243
  59. package/src/execution/__tests__/execute-nesting.test.ts +0 -323
  60. package/src/execution/__tests__/execute-options-mapper.test.ts +0 -200
  61. package/src/execution/__tests__/execution-record.test.ts +0 -1394
  62. package/src/execution/__tests__/explicit-agent-ref-guard.test.ts +0 -171
  63. package/src/execution/__tests__/finalize-record.test.ts +0 -368
  64. package/src/execution/__tests__/finalized-marker.test.ts +0 -82
  65. package/src/execution/__tests__/format-schema-instruction.test.ts +0 -169
  66. package/src/execution/__tests__/format.test.ts +0 -458
  67. package/src/execution/__tests__/gc-timer.test.ts +0 -184
  68. package/src/execution/__tests__/get-record-for-action-restart.test.ts +0 -254
  69. package/src/execution/__tests__/gui-mode-dispatch.test.ts +0 -59
  70. package/src/execution/__tests__/helpers/mock-extension-api.ts +0 -30
  71. package/src/execution/__tests__/helpers/spawn-mock.ts +0 -242
  72. package/src/execution/__tests__/host-mode.test.ts +0 -87
  73. package/src/execution/__tests__/index-session-start-identity.test.ts +0 -371
  74. package/src/execution/__tests__/index-session-start.test.ts +0 -672
  75. package/src/execution/__tests__/lifecycle-manager-lock.test.ts +0 -211
  76. package/src/execution/__tests__/lifecycle-manager.test.ts +0 -383
  77. package/src/execution/__tests__/lifecycle-predicates.test.ts +0 -116
  78. package/src/execution/__tests__/list-component.test.ts +0 -401
  79. package/src/execution/__tests__/list-fields.test.ts +0 -140
  80. package/src/execution/__tests__/manifest-parentid.test.ts +0 -117
  81. package/src/execution/__tests__/model-resolver.test.ts +0 -465
  82. package/src/execution/__tests__/nested-visibility-env-propagation.test.ts +0 -287
  83. package/src/execution/__tests__/nested-visibility.test.ts +0 -325
  84. package/src/execution/__tests__/notifier-flush.test.ts +0 -612
  85. package/src/execution/__tests__/notifier-golden-snapshot.test.ts +0 -261
  86. package/src/execution/__tests__/notify-ledger.test.ts +0 -826
  87. package/src/execution/__tests__/one-shot-upgrade.test.ts +0 -205
  88. package/src/execution/__tests__/output-collector.test.ts +0 -358
  89. package/src/execution/__tests__/parent-child-matrix.test.ts +0 -336
  90. package/src/execution/__tests__/path-encoding.test.ts +0 -104
  91. package/src/execution/__tests__/pi-invocation.test.ts +0 -134
  92. package/src/execution/__tests__/record-store.test.ts +0 -1057
  93. package/src/execution/__tests__/records-cwd-isolation.test.ts +0 -91
  94. package/src/execution/__tests__/recursive-visibility-baseline.test.ts +0 -339
  95. package/src/execution/__tests__/recursive-visibility-env.test.ts +0 -273
  96. package/src/execution/__tests__/relay-agent.test.ts +0 -448
  97. package/src/execution/__tests__/relay-env.test.ts +0 -42
  98. package/src/execution/__tests__/resource-policy.test.ts +0 -109
  99. package/src/execution/__tests__/rpc-mode.test.ts +0 -89
  100. package/src/execution/__tests__/run-and-finalize-chatmode.test.ts +0 -267
  101. package/src/execution/__tests__/run-spawn-chatmode-settled.test.ts +0 -253
  102. package/src/execution/__tests__/run-spawn-edges.test.ts +0 -687
  103. package/src/execution/__tests__/run-spawn-integration.test.ts +0 -933
  104. package/src/execution/__tests__/run-spawn-resume.test.ts +0 -322
  105. package/src/execution/__tests__/run-spawn-rpc-mode.test.ts +0 -196
  106. package/src/execution/__tests__/run-spawn-stdout-callback-throw.test.ts +0 -199
  107. package/src/execution/__tests__/sdk-contract.test.ts +0 -273
  108. package/src/execution/__tests__/session-context-resolver.test.ts +0 -167
  109. package/src/execution/__tests__/session-file-gc.test.ts +0 -293
  110. package/src/execution/__tests__/session-pending.test.ts +0 -197
  111. package/src/execution/__tests__/session-reconstructor.test.ts +0 -379
  112. package/src/execution/__tests__/session-runner-epipe.test.ts +0 -178
  113. package/src/execution/__tests__/session-runner-schema-env.test.ts +0 -350
  114. package/src/execution/__tests__/session-start-reaper.test.ts +0 -233
  115. package/src/execution/__tests__/spawn-args.test.ts +0 -445
  116. package/src/execution/__tests__/spawn-event-adapter-rpc.test.ts +0 -189
  117. package/src/execution/__tests__/spawn-event-adapter.test.ts +0 -167
  118. package/src/execution/__tests__/spawn-worktree-guidance.test.ts +0 -207
  119. package/src/execution/__tests__/spawned-children.test.ts +0 -92
  120. package/src/execution/__tests__/start-sync-model-guard.test.ts +0 -150
  121. package/src/execution/__tests__/startup-config-declaration.test.ts +0 -35
  122. package/src/execution/__tests__/status-refactor.test.ts +0 -345
  123. package/src/execution/__tests__/stdin-writer.test.ts +0 -463
  124. package/src/execution/__tests__/stream-sink-retirement.test.ts +0 -261
  125. package/src/execution/__tests__/subagent-service-abort.test.ts +0 -60
  126. package/src/execution/__tests__/subagent-service-message-close.test.ts +0 -629
  127. package/src/execution/__tests__/subagent-service-parent-guard.test.ts +0 -180
  128. package/src/execution/__tests__/subagent-service.test.ts +0 -788
  129. package/src/execution/__tests__/subprocess-agent-runner-routing.test.ts +0 -310
  130. package/src/execution/__tests__/subprocess-agent-runner.test.ts +0 -599
  131. package/src/execution/__tests__/temp-prompt.test.ts +0 -53
  132. package/src/execution/__tests__/timeout-integration.test.ts +0 -615
  133. package/src/execution/__tests__/tombstone-store.test.ts +0 -73
  134. package/src/execution/__tests__/tool-action.test.ts +0 -476
  135. package/src/execution/__tests__/truncline-snapshot.test.ts +0 -81
  136. package/src/execution/__tests__/turn-limiter-semantics.test.ts +0 -194
  137. package/src/execution/__tests__/turn-limiter.test.ts +0 -65
  138. package/src/execution/__tests__/ui-channels.test.ts +0 -187
  139. package/src/execution/__tests__/ui-interaction-model.test.ts +0 -67
  140. package/src/execution/__tests__/ui-request-handler-factory.test.ts +0 -370
  141. package/src/execution/__tests__/ui-request-handler.test.ts +0 -204
  142. package/src/execution/__tests__/ui-request-observability.test.ts +0 -114
  143. package/src/execution/__tests__/ui-request-queue.test.ts +0 -133
  144. package/src/execution/__tests__/worktree-manager.test.ts +0 -633
  145. package/src/execution/__tests__/worktree-pid-registration.integration.test.ts +0 -229
  146. package/src/execution/__tests__/worktree-reconcile.integration.test.ts +0 -181
  147. package/src/execution/__tests__/worktree-registry.test.ts +0 -199
  148. package/src/execution/agent-registry.ts +0 -199
  149. package/src/execution/agent-result-mapper.ts +0 -90
  150. package/src/execution/alive-store.ts +0 -92
  151. package/src/execution/argv-mirror.ts +0 -113
  152. package/src/execution/best-effort.ts +0 -38
  153. package/src/execution/channel-registry-access.ts +0 -144
  154. package/src/execution/concurrency-pool.ts +0 -116
  155. package/src/execution/config.ts +0 -96
  156. package/src/execution/dialog-queue.ts +0 -330
  157. package/src/execution/engine/__tests__/common/data-dir.test.ts +0 -53
  158. package/src/execution/engine/__tests__/common/errors.test.ts +0 -132
  159. package/src/execution/engine/__tests__/common/event-journal.test.ts +0 -177
  160. package/src/execution/engine/__tests__/common/kill-chain.test.ts +0 -192
  161. package/src/execution/engine/__tests__/common/nesting-guard.test.ts +0 -81
  162. package/src/execution/engine/__tests__/common/persona-router.test.ts +0 -123
  163. package/src/execution/engine/__tests__/common/pool-manager.test.ts +0 -154
  164. package/src/execution/engine/__tests__/common/schema-emulation.test.ts +0 -128
  165. package/src/execution/engine/__tests__/conformance/__fixtures__/pi-golden-events.json +0 -28
  166. package/src/execution/engine/__tests__/conformance/agent-event-invariants.ts +0 -141
  167. package/src/execution/engine/__tests__/conformance/contract.abort.test.ts +0 -109
  168. package/src/execution/engine/__tests__/conformance/contract.agent-events.test.ts +0 -101
  169. package/src/execution/engine/__tests__/conformance/contract.probe.test.ts +0 -77
  170. package/src/execution/engine/__tests__/conformance/contract.read-degradation.test.ts +0 -104
  171. package/src/execution/engine/__tests__/conformance/contract.relay.test.ts +0 -342
  172. package/src/execution/engine/__tests__/conformance/engine-conformance.live.test.ts +0 -201
  173. package/src/execution/engine/__tests__/conformance/golden-replay.pi.test.ts +0 -76
  174. package/src/execution/engine/__tests__/conformance/golden-replay.zcode.test.ts +0 -79
  175. package/src/execution/engine/__tests__/engine-discovery.test.ts +0 -87
  176. package/src/execution/engine/__tests__/engines-declaration.test.ts +0 -36
  177. package/src/execution/engine/__tests__/model-prompt.test.ts +0 -85
  178. package/src/execution/engine/__tests__/paths.test.ts +0 -39
  179. package/src/execution/engine/__tests__/registry.test.ts +0 -120
  180. package/src/execution/engine/__tests__/routing.test.ts +0 -231
  181. package/src/execution/engine/common/data-dir.ts +0 -62
  182. package/src/execution/engine/common/errors.ts +0 -183
  183. package/src/execution/engine/common/event-journal.ts +0 -254
  184. package/src/execution/engine/common/journal-replay.ts +0 -62
  185. package/src/execution/engine/common/kill-chain.ts +0 -221
  186. package/src/execution/engine/common/nesting-guard.ts +0 -50
  187. package/src/execution/engine/common/persona-router.ts +0 -108
  188. package/src/execution/engine/common/pool-manager.ts +0 -226
  189. package/src/execution/engine/common/schema-emulation.ts +0 -189
  190. package/src/execution/engine/common/session-view-projection.ts +0 -51
  191. package/src/execution/engine/engine-discovery.ts +0 -65
  192. package/src/execution/engine/engines/pi/__tests__/pi-engine.test.ts +0 -469
  193. package/src/execution/engine/engines/pi/__tests__/reader.test.ts +0 -155
  194. package/src/execution/engine/engines/pi/__tests__/task-spec-mapper.test.ts +0 -164
  195. package/src/execution/engine/engines/pi/pi-engine.ts +0 -415
  196. package/src/execution/engine/engines/pi/reader.ts +0 -48
  197. package/src/execution/engine/engines/pi/registration.ts +0 -35
  198. package/src/execution/engine/engines/pi/task-spec-mapper.ts +0 -100
  199. package/src/execution/engine/engines/zcode/__tests__/__fixtures__/zcode-golden-spawn.json +0 -39
  200. package/src/execution/engine/engines/zcode/__tests__/launcher.test.ts +0 -150
  201. package/src/execution/engine/engines/zcode/__tests__/parser.test.ts +0 -246
  202. package/src/execution/engine/engines/zcode/__tests__/preparer.test.ts +0 -228
  203. package/src/execution/engine/engines/zcode/__tests__/reader.test.ts +0 -210
  204. package/src/execution/engine/engines/zcode/__tests__/registration.test.ts +0 -64
  205. package/src/execution/engine/engines/zcode/__tests__/zcode-engine.live.test.ts +0 -127
  206. package/src/execution/engine/engines/zcode/__tests__/zcode-engine.test.ts +0 -580
  207. package/src/execution/engine/engines/zcode/constants.ts +0 -43
  208. package/src/execution/engine/engines/zcode/golden-sample.ts +0 -39
  209. package/src/execution/engine/engines/zcode/launcher.ts +0 -161
  210. package/src/execution/engine/engines/zcode/parser.ts +0 -436
  211. package/src/execution/engine/engines/zcode/preparer.ts +0 -363
  212. package/src/execution/engine/engines/zcode/reader.ts +0 -381
  213. package/src/execution/engine/engines/zcode/registration.ts +0 -37
  214. package/src/execution/engine/engines/zcode/zcode-engine.ts +0 -658
  215. package/src/execution/engine/host-task-spec.ts +0 -47
  216. package/src/execution/engine/model-prompt.ts +0 -59
  217. package/src/execution/engine/paths.ts +0 -42
  218. package/src/execution/engine/port.ts +0 -153
  219. package/src/execution/engine/registry.ts +0 -123
  220. package/src/execution/engine/routing.ts +0 -218
  221. package/src/execution/engine/types.ts +0 -309
  222. package/src/execution/execute-options-mapper.ts +0 -112
  223. package/src/execution/execution-record.ts +0 -965
  224. package/src/execution/finalize-record.ts +0 -251
  225. package/src/execution/finalized-marker.ts +0 -51
  226. package/src/execution/get-state-handshake.ts +0 -104
  227. package/src/execution/host-mode.ts +0 -56
  228. package/src/execution/idle-gc.ts +0 -47
  229. package/src/execution/lifecycle-manager.ts +0 -513
  230. package/src/execution/lifecycle-predicates.ts +0 -65
  231. package/src/execution/manifest-store.ts +0 -256
  232. package/src/execution/model-config-service.ts +0 -219
  233. package/src/execution/model-resolver.ts +0 -248
  234. package/src/execution/notifier.ts +0 -330
  235. package/src/execution/notify-ledger.ts +0 -580
  236. package/src/execution/output-collector.ts +0 -228
  237. package/src/execution/path-encoding.ts +0 -60
  238. package/src/execution/pi-invocation.ts +0 -120
  239. package/src/execution/record-entry.ts +0 -132
  240. package/src/execution/record-store.ts +0 -1234
  241. package/src/execution/relay-env.ts +0 -37
  242. package/src/execution/session-context-resolver.ts +0 -64
  243. package/src/execution/session-file-gc.ts +0 -120
  244. package/src/execution/session-pending.ts +0 -164
  245. package/src/execution/session-reconstructor.ts +0 -678
  246. package/src/execution/session-runner.ts +0 -1781
  247. package/src/execution/sessions-index.ts +0 -304
  248. package/src/execution/spawn-event-adapter.ts +0 -363
  249. package/src/execution/stdin-writer.ts +0 -198
  250. package/src/execution/stream-sink.ts +0 -126
  251. package/src/execution/subagent-service.ts +0 -2141
  252. package/src/execution/subprocess-agent-runner.ts +0 -317
  253. package/src/execution/temp-prompt.ts +0 -62
  254. package/src/execution/tombstone-store.ts +0 -72
  255. package/src/execution/turn-limiter.ts +0 -102
  256. package/src/execution/types.ts +0 -973
  257. package/src/execution/ui-channels.ts +0 -216
  258. package/src/execution/ui-interaction-model.ts +0 -48
  259. package/src/execution/ui-request-handler-factory.ts +0 -212
  260. package/src/execution/ui-request-observability.ts +0 -81
  261. package/src/execution/ui-request-queue.ts +0 -184
  262. package/src/execution/worktree-manager.ts +0 -688
  263. package/src/execution/worktree-registry.ts +0 -222
  264. package/src/orchestration/__tests__/__fixtures__/worker-template.snapshot.txt +0 -349
  265. package/src/orchestration/__tests__/agent-call-catch-fallback.test.ts +0 -202
  266. package/src/orchestration/__tests__/agent-call-stream.test.ts +0 -152
  267. package/src/orchestration/__tests__/args-validator.test.ts +0 -143
  268. package/src/orchestration/__tests__/config-loader.test.ts +0 -503
  269. package/src/orchestration/__tests__/error-recovery-handlers.test.ts +0 -809
  270. package/src/orchestration/__tests__/error-recovery-postmessage-defense.test.ts +0 -405
  271. package/src/orchestration/__tests__/error-recovery-serialize-failed-result.test.ts +0 -56
  272. package/src/orchestration/__tests__/error-recovery-workflow-call.test.ts +0 -166
  273. package/src/orchestration/__tests__/execute-agent-call.test.ts +0 -451
  274. package/src/orchestration/__tests__/jsonl-run-store-corrupt-entry.test.ts +0 -150
  275. package/src/orchestration/__tests__/jsonl-run-store-loadall-sources.test.ts +0 -171
  276. package/src/orchestration/__tests__/jsonl-run-store-retention.test.ts +0 -202
  277. package/src/orchestration/__tests__/jsonl-run-store-session-file.test.ts +0 -1030
  278. package/src/orchestration/__tests__/launcher-nested-workflow.test.ts +0 -600
  279. package/src/orchestration/__tests__/lifecycle-runid-injection.test.ts +0 -96
  280. package/src/orchestration/__tests__/lifecycle.test.ts +0 -659
  281. package/src/orchestration/__tests__/non-cloneable-return-e2e.test.ts +0 -95
  282. package/src/orchestration/__tests__/review-fix-loop-e2e.test.ts +0 -2025
  283. package/src/orchestration/__tests__/script-lint.test.ts +0 -831
  284. package/src/orchestration/__tests__/skill-discovery.test.ts +0 -201
  285. package/src/orchestration/__tests__/test-mocks.ts +0 -197
  286. package/src/orchestration/__tests__/worker-exit-without-result.test.ts +0 -368
  287. package/src/orchestration/__tests__/worker-host.test.ts +0 -120
  288. package/src/orchestration/__tests__/worker-returnmeta-passthrough.test.ts +0 -164
  289. package/src/orchestration/__tests__/worker-script-builder-runtime.test.ts +0 -563
  290. package/src/orchestration/__tests__/worker-script-builder.test.ts +0 -309
  291. package/src/orchestration/__tests__/worker-script-template-snapshot.test.ts +0 -129
  292. package/src/orchestration/__tests__/workflow-nesting-e2e.test.ts +0 -317
  293. package/src/orchestration/__tests__/workflow-script-lint-memo.test.ts +0 -110
  294. package/src/orchestration/__tests__/workflows-e2e.test.ts +0 -537
  295. package/src/orchestration/agent-opts-resolver.ts +0 -174
  296. package/src/orchestration/args-validator.ts +0 -127
  297. package/src/orchestration/config-loader.ts +0 -315
  298. package/src/orchestration/error-recovery.ts +0 -1018
  299. package/src/orchestration/execute-agent-call.ts +0 -256
  300. package/src/orchestration/launcher.ts +0 -455
  301. package/src/orchestration/lifecycle.ts +0 -399
  302. package/src/orchestration/models/__tests__/budget.test.ts +0 -307
  303. package/src/orchestration/models/__tests__/trace.test.ts +0 -408
  304. package/src/orchestration/models/agent-call.ts +0 -83
  305. package/src/orchestration/models/budget.ts +0 -118
  306. package/src/orchestration/models/ports.ts +0 -164
  307. package/src/orchestration/models/run-runtime.ts +0 -104
  308. package/src/orchestration/models/run-spec.ts +0 -83
  309. package/src/orchestration/models/run-state.ts +0 -44
  310. package/src/orchestration/models/trace.ts +0 -183
  311. package/src/orchestration/models/types.ts +0 -301
  312. package/src/orchestration/models/workflow-run.ts +0 -254
  313. package/src/orchestration/models/workflow-script-registry.ts +0 -35
  314. package/src/orchestration/models/workflow-script.ts +0 -117
  315. package/src/orchestration/script-lint.ts +0 -766
  316. package/src/orchestration/skill-discovery.ts +0 -115
  317. package/src/orchestration/worker-handle.ts +0 -115
  318. package/src/orchestration/worker-host.ts +0 -98
  319. package/src/orchestration/worker-script-builder.ts +0 -421
  320. package/src/orchestration/workflow-files.ts +0 -85
  321. package/src/orchestration/workflow-script-registry-impl.ts +0 -133
  322. package/src/shared/__tests__/agent-ref.test.ts +0 -34
  323. package/src/shared/__tests__/meta-parser.test.ts +0 -304
  324. package/src/shared/__tests__/model-ref.test.ts +0 -306
  325. package/src/shared/__tests__/resource-discovery-manifest-cache.test.ts +0 -280
  326. package/src/shared/__tests__/resource-discovery.test.ts +0 -736
  327. package/src/shared/__tests__/resource-meta.test.ts +0 -51
  328. package/src/shared/__tests__/schema-jsonify.test.ts +0 -81
  329. package/src/shared/__tests__/timer-delay.test.ts +0 -61
  330. package/src/shared/agent-event.ts +0 -13
  331. package/src/shared/agent-ref.ts +0 -57
  332. package/src/shared/meta-parser.ts +0 -261
  333. package/src/shared/model-ref.ts +0 -286
  334. package/src/shared/resource-discovery.ts +0 -811
  335. package/src/shared/resource-meta.ts +0 -65
  336. package/src/shared/schema-env.ts +0 -44
  337. package/src/shared/schema-jsonify.ts +0 -58
  338. package/src/shared/timer-delay.ts +0 -54
  339. package/src/shared/xml-injection.ts +0 -35
  340. package/workflows/README.md +0 -81
  341. package/workflows/_shared/agent-refs.cjs +0 -40
  342. package/workflows/chain.js +0 -131
  343. package/workflows/map-reduce.js +0 -174
  344. package/workflows/parallel.js +0 -148
  345. package/workflows/review-fix-loop-utils.cjs +0 -1309
  346. package/workflows/review-fix-loop.js +0 -1404
  347. package/workflows/scatter-gather.js +0 -178
@@ -1,242 +0,0 @@
1
- // src/execution/__tests__/helpers/spawn-mock.ts
2
- //
3
- // run-spawn-* 三文件(integration/edges/rpc-mode)共享的 FakeChild + 工具函数。
4
- //
5
- // 背景:vitest 的 vi.mock 会被提升到文件顶部,工厂函数体内**不能引用顶层 import 的变量**
6
- //(vitest 官方文档明确警告)。例外:async 工厂内可用 `await import()`(在模块需求时执行,
7
- // 此时所有模块已加载)。故本 helper 不导出「mock 工厂函数」(无法被 vi.mock 顶层引用),
8
- // 而是导出 **FakeChild class + 工具函数**,让各测试文件的 vi.mock 工厂用 `await import`
9
- // 动态取回 FakeChild。这样每个 vi.mock 工厂从 ~15 行(定义 class + vi.fn)缩到 ~4 行,
10
- // 且 FakeChild 定义只有一个权威来源。
11
- //
12
- // 共享内容(原 ~80 行 × 3 重复):
13
- // - FakeChild:EventEmitter + PassThrough stdout/stderr/stdin + kill 记录(class 定义)
14
- // - lastSpawnedChild(mockSpawn):从 mock.results 取回最近 spawn 返回的 FakeChild
15
- // - waitForSpawn(mockSpawn):轮询等 spawn 被调(比 vi.waitFor 在该 vitest 版本下可靠)
16
- // - emitStdoutLine / sessionHeader:构造 stdout 行的辅助
17
- // - makeRecord / makeOpts / makeCtx:构造最小合法的 record/opts/ctx(3 文件一致)
18
- //
19
- // 各测试文件 vi.mock 模式(每文件独立声明,vitest 的 vi.mock 是文件作用域):
20
- // ```ts
21
- // vi.mock("node:child_process", async () => {
22
- // const { EventEmitter } = await import("node:events");
23
- // const events = { EventEmitter }; // 兼容旧注释
24
- // const { FakeChild } = await import("./helpers/spawn-mock.ts");
25
- // return {
26
- // spawn: vi.fn(() => new FakeChild()),
27
- // // buildEnvBlock 用 execFile 异步取 git branch:默认 err-first 兜底(catch → branch=""),
28
- // // 形态同 worktree-manager.test.ts 的 setupExecFile
29
- // execFile: vi.fn(
30
- // (
31
- // _cmd: string,
32
- // _args: readonly string[],
33
- // _opts: unknown,
34
- // cb: (err: Error | null, stdout?: string, stderr?: string) => void,
35
- // ) => cb(new Error("execFile not configured in this test")),
36
- // ),
37
- // };
38
- // });
39
- // vi.mock("node:fs", async () => {
40
- // const actual = await import("node:fs");
41
- // return {
42
- // default: { ...actual, mkdirSync: vi.fn(), existsSync: vi.fn(() => false),
43
- // appendFileSync: vi.fn(), writeFileSync: vi.fn(), readdirSync: vi.fn(() => []) },
44
- // mkdirSync: vi.fn(), existsSync: vi.fn(() => false),
45
- // appendFileSync: vi.fn(), writeFileSync: vi.fn(), readdirSync: vi.fn(() => []),
46
- // promises: actual.promises,
47
- // };
48
- // });
49
- // vi.mock("../alive-store.ts", () => ({ writeAliveMarker: vi.fn() }));
50
- // vi.mock("../temp-prompt.ts", () => ({
51
- // writePromptToTempFile: vi.fn(async (agent: string) => {
52
- // const safeName = agent.replace(/[^\w.-]+/g, "_");
53
- // return { dir: `/tmp/fake-${safeName}`, filePath: `/tmp/fake-${safeName}/prompt-${safeName}.md` };
54
- // }),
55
- // cleanupTempPrompt: vi.fn(async () => {}),
56
- // }));
57
- // ```
58
-
59
- import type { ChildProcess } from "node:child_process";
60
- import { EventEmitter } from "node:events";
61
- import { PassThrough } from "node:stream";
62
-
63
- import { createRecord } from "../../execution-record.ts";
64
- import type { RunOptions, SessionRunnerContext } from "../../session-runner.ts";
65
-
66
- /** FakeChild 的假 pid(满足 ChildProcess.pid 形状,无真实进程语义)。 */
67
- const FAKE_PID = 12345;
68
-
69
- /** waitForSpawn 默认超时(ms),超时说明 spawn 未被调(runSpawn 前置 await 卡死)。 */
70
- const WAIT_SPAWN_TIMEOUT_MS = 1000;
71
-
72
- /** waitForSpawn 轮询间隔(ms),微任务级等待的粒度。 */
73
- const SPAWN_POLL_INTERVAL_MS = 5;
74
-
75
- /**
76
- * FakeChild:模拟 ChildProcess(EventEmitter + PassThrough streams)。
77
- *
78
- * 测试通过 mockSpawn.mock.results.at(-1).value 取回实例,控制 emit data/close/error 时序。
79
- *
80
- * 导出 class(而非只在工厂内部定义)是为了:
81
- * 1. vi.mock 工厂内 `await import("./helpers/spawn-mock.ts")` 后 `new FakeChild()` 与
82
- * 测试侧 `instanceof FakeChild` / 类型断言用同一个 class。
83
- * 2. C13 e2e 测试可直接 `new FakeChild()` 手动构造 child 喂给 ui-request-queue(不经 spawn)。
84
- */
85
- export class FakeChild extends EventEmitter {
86
- pid = FAKE_PID;
87
- stdout = new PassThrough();
88
- stderr = new PassThrough();
89
- stdin = new PassThrough();
90
- killed = false;
91
- killSignal: string | undefined;
92
- // [race-F4] SIGKILL 升级判定读真 ChildProcess 的 exitCode/signalCode(未退出时均为
93
- // null)——FakeChild 同形提供,测试可赋值模拟已死进程(如 deliverMessage 写后死检测)。
94
- exitCode: number | null = null;
95
- signalCode: string | null = null;
96
- kill(sig?: string): boolean {
97
- this.killed = true;
98
- this.killSignal = sig;
99
- return true;
100
- }
101
- }
102
-
103
- /**
104
- * spawn mock 返回的 fake child 类型(结构子集)。
105
- *
106
- * 测试文件优先 import { FakeChild } 用真实 class 类型;此 interface 仅为兼容现有
107
- * describe 块内 `child: FakeChild` 的类型注解风格(与原代码一致,降低 diff 噪声)。
108
- */
109
- export interface FakeChildLike {
110
- pid: number;
111
- stdout: PassThrough;
112
- stderr: PassThrough;
113
- stdin: PassThrough;
114
- killed: boolean;
115
- killSignal: string | undefined;
116
- kill(sig?: string): boolean;
117
- emit(event: string, ...args: unknown[]): boolean;
118
- }
119
-
120
- /**
121
- * 从最近一次 spawn 调用取回返回的 FakeChild(测试控制器)。
122
- *
123
- * @param mockSpawn 调用方用 `vi.mocked(spawn)` 取回的 mock 引用
124
- */
125
- export function lastSpawnedChild<
126
- T extends { mock: { results: Array<{ value: ChildProcess | unknown }> } },
127
- >(mockSpawn: T): FakeChild {
128
- const result = mockSpawn.mock.results.at(-1);
129
- if (!result) throw new Error("spawn was not called yet");
130
- return result.value as FakeChild;
131
- }
132
-
133
- /**
134
- * 等待 runSpawn 内部调到 spawn(拿到 child 控制器)。
135
- *
136
- * runSpawn 是 async,spawn 在 buildEnvBlock + writePromptToTempFile 两个 await 之后才调
137
- *(均为微任务级延迟)。用 setTimeout 轮询 mockSpawn.mock.results,比 vi.waitFor 在该
138
- * vitest 版本下更可靠(vi.waitFor 偶发过早 resolve 导致后续读取竞态)。
139
- *
140
- * [快照语义] 等待的是「调用时刻之后**新发生**的一次 spawn」,而非「任意历史 spawn」。
141
- * 旧实现只在 results 为空时等待(即只在文件/测试内首次 spawn 有效):同一文件第二次
142
- * runSpawn 时立即返回,而新 runSpawn 尚未跨过 await 到达 spawn → lastSpawnedChild 取回
143
- * **上一次**的 child,stdout/close 事件发给已死的旧 child,当前 runSpawn 永远收不到
144
- * close → 测试超时。buildEnvBlock 异步化(多一个 await 微任务)后该隐式时序假设失效,
145
- * 故改为快照 baseline:等待 results.length 超过调用时的快照值,天然对「每测试/每文件
146
- * N 次 spawn」都正确(调用前先记 baseline,本次 runSpawn 的 spawn 必然使 length 增长)。
147
- *
148
- * @param mockSpawn 调用方用 `vi.mocked(spawn)` 取回的 mock 引用
149
- */
150
- export async function waitForSpawn<
151
- T extends { mock: { results: unknown[] } },
152
- >(mockSpawn: T, timeoutMs: number = WAIT_SPAWN_TIMEOUT_MS): Promise<void> {
153
- const start = Date.now();
154
- const baseline = mockSpawn.mock.results.length;
155
- while (mockSpawn.mock.results.length <= baseline) {
156
- if (Date.now() - start > timeoutMs) {
157
- throw new Error(`spawn was not called within ${timeoutMs}ms`);
158
- }
159
- await new Promise((r) => setTimeout(r, SPAWN_POLL_INTERVAL_MS));
160
- }
161
- }
162
-
163
- /** 向 stdout 写一行(自动补换行,runSpawn 按 \n split 行)。 */
164
- export function emitStdoutLine(child: FakeChild, obj: Record<string, unknown>): void {
165
- child.stdout.write(`${JSON.stringify(obj)}\n`);
166
- }
167
-
168
- /** 构造 session header 行(stdout 首行)。 */
169
- export function sessionHeader(id = "sess-abc"): Record<string, unknown> {
170
- return {
171
- type: "session",
172
- id,
173
- timestamp: "2026-07-03T12-00-00-000Z",
174
- cwd: "/tmp/test",
175
- };
176
- }
177
-
178
- /**
179
- * 让 sessionFile 存在校验通过——runSpawn 在进程退出后用 existsSync(record.sessionFile)
180
- * 判断是否补写 identity。默认 mock existsSync 返回 false(兜底查找),此 helper 在指定
181
- * 路径返回 true。
182
- */
183
- export function mockSessionFileExists(
184
- mockExistsSync: { mockImplementation: (fn: (p: unknown) => boolean) => void },
185
- sessionFilePath: string,
186
- ): void {
187
- mockExistsSync.mockImplementation((p: unknown) => String(p) === sessionFilePath);
188
- }
189
-
190
- // ── record / opts / ctx 构造(3 文件一致的最小合法形状)──
191
-
192
- /** 构造最小合法的 ExecutionRecord(runSpawn 入参)。 */
193
- export function makeRecord(id = "run-1") {
194
- return createRecord(id, {
195
- agent: "general-purpose",
196
- model: "test-model",
197
- mode: "sync",
198
- task: "do something",
199
- startedAt: 1_000_000,
200
- rootSessionId: "root-session",
201
- parentRecordId: undefined,
202
- depth: 0,
203
- });
204
- }
205
-
206
- /** 构造最小合法的 RunOptions(runSpawn 入参,可 override 关键字段)。 */
207
- export function makeOpts(overrides: Partial<RunOptions> = {}): RunOptions {
208
- return {
209
- resolved: {
210
- model: {
211
- id: "test-model",
212
- name: "Test Model",
213
- provider: "test",
214
- reasoning: false,
215
- },
216
- thinkingLevel: undefined,
217
- },
218
- agentConfig: undefined,
219
- appendSystemPrompt: undefined,
220
- skillPath: undefined,
221
- schema: undefined,
222
- maxTurns: undefined,
223
- graceTurns: undefined,
224
- signal: undefined,
225
- onEvent: undefined,
226
- ...overrides,
227
- };
228
- }
229
-
230
- /** 构造最小合法的 SessionRunnerContext(runSpawn 入参,可 override 关键字段)。 */
231
- export function makeCtx(overrides: Partial<SessionRunnerContext> = {}): SessionRunnerContext {
232
- return {
233
- cwd: "/tmp/test",
234
- agentDir: "/tmp/test/agents",
235
- skillDirs: [],
236
- mainCwd: "/tmp/test",
237
- mainSessionFile: undefined,
238
- sessionRootId: "root-session-test",
239
- rootCwd: "/tmp/test",
240
- ...overrides,
241
- };
242
- }
@@ -1,87 +0,0 @@
1
- // src/__tests__/host-mode.test.ts
2
- //
3
- // W1 红灯测试:host-mode.ts 主进程运行模式分类工具。
4
- //
5
- // 测试对象:extensions/universal/subagent-workflow/src/execution/host-mode.ts(新建)
6
- // 契约来源:.fix-plans/00-master-summary.md §一 冲突 4 + §2.5(W4 守卫消费点)
7
- //
8
- // 三个导出:
9
- // - resolveHostMode(mode): ExtensionMode | undefined → "tui" | "gui" | "headless"
10
- // - willRespondToAskUser(mode): boolean(tui/gui → true,headless → false)
11
- // - hasInteractiveUI(mode): boolean(非 headless → true)
12
- //
13
- // 红灯原因:host-mode.ts 尚未创建,import 失败。
14
-
15
- import { describe, expect, it } from "vitest";
16
-
17
- import {
18
- hasInteractiveUI,
19
- resolveHostMode,
20
- willRespondToAskUser,
21
- } from "../host-mode.ts";
22
-
23
- describe("resolveHostMode — ExtensionMode 聚合为 HostMode", () => {
24
- it('"tui" → "tui"(纯 Pi TUI,ctx.ui.custom 可用)', () => {
25
- expect(resolveHostMode("tui")).toBe("tui");
26
- });
27
-
28
- it('"rpc" → "gui"(xyz-agent GUI,sidecar 通道)', () => {
29
- expect(resolveHostMode("rpc")).toBe("gui");
30
- });
31
-
32
- it('"json" → "headless"(无交互通道)', () => {
33
- expect(resolveHostMode("json")).toBe("headless");
34
- });
35
-
36
- it('"print" → "headless"(无交互通道)', () => {
37
- expect(resolveHostMode("print")).toBe("headless");
38
- });
39
-
40
- it('undefined → "headless"(向后兼容:mode 未穿透时按 headless)', () => {
41
- expect(resolveHostMode(undefined)).toBe("headless");
42
- });
43
- });
44
-
45
- describe("willRespondToAskUser — 主进程是否响应子进程 ask_user", () => {
46
- it("tui → true(冲突 3 裁决:TUI 必须注入 handler)", () => {
47
- expect(willRespondToAskUser("tui")).toBe(true);
48
- });
49
-
50
- it("rpc → true(GUI 透传所有 UI)", () => {
51
- expect(willRespondToAskUser("rpc")).toBe(true);
52
- });
53
-
54
- it("json → false(headless 无 UI 通道)", () => {
55
- expect(willRespondToAskUser("json")).toBe(false);
56
- });
57
-
58
- it("print → false(headless 无 UI 通道)", () => {
59
- expect(willRespondToAskUser("print")).toBe(false);
60
- });
61
-
62
- it("undefined → false(向后兼容)", () => {
63
- expect(willRespondToAskUser(undefined)).toBe(false);
64
- });
65
- });
66
-
67
- describe("hasInteractiveUI — 是否有交互 UI 通道", () => {
68
- it("tui → true", () => {
69
- expect(hasInteractiveUI("tui")).toBe(true);
70
- });
71
-
72
- it("rpc → true", () => {
73
- expect(hasInteractiveUI("rpc")).toBe(true);
74
- });
75
-
76
- it("json → false", () => {
77
- expect(hasInteractiveUI("json")).toBe(false);
78
- });
79
-
80
- it("print → false", () => {
81
- expect(hasInteractiveUI("print")).toBe(false);
82
- });
83
-
84
- it("undefined → false", () => {
85
- expect(hasInteractiveUI(undefined)).toBe(false);
86
- });
87
- });