@selesai/code 0.8.3 → 0.8.5

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 (518) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +7 -1
  3. package/dist/core/slash-commands.js +1 -0
  4. package/dist/defaults/models.json +41 -55
  5. package/dist/defaults/settings.json +7 -8
  6. package/dist/extensions/handoff-new.ts +1 -1
  7. package/dist/extensions/inline-skills.test.ts +1 -0
  8. package/dist/extensions/inline-skills.ts +1 -1
  9. package/dist/extensions/pi-intercom/CHANGELOG.md +25 -3
  10. package/dist/extensions/pi-intercom/README.md +34 -15
  11. package/dist/extensions/pi-intercom/broker/broker.ts +38 -141
  12. package/dist/extensions/pi-intercom/broker/client-liveness.test.ts +173 -0
  13. package/dist/extensions/pi-intercom/broker/client.ts +78 -150
  14. package/dist/extensions/pi-intercom/broker/extension-state.ts +18 -7
  15. package/dist/extensions/pi-intercom/broker/framing.ts +1 -1
  16. package/dist/extensions/pi-intercom/broker/protocol.ts +182 -0
  17. package/dist/extensions/pi-intercom/broker/spawn.test.ts +106 -7
  18. package/dist/extensions/pi-intercom/broker/spawn.ts +37 -11
  19. package/dist/extensions/pi-intercom/config.test.ts +8 -10
  20. package/dist/extensions/pi-intercom/config.ts +3 -3
  21. package/dist/extensions/pi-intercom/index.ts +218 -147
  22. package/dist/extensions/pi-intercom/intercom.integration.test.ts +891 -103
  23. package/dist/extensions/pi-intercom/package.json +3 -2
  24. package/dist/extensions/pi-intercom/project-agent.test.ts +145 -0
  25. package/dist/extensions/pi-intercom/project-agent.ts +324 -0
  26. package/dist/extensions/pi-intercom/reply-tracker.test.ts +86 -1
  27. package/dist/extensions/pi-intercom/reply-tracker.ts +41 -9
  28. package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +49 -9
  29. package/dist/extensions/pi-intercom/test/inline-message.test.ts +9 -9
  30. package/dist/extensions/pi-intercom/types.ts +3 -1
  31. package/dist/extensions/pi-intercom/ui/inline-message.ts +7 -7
  32. package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +2 -2
  33. package/dist/extensions/pi-powerline-footer/CHANGELOG.md +14 -1
  34. package/dist/extensions/pi-powerline-footer/README.md +20 -37
  35. package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +40 -25
  36. package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +149 -18
  37. package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +1 -0
  38. package/dist/extensions/pi-powerline-footer/editor-performance.ts +99 -0
  39. package/dist/extensions/pi-powerline-footer/git-status.ts +15 -0
  40. package/dist/extensions/pi-powerline-footer/index.ts +394 -317
  41. package/dist/extensions/pi-powerline-footer/package.json +1 -1
  42. package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -12
  43. package/dist/extensions/pi-powerline-footer/queue/store.ts +8 -56
  44. package/dist/extensions/pi-powerline-footer/queue/types.ts +1 -2
  45. package/dist/extensions/pi-powerline-footer/segments.ts +0 -3
  46. package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +231 -1
  47. package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +5 -19
  48. package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +43 -0
  49. package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +64 -0
  50. package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +116 -0
  51. package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +19 -149
  52. package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +6 -0
  53. package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +5 -5
  54. package/dist/extensions/pi-powerline-footer/types.ts +1 -2
  55. package/dist/extensions/pi-subagents/CHANGELOG.md +225 -14
  56. package/dist/extensions/pi-subagents/README.md +66 -1613
  57. package/dist/extensions/pi-subagents/agents/builder.md +0 -1
  58. package/dist/extensions/pi-subagents/agents/delegate.md +14 -0
  59. package/dist/extensions/pi-subagents/agents/oracle.md +74 -0
  60. package/dist/extensions/pi-subagents/agents/reviewer.md +78 -0
  61. package/dist/extensions/pi-subagents/agents/scout.md +50 -0
  62. package/dist/extensions/pi-subagents/agents/worker.md +58 -0
  63. package/dist/extensions/pi-subagents/docs/configuration.md +372 -0
  64. package/dist/extensions/pi-subagents/docs/extension-api.md +308 -0
  65. package/dist/extensions/pi-subagents/docs/missions.md +119 -0
  66. package/dist/extensions/pi-subagents/docs/models.md +192 -0
  67. package/dist/extensions/pi-subagents/docs/observability.md +174 -0
  68. package/dist/extensions/pi-subagents/docs/tool-reference.md +343 -0
  69. package/dist/extensions/pi-subagents/docs/watchdog.md +176 -0
  70. package/dist/extensions/pi-subagents/docs/workflows.md +163 -0
  71. package/dist/extensions/pi-subagents/inspector-runner.mjs +11 -0
  72. package/dist/extensions/pi-subagents/package-lock.json +152 -194
  73. package/dist/extensions/pi-subagents/package.json +9 -10
  74. package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
  75. package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +9 -9
  76. package/dist/extensions/pi-subagents/prompts/parallel-research.md +6 -6
  77. package/dist/extensions/pi-subagents/prompts/parallel-review.md +8 -8
  78. package/dist/extensions/pi-subagents/prompts/review-loop.md +12 -12
  79. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +22 -17
  80. package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +77 -72
  81. package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +177 -69
  82. package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +28 -8
  83. package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +88 -66
  84. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +3 -3
  85. package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +624 -0
  86. package/dist/extensions/pi-subagents/src/agents/agents.ts +38 -19
  87. package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +7 -3
  88. package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +2 -2
  89. package/dist/extensions/pi-subagents/src/agents/skills.ts +2 -9
  90. package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -2
  91. package/dist/extensions/pi-subagents/src/api/project-panes.ts +30 -0
  92. package/dist/extensions/pi-subagents/src/extension/config.ts +62 -8
  93. package/dist/extensions/pi-subagents/src/extension/control-notices.ts +2 -2
  94. package/dist/extensions/pi-subagents/src/extension/doctor.ts +40 -0
  95. package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +51 -26
  96. package/dist/extensions/pi-subagents/src/extension/index.ts +140 -50
  97. package/dist/extensions/pi-subagents/src/extension/public-execution.ts +77 -0
  98. package/dist/extensions/pi-subagents/src/extension/rpc.ts +18 -24
  99. package/dist/extensions/pi-subagents/src/extension/schemas.ts +58 -21
  100. package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +39 -0
  101. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +47 -25
  102. package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +3 -3
  103. package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +460 -64
  104. package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +4 -1
  105. package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +102 -4
  106. package/dist/extensions/pi-subagents/src/missions/actions.ts +77 -16
  107. package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +162 -0
  108. package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +65 -17
  109. package/dist/extensions/pi-subagents/src/missions/store.ts +151 -9
  110. package/dist/extensions/pi-subagents/src/missions/types.ts +58 -3
  111. package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +260 -0
  112. package/dist/extensions/pi-subagents/src/profiles/profiles.ts +8 -8
  113. package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +374 -0
  114. package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +46 -0
  115. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +158 -36
  116. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +294 -134
  117. package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +26 -4
  118. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +45 -6
  119. package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +33 -15
  120. package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +267 -0
  121. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +145 -60
  122. package/dist/extensions/pi-subagents/src/runs/background/owned-process-tree.ts +104 -0
  123. package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +17 -3
  124. package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +114 -6
  125. package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +33 -0
  126. package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +68 -0
  127. package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +71 -0
  128. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +26 -3
  129. package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +42 -14
  130. package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +12 -24
  131. package/dist/extensions/pi-subagents/src/runs/background/steering.ts +7 -5
  132. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +233 -101
  133. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +17 -4
  134. package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +146 -0
  135. package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +21 -5
  136. package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +85 -0
  137. package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +43 -18
  138. package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +20 -19
  139. package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +40 -2
  140. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +188 -46
  141. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-control.ts +12 -0
  142. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +137 -0
  143. package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +171 -0
  144. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +1365 -252
  145. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +187 -0
  146. package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +178 -26
  147. package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
  148. package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +286 -0
  149. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +2 -0
  150. package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +32 -5
  151. package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +12 -2
  152. package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +3 -0
  153. package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +509 -117
  154. package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +10 -10
  155. package/dist/extensions/pi-subagents/src/runs/shared/run-fanout-budget.ts +280 -0
  156. package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +4 -2
  157. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +189 -32
  158. package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +21 -5
  159. package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +20 -8
  160. package/dist/extensions/pi-subagents/src/shared/artifacts.ts +128 -3
  161. package/dist/extensions/pi-subagents/src/shared/display-text.ts +100 -0
  162. package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +9 -0
  163. package/dist/extensions/pi-subagents/src/shared/fork-context.ts +13 -0
  164. package/dist/extensions/pi-subagents/src/shared/formatters.ts +4 -6
  165. package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +51 -0
  166. package/dist/extensions/pi-subagents/src/shared/settings.ts +41 -11
  167. package/dist/extensions/pi-subagents/src/shared/types.ts +192 -3
  168. package/dist/extensions/pi-subagents/src/shared/utf8.ts +11 -0
  169. package/dist/extensions/pi-subagents/src/shared/utils.ts +46 -34
  170. package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -14
  171. package/dist/extensions/pi-subagents/src/slash/inline-subagents.ts +1 -1
  172. package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +14 -12
  173. package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +176 -21
  174. package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +12 -6
  175. package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +52 -18
  176. package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +36 -5
  177. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +37 -21
  178. package/dist/extensions/pi-subagents/src/tui/fleet.ts +375 -42
  179. package/dist/extensions/pi-subagents/src/tui/render.ts +201 -68
  180. package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +0 -6
  181. package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +5 -4
  182. package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +0 -1
  183. package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +332 -27
  184. package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +15 -15
  185. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
  186. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
  187. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
  188. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
  189. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
  190. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
  191. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
  192. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
  193. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
  194. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
  195. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
  196. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
  197. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
  198. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
  199. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
  200. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
  201. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
  202. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
  203. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
  204. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
  205. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
  206. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
  207. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
  208. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
  209. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
  210. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
  211. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
  212. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
  213. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
  214. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
  215. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
  216. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
  217. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
  218. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
  219. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
  220. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
  221. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
  222. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
  223. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
  224. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
  225. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
  226. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
  227. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
  228. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
  229. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
  230. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
  231. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
  232. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
  233. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
  234. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
  235. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
  236. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
  237. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
  238. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
  239. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
  240. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
  241. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
  242. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
  243. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
  244. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
  245. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
  246. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
  247. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
  248. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
  249. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
  250. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
  251. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
  252. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
  253. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
  254. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
  255. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
  256. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
  257. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
  258. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
  259. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
  260. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
  261. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
  262. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
  263. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
  264. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
  265. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  266. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
  267. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
  268. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
  269. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
  270. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
  271. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
  272. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
  273. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
  274. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
  275. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
  276. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
  277. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
  278. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
  279. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
  280. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
  281. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  282. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  283. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  284. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  285. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  286. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
  287. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  288. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  289. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  290. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
  291. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  292. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
  293. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  294. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  295. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
  296. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
  297. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  298. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  299. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
  300. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
  301. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  302. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  303. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
  304. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  305. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  306. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  307. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
  308. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  309. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  310. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  311. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  312. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  313. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  314. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  315. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  316. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  317. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  318. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
  319. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  320. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
  321. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
  322. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
  323. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
  324. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
  325. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
  326. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
  327. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
  328. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
  329. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
  330. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
  331. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
  332. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
  333. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
  334. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
  335. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
  336. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
  337. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
  338. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
  339. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
  340. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
  341. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
  342. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
  343. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
  344. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
  345. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
  346. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
  347. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
  348. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
  349. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
  350. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
  351. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
  352. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
  353. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
  354. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
  355. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
  356. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
  357. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
  358. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
  359. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
  360. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/index.mjs +84 -0
  361. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +14 -0
  362. package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +102 -15
  363. package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +507 -306
  364. package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +309 -123
  365. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +124 -58
  366. package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +62 -16
  367. package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +167 -113
  368. package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
  369. package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +4 -2
  370. package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +139 -58
  371. package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +324 -59
  372. package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +98 -22
  373. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +106 -106
  374. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +416 -106
  375. package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +287 -17
  376. package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +1122 -96
  377. package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +107 -20
  378. package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +9 -9
  379. package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +26 -6
  380. package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +2 -2
  381. package/dist/extensions/pi-subagents/test/support/helpers.ts +2 -0
  382. package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
  383. package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +0 -8
  384. package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +194 -59
  385. package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +317 -0
  386. package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +15 -15
  387. package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +66 -66
  388. package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +334 -248
  389. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +52 -52
  390. package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +26 -26
  391. package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +118 -99
  392. package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +160 -0
  393. package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +9 -9
  394. package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +43 -1
  395. package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +36 -10
  396. package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +387 -30
  397. package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +9 -9
  398. package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +18 -3
  399. package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +99 -40
  400. package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +5 -3
  401. package/dist/extensions/pi-subagents/test/unit/builtin-agent-documentation.test.ts +7 -7
  402. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +19 -19
  403. package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +94 -23
  404. package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +9 -9
  405. package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +20 -20
  406. package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +9 -9
  407. package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +35 -5
  408. package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +2 -2
  409. package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +70 -52
  410. package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +187 -0
  411. package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +125 -71
  412. package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +18 -3
  413. package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +12 -12
  414. package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +17 -23
  415. package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +30 -2
  416. package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +25 -25
  417. package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +3 -3
  418. package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +15 -0
  419. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +91 -47
  420. package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +468 -38
  421. package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +14 -4
  422. package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +37 -0
  423. package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +69 -0
  424. package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +79 -2
  425. package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +102 -49
  426. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +98 -32
  427. package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +7 -6
  428. package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +171 -0
  429. package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +116 -0
  430. package/dist/extensions/pi-subagents/test/unit/mission-lifecycle.test.ts +81 -7
  431. package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +289 -13
  432. package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +42 -1
  433. package/dist/extensions/pi-subagents/test/unit/model-scope-settings.test.ts +2 -2
  434. package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +11 -2
  435. package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +84 -10
  436. package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +122 -8
  437. package/dist/extensions/pi-subagents/test/unit/nested-events.test.ts +8 -8
  438. package/dist/extensions/pi-subagents/test/unit/notify.test.ts +24 -24
  439. package/dist/extensions/pi-subagents/test/unit/owned-process-tree.test.ts +69 -0
  440. package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +16 -2
  441. package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +7 -7
  442. package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +10 -10
  443. package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +3 -3
  444. package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +26 -17
  445. package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +405 -0
  446. package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +440 -92
  447. package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +24 -8
  448. package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +6 -6
  449. package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +43 -43
  450. package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +13 -13
  451. package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +59 -6
  452. package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +19 -19
  453. package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +243 -0
  454. package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +68 -168
  455. package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +58 -15
  456. package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +51 -0
  457. package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +66 -0
  458. package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +47 -28
  459. package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +12 -12
  460. package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +57 -0
  461. package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +111 -31
  462. package/dist/extensions/pi-subagents/test/unit/run-fanout-budget.test.ts +121 -0
  463. package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +1 -1
  464. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +65 -50
  465. package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +69 -28
  466. package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +67 -0
  467. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +60 -44
  468. package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +424 -49
  469. package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +28 -0
  470. package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +23 -1
  471. package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +32 -5
  472. package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +13 -13
  473. package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +130 -92
  474. package/dist/extensions/pi-subagents/test/unit/steering.test.ts +2 -2
  475. package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +85 -0
  476. package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +35 -35
  477. package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +24 -0
  478. package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +312 -22
  479. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +150 -15
  480. package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +65 -26
  481. package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +138 -0
  482. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +76 -25
  483. package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +5 -5
  484. package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +55 -6
  485. package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +13 -13
  486. package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
  487. package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +1 -1
  488. package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +8 -8
  489. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +6 -6
  490. package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +138 -11
  491. package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +8 -8
  492. package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +113 -0
  493. package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +68 -7
  494. package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +6 -6
  495. package/dist/extensions/workflow/extension.ts +21 -19
  496. package/dist/extensions/workflow/modes.ts +65 -0
  497. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  498. package/dist/modes/interactive/interactive-mode.js +48 -1
  499. package/dist/skills/pi-subagents/SKILL.md +20 -15
  500. package/dist/skills/pi-subagents/references/constraints-and-recipes.md +77 -83
  501. package/dist/skills/pi-subagents/references/execution-controls.md +215 -106
  502. package/dist/skills/pi-subagents/references/management-authoring-rpc.md +29 -9
  503. package/dist/skills/pi-subagents/references/prompting-and-roles.md +58 -43
  504. package/docs/plans/workflow-autoloop-reference.md +192 -0
  505. package/docs/plans/workflow-subagent-consolidation-planb.md +374 -0
  506. package/docs/plans/workflow-subagent-scripted-merge.md +406 -0
  507. package/docs/quickstart.md +27 -43
  508. package/docs/settings.md +4 -0
  509. package/docs/usage.md +1 -0
  510. package/package.json +2 -1
  511. package/dist/extensions/workflow/adapter.ts +0 -949
  512. package/dist/extensions/workflow/modes/loop.ts +0 -74
  513. package/dist/extensions/workflow/modes/prototype.ts +0 -170
  514. package/dist/extensions/workflow/modes/quicktype.ts +0 -150
  515. package/dist/extensions/workflow/modes/task.ts +0 -105
  516. package/dist/extensions/workflow/run-state.ts +0 -124
  517. package/dist/extensions/workflow/state-machine.ts +0 -484
  518. package/dist/extensions/workflow/validators.ts +0 -42
@@ -34,6 +34,8 @@ import {
34
34
  import { discoverAvailableSkills, normalizeSkillInput } from "../../agents/skills.ts";
35
35
  import { INTERCOM_BRIDGE_MARKER } from "../../intercom/intercom-bridge.ts";
36
36
  import { runSync } from "./execution.ts";
37
+ import { createTaskMutationArbiter } from "../shared/llm-intent-arbiter.ts";
38
+ import { workflowForegroundSteeringLaunchOptions } from "./workflow-foreground-steering.ts";
37
39
  import {
38
40
  beginForegroundChild,
39
41
  finishForegroundChild,
@@ -41,6 +43,7 @@ import {
41
43
  settleForegroundSchedulingOwner,
42
44
  updateForegroundChild,
43
45
  } from "./foreground-control.ts";
46
+ import { updateLiveEffectivePrompt } from "./prompt-audit.ts";
44
47
  import { buildChainSummary } from "../../shared/formatters.ts";
45
48
  import { compactForegroundDetails, getSingleResultOutput, mapConcurrent, resolveChildCwd, sumResultsCost, sumResultsUsage } from "../../shared/utils.ts";
46
49
  import { DEFAULT_GLOBAL_CONCURRENCY_LIMIT, Semaphore } from "../shared/parallel-utils.ts";
@@ -70,6 +73,7 @@ import {
70
73
  type ResolvedControlConfig,
71
74
  type ResolvedTurnBudget,
72
75
  type ResolvedToolBudget,
76
+ type RunFanoutBudgetDescriptor,
73
77
  type SingleResult,
74
78
  type ToolBudgetConfig,
75
79
  type ChainCheckpointState,
@@ -85,6 +89,7 @@ import { ChainOutputValidationError, outputEntryFromResult, resolveOutputReferen
85
89
  import { createStructuredOutputRuntime } from "../shared/structured-output.ts";
86
90
  import { collectDynamicResults, DynamicFanoutError, materializeDynamicParallelStep, validateDynamicCollection, type DynamicCollectedResult } from "../shared/dynamic-fanout.ts";
87
91
  import { acceptanceFailureMessage, aggregateAcceptanceReport, evaluateAcceptance, resolveEffectiveAcceptance } from "../shared/acceptance.ts";
92
+ import { claimRunFanoutBatch, RunFanoutLimitError } from "../shared/run-fanout-budget.ts";
88
93
  import { isAgentContractV1 } from "../shared/agent-contract.ts";
89
94
  import type { ChainOutputMap } from "../../shared/types.ts";
90
95
  import { validateToolBudgetConfig } from "../shared/tool-budget.ts";
@@ -166,6 +171,7 @@ interface ParallelChainRunInput {
166
171
  configToolBudget?: ToolBudgetConfig;
167
172
  globalSemaphore?: Semaphore;
168
173
  capabilityCeiling?: ResolvedSubagentCapabilityCeiling;
174
+ runFanoutBudget?: RunFanoutBudgetDescriptor;
169
175
  permissions?: PermissionConfig;
170
176
  dynamic?: boolean;
171
177
  }
@@ -367,7 +373,11 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
367
373
  beginForegroundChild(input.foregroundControl, {
368
374
  index: childIndex,
369
375
  agent: task.agent,
370
- description: cleanTask.trim(),
376
+ authoredTask: cleanTask,
377
+ effectivePrompt: taskStr,
378
+ cwd: taskCwd,
379
+ ...(outputPath ? { outputPath } : {}),
380
+ description: `${task.agent} child`,
371
381
  ...(effectiveModel ? { model: effectiveModel } : {}),
372
382
  ...(thinking ? { thinking } : {}),
373
383
  interrupt: () => {
@@ -387,7 +397,10 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
387
397
  result = await runSync(input.ctx.cwd, input.agents, task.agent, taskStr, {
388
398
  permissions: input.permissions,
389
399
  parentSessionId: input.ctx.sessionManager.getSessionId() ?? undefined,
400
+ llmIntentArbiter: createTaskMutationArbiter(input.ctx),
401
+ ...workflowForegroundSteeringLaunchOptions(input.foregroundControl, childIndex),
390
402
  capabilityCeiling: input.capabilityCeiling,
403
+ runFanoutBudget: input.runFanoutBudget ? { ...input.runFanoutBudget, parentPath: `${input.runFanoutBudget.parentPath ? `${input.runFanoutBudget.parentPath}/` : ""}chain[${input.stepIndex}]${input.dynamic ? `.expand[${taskIndex}]` : `.parallel[${taskIndex}]`}` } : undefined,
391
404
  context: input.contextForAgent?.(task.agent),
392
405
  cwd: taskCwd,
393
406
  signal: input.signal,
@@ -420,6 +433,7 @@ async function runParallelChainTasks(input: ParallelChainRunInput): Promise<Sing
420
433
  agentContract,
421
434
  acceptance: task.acceptance,
422
435
  acceptanceContext: { mode: "chain", dynamic: input.dynamic && task.acceptance === undefined },
436
+ onEffectivePrompt: input.foregroundControl ? (prompt) => updateLiveEffectivePrompt(input.foregroundControl!, childIndex, prompt) : undefined,
423
437
  timeoutMs: input.timeoutMs,
424
438
  deadlineAt: input.deadlineAt,
425
439
  turnBudget: input.turnBudget,
@@ -538,6 +552,7 @@ interface ChainExecutionParams {
538
552
  /** Global cap on simultaneously-running tasks within this chain. Defaults to DEFAULT_GLOBAL_CONCURRENCY_LIMIT. */
539
553
  globalConcurrencyLimit?: number;
540
554
  capabilityCeiling?: ResolvedSubagentCapabilityCeiling;
555
+ runFanoutBudget?: RunFanoutBudgetDescriptor;
541
556
  }
542
557
 
543
558
  interface ChainExecutionResult {
@@ -874,6 +889,7 @@ ${step.message}` : ""}` }],
874
889
  configToolBudget: params.configToolBudget,
875
890
  globalSemaphore,
876
891
  permissions: params.permissions,
892
+ runFanoutBudget: params.runFanoutBudget,
877
893
  });
878
894
  globalTaskIndex += step.parallel.length;
879
895
 
@@ -1000,6 +1016,19 @@ ${step.message}` : ""}` }],
1000
1016
  return buildChainExecutionErrorResult(message, makeDetailsInput({ currentStepIndex: stepIndex, currentFlatIndex: globalTaskIndex }));
1001
1017
  }
1002
1018
 
1019
+ try {
1020
+ if (params.runFanoutBudget) claimRunFanoutBatch(params.runFanoutBudget, materialized.parallel.map((_, itemIndex) => `chain[${stepIndex}].expand[${itemIndex}]`));
1021
+ } catch (error) {
1022
+ const message = error instanceof Error ? error.message : String(error);
1023
+ dynamicGroupStatuses[stepIndex] = { status: "failed", error: message };
1024
+ const result = buildChainExecutionErrorResult(message, makeDetailsInput({ currentStepIndex: stepIndex, currentFlatIndex: globalTaskIndex }));
1025
+ if (error instanceof RunFanoutLimitError) {
1026
+ result.details.runFanoutBudget = error.snapshot;
1027
+ result.details.runFanoutRejection = error.rejection;
1028
+ }
1029
+ return result;
1030
+ }
1031
+
1003
1032
  dynamicChildren[stepIndex] = materialized.items.map((item, itemIndex) => ({
1004
1033
  agent: step.parallel.agent,
1005
1034
  label: materialized.parallel[itemIndex]?.label,
@@ -1135,6 +1164,7 @@ ${step.message}` : ""}` }],
1135
1164
  configToolBudget: params.configToolBudget,
1136
1165
  globalSemaphore,
1137
1166
  permissions: params.permissions,
1167
+ runFanoutBudget: params.runFanoutBudget,
1138
1168
  dynamic: true,
1139
1169
  });
1140
1170
  globalTaskIndex = dynamicStartIndex + reservedDynamicItems;
@@ -1330,7 +1360,11 @@ ${step.message}` : ""}` }],
1330
1360
  beginForegroundChild(foregroundControl, {
1331
1361
  index: childIndex,
1332
1362
  agent: seqStep.agent,
1333
- description: cleanTask.trim(),
1363
+ authoredTask: cleanTask,
1364
+ effectivePrompt: stepTask,
1365
+ cwd,
1366
+ ...(outputPath ? { outputPath } : {}),
1367
+ description: `${seqStep.agent} child`,
1334
1368
  ...(effectiveModel ? { model: effectiveModel } : {}),
1335
1369
  ...(thinking ? { thinking } : {}),
1336
1370
  interrupt: () => {
@@ -1367,7 +1401,10 @@ ${step.message}` : ""}` }],
1367
1401
  r = await runSync(ctx.cwd, agents, seqStep.agent, stepTask, {
1368
1402
  permissions: params.permissions,
1369
1403
  parentSessionId: ctx.sessionManager.getSessionId() ?? undefined,
1404
+ llmIntentArbiter: createTaskMutationArbiter(ctx),
1405
+ ...workflowForegroundSteeringLaunchOptions(params.foregroundControl, childIndex),
1370
1406
  capabilityCeiling: params.capabilityCeiling,
1407
+ runFanoutBudget: params.runFanoutBudget ? { ...params.runFanoutBudget, parentPath: `${params.runFanoutBudget.parentPath ? `${params.runFanoutBudget.parentPath}/` : ""}chain[${stepIndex}]` } : undefined,
1371
1408
  context: params.contextForAgent?.(seqStep.agent),
1372
1409
  cwd: resolveChildCwd(cwd ?? ctx.cwd, seqStep.cwd),
1373
1410
  signal,
@@ -1400,6 +1437,7 @@ ${step.message}` : ""}` }],
1400
1437
  agentContract,
1401
1438
  acceptance: seqStep.acceptance,
1402
1439
  acceptanceContext: { mode: "chain" },
1440
+ onEffectivePrompt: foregroundControl ? (prompt) => updateLiveEffectivePrompt(foregroundControl, childIndex, prompt) : undefined,
1403
1441
  timeoutMs: params.timeoutMs,
1404
1442
  deadlineAt,
1405
1443
  turnBudget: params.turnBudget,
@@ -7,6 +7,8 @@ import { existsSync, unlinkSync } from "node:fs";
7
7
  import * as path from "node:path";
8
8
  import type { Message } from "@earendil-works/pi-ai";
9
9
  import type { AgentConfig } from "../../agents/agents.ts";
10
+ import { appendAgentRefinementOverlay } from "../../agents/agent-refinements.ts";
11
+ import { alignForkedSessionCwd } from "../../shared/fork-context.ts";
10
12
  import {
11
13
  ensureArtifactsDir,
12
14
  formatOutputArtifactContent,
@@ -52,22 +54,25 @@ import {
52
54
  import { buildSkillInjection, resolveSkillsWithFallback } from "../../agents/skills.ts";
53
55
  import { buildAgentMemoryInjection } from "../../agents/agent-memory.ts";
54
56
  import { evaluateCompletionMutationGuard } from "../shared/completion-guard.ts";
57
+ import { arbitrateCompletionGuardRescue } from "../shared/llm-intent-arbiter.ts";
55
58
  import { getPiSpawnCommand } from "../shared/pi-spawn.ts";
56
59
  import { createJsonlWriter } from "../../shared/jsonl-writer.ts";
57
60
  import { attachPostExitStdioGuard, trySignalChild } from "../../shared/post-exit-stdio-guard.ts";
58
61
  import { resolvePermissionRules } from "../shared/permissions.ts";
59
- import { applyThinkingSuffix, buildPiArgs, cleanupTempDir, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan } from "../shared/pi-args.ts";
62
+ import { applyThinkingSuffix, buildPiArgs, cleanupTempDir, projectLaunchResolvedChildExtensions, resolvePiLaunchToolPlan, type SubagentTaskDelivery } from "../shared/pi-args.ts";
60
63
  import { readRuntimeAcknowledgedExtensions } from "../shared/runtime-acknowledged-extensions.ts";
61
64
  import { assertAgentAllowedByCapabilityCeiling, decodeSubagentCapabilityCeiling, intersectSubagentCapabilityCeilings, resolveCurrentSubagentCapabilityCeiling, SUBAGENT_CAPABILITY_CEILING_ENV } from "../shared/capability-ceiling.ts";
62
65
  import { resolveEffectiveThinking } from "../../shared/model-info.ts";
63
66
  import { MISSING_STRUCTURED_OUTPUT_CALL_ERROR, readStructuredOutput } from "../shared/structured-output.ts";
64
67
  import { formatProcessSignalError, isUnexplainedProcessSignal } from "../shared/process-signal.ts";
65
68
  import { readChildToolDiagnosticError } from "../shared/tool-availability.ts";
66
- import { captureSingleOutputSnapshot, extractChildWrittenOutput, formatSavedOutputReference, injectOutputPathSystemPrompt, resolveSingleOutput, validateFileOnlyOutputMode, type SingleOutputSnapshot } from "../shared/single-output.ts";
69
+ import { captureSingleOutputSnapshot, extractChildWrittenOutput, finalizeSingleOutput, formatSavedOutputReference, injectOutputPathSystemPrompt, resolveSingleOutput, validateFileOnlyOutputMode, type SingleOutputSnapshot } from "../shared/single-output.ts";
67
70
  import {
68
71
  buildModelCandidates,
69
72
  formatModelAttemptNote,
73
+ formatModelRetryNote,
70
74
  isRetryableModelFailure,
75
+ MODEL_RETRY_DELAYS_MS,
71
76
  } from "../shared/model-fallback.ts";
72
77
  import {
73
78
  SUBAGENT_STARTUP_RETRY_DELAYS_MS,
@@ -87,7 +92,8 @@ import {
87
92
  shouldEscalateMutatingFailures,
88
93
  summarizeRecentMutatingFailures,
89
94
  } from "../shared/long-running-guard.ts";
90
- import { acceptanceFailureMessage, buildSkippedAcceptanceLedger, evaluateAcceptance, formatAcceptancePrompt, resolveEffectiveAcceptance, stripAcceptanceReport } from "../shared/acceptance.ts";
95
+ import { acceptanceFailureMessage, buildSkippedAcceptanceLedger, evaluateAcceptance, formatAcceptancePrompt, resolveEffectiveAcceptance, stripAcceptanceReport, validateAcceptanceInput } from "../shared/acceptance.ts";
96
+ import { PROMPT_REDACTED } from "../../shared/utils.ts";
91
97
  import { attachContractProjections, isAgentContractV1 } from "../shared/agent-contract.ts";
92
98
  import { appendTurnBudgetSystemPrompt, formatTurnBudgetOutput, initialTurnBudgetState, turnBudgetDecision, turnBudgetDeferredNote, turnBudgetDeferredState, turnBudgetExceededMessage, turnBudgetSoftNote, turnBudgetState } from "../shared/turn-budget.ts";
93
99
  import { initialToolBudgetState, toolBudgetState } from "../shared/tool-budget.ts";
@@ -115,6 +121,12 @@ function withRunContext<T extends SingleResult>(result: T, context: RunSyncOptio
115
121
  return result;
116
122
  }
117
123
 
124
+ function redactResultPrompt<T extends SingleResult>(result: T): T {
125
+ result.task = PROMPT_REDACTED;
126
+ if (result.progress) result.progress.task = PROMPT_REDACTED;
127
+ return result;
128
+ }
129
+
118
130
  function sumUsage(target: Usage, source: Usage): void {
119
131
  target.input += source.input;
120
132
  target.output += source.output;
@@ -137,7 +149,7 @@ function persistSingleResultMetadata(input: {
137
149
  writeMetadata(input.metadataPath, {
138
150
  runId: input.runId,
139
151
  agent: input.agent,
140
- task: input.task,
152
+ task: PROMPT_REDACTED,
141
153
  exitCode: target.exitCode,
142
154
  processSignal: target.processSignal,
143
155
  usage: target.usage,
@@ -229,6 +241,7 @@ function stripAcceptanceReportsFromMessages(messages: Message[] | undefined): vo
229
241
  function snapshotProgress(progress: AgentProgress): AgentProgress {
230
242
  return {
231
243
  ...progress,
244
+ task: PROMPT_REDACTED,
232
245
  skills: progress.skills ? [...progress.skills] : undefined,
233
246
  recentTools: boundStreamedRecentTools(progress.recentTools),
234
247
  recentOutput: boundStreamedRecentOutput(progress.recentOutput),
@@ -238,6 +251,7 @@ function snapshotProgress(progress: AgentProgress): AgentProgress {
238
251
  function snapshotResult(result: SingleResult, progress: AgentProgress): SingleResult {
239
252
  return {
240
253
  ...result,
254
+ task: PROMPT_REDACTED,
241
255
  messages: result.outputMode === "file-only" && result.savedOutputPath ? undefined : result.messages ? [...result.messages] : undefined,
242
256
  usage: { ...result.usage },
243
257
  skills: result.skills ? [...result.skills] : undefined,
@@ -289,6 +303,7 @@ async function runSingleAttempt(
289
303
  attemptNotes: string[];
290
304
  outputSnapshot?: SingleOutputSnapshot;
291
305
  originalTask?: string;
306
+ taskDelivery?: SubagentTaskDelivery;
292
307
  },
293
308
  ): Promise<SingleResult> {
294
309
  const effectiveThinking = options.thinkingOverride ?? agent.thinking;
@@ -310,6 +325,7 @@ async function runSingleAttempt(
310
325
  const { args, env: sharedEnv, tempDir, toolDiagnosticPath, runtimeAcknowledgedExtensionsPath, capabilityAudit } = buildPiArgs({
311
326
  baseArgs: ["--mode", "json", "-p"],
312
327
  task,
328
+ taskDelivery: shared.taskDelivery,
313
329
  sessionEnabled: shared.sessionEnabled,
314
330
  sessionDir: options.sessionDir,
315
331
  sessionFile: options.sessionFile,
@@ -335,7 +351,11 @@ async function runSingleAttempt(
335
351
  parentControlInbox: options.nestedRoute?.controlInbox,
336
352
  parentRootRunId: options.nestedRoute?.rootRunId,
337
353
  parentCapabilityToken: options.nestedRoute?.capabilityToken,
354
+ runFanoutBudget: options.runFanoutBudget,
338
355
  parentSessionId: options.parentSessionId,
356
+ steerInboxDir: options.steerInboxDir,
357
+ steerCapabilityPath: options.steerCapabilityPath,
358
+ steerAckDir: options.steerAckDir,
339
359
  structuredOutput: options.structuredOutput,
340
360
  toolBudget: options.toolBudget,
341
361
  allowZeroToolBudget: options.allowZeroToolBudget,
@@ -458,6 +478,7 @@ async function runSingleAttempt(
458
478
  const spawnEnv = { ...process.env, ...sharedEnv, ...getSubagentDepthEnv(options.maxSubagentDepth) };
459
479
  let observedMutationAttempt = false;
460
480
  let structuredOutputToolInvoked = false;
481
+ let structuredOutputMessageStartIndex: number | undefined;
461
482
 
462
483
  const exitCode = await new Promise<number>((resolve) => {
463
484
  const spawnSpec = getPiSpawnCommand(args);
@@ -873,7 +894,10 @@ async function runSingleAttempt(
873
894
  const toolArgs = evt.args && typeof evt.args === "object" && !Array.isArray(evt.args)
874
895
  ? evt.args as Record<string, unknown>
875
896
  : {};
876
- if (options.structuredOutput && evt.toolName === "structured_output") structuredOutputToolInvoked = true;
897
+ if (options.structuredOutput && evt.toolName === "structured_output") {
898
+ structuredOutputToolInvoked = true;
899
+ structuredOutputMessageStartIndex = result.messages?.length ?? 0;
900
+ }
877
901
  if (options.allowIntercomDetach && (evt.toolName === "intercom" || evt.toolName === "contact_supervisor")) {
878
902
  intercomStarted = true;
879
903
  }
@@ -984,14 +1008,14 @@ async function runSingleAttempt(
984
1008
  }
985
1009
  };
986
1010
 
987
- if (controlConfig.enabled) {
1011
+ fireUpdate();
1012
+ if (controlConfig.enabled || options.onUpdate) {
988
1013
  activityTimer = setInterval(() => {
989
- if (processClosed || lifecycleFinished) return;
990
- const now = Date.now();
991
- if (updateActivityState(now)) {
992
- progress.durationMs = now - startTime;
993
- fireUpdate();
1014
+ if (processClosed || lifecycleFinished) {
1015
+ return;
994
1016
  }
1017
+ updateActivityState(Date.now());
1018
+ fireUpdate();
995
1019
  }, 1000);
996
1020
  activityTimer.unref?.();
997
1021
  }
@@ -1182,24 +1206,7 @@ async function runSingleAttempt(
1182
1206
  if (result.error && result.exitCode === 0) {
1183
1207
  result.exitCode = 1;
1184
1208
  }
1185
- if (result.exitCode === 0 && !result.error) {
1186
- const messages = result.messages ?? [];
1187
- const finalText = getFinalOutput(messages);
1188
- const missingStructuredOutput = options.structuredOutput
1189
- ? !existsSync(options.structuredOutput.outputPath)
1190
- : false;
1191
- const errInfo = detectSubagentError(messages);
1192
- const missingOutput = !finalText?.trim() && (!options.structuredOutput || missingStructuredOutput);
1193
- if (missingOutput && (!errInfo.hasError || hasEmptyTerminalAssistantResponse(messages))) {
1194
- result.exitCode = 1;
1195
- result.error = "Subagent produced no output (possible model cold-start or empty response).";
1196
- } else if (errInfo.hasError) {
1197
- result.exitCode = errInfo.exitCode ?? 1;
1198
- result.error = errInfo.details
1199
- ? `${errInfo.errorType} failed (exit ${errInfo.exitCode}): ${errInfo.details}`
1200
- : `${errInfo.errorType} failed with exit code ${errInfo.exitCode}`;
1201
- }
1202
- }
1209
+ let validatedStructuredOutput = false;
1203
1210
  if (options.structuredOutput && result.exitCode === 0 && !result.error) {
1204
1211
  result.structuredOutputSchemaPath = options.structuredOutput.schemaPath;
1205
1212
  result.structuredOutputPath = options.structuredOutput.outputPath;
@@ -1219,9 +1226,28 @@ async function runSingleAttempt(
1219
1226
  result.structuredOutputFailed = true;
1220
1227
  } else {
1221
1228
  result.structuredOutput = structured.value;
1229
+ validatedStructuredOutput = true;
1222
1230
  }
1223
1231
  }
1224
1232
  }
1233
+ if (result.exitCode === 0 && !result.error) {
1234
+ const messages = result.messages ?? [];
1235
+ const finalText = getFinalOutput(messages);
1236
+ const errorMessages = validatedStructuredOutput
1237
+ ? messages.slice(structuredOutputMessageStartIndex ?? messages.length)
1238
+ : messages;
1239
+ const errInfo = detectSubagentError(errorMessages);
1240
+ const missingOutput = !finalText?.trim() && !validatedStructuredOutput;
1241
+ if (missingOutput && (!errInfo.hasError || hasEmptyTerminalAssistantResponse(messages))) {
1242
+ result.exitCode = 1;
1243
+ result.error = "Subagent produced no output (possible model cold-start or empty response).";
1244
+ } else if (errInfo.hasError) {
1245
+ result.exitCode = errInfo.exitCode ?? 1;
1246
+ result.error = errInfo.details
1247
+ ? `${errInfo.errorType} failed (exit ${errInfo.exitCode}): ${errInfo.details}`
1248
+ : `${errInfo.errorType} failed with exit code ${errInfo.exitCode}`;
1249
+ }
1250
+ }
1225
1251
 
1226
1252
  progress.status = result.exitCode === 0 ? "completed" : "failed";
1227
1253
  progress.durationMs = Date.now() - startTime;
@@ -1266,15 +1292,38 @@ async function runSingleAttempt(
1266
1292
  mcpDirectTools: agent.mcpDirectTools,
1267
1293
  })
1268
1294
  : undefined;
1269
- const completionGuardTriggered = completionGuard?.triggered === true && !observedMutationAttempt;
1295
+ let completionGuardTriggered = completionGuard?.triggered === true && !observedMutationAttempt;
1296
+ // The classifier is deliberately narrow, so a read-only review task can
1297
+ // still be misread as implementation. Arbitrate BEFORE any failure side
1298
+ // effect is published (effects, exit code, progress, notifications,
1299
+ // acceptance, output persistence): only a confident read-only verdict
1300
+ // rescues, and the task text alone is evidence — never the child's own
1301
+ // final message.
1302
+ let arbiterRescued = false;
1303
+ if (completionGuardTriggered) {
1304
+ const arbitration = await arbitrateCompletionGuardRescue({
1305
+ guardTriggered: true,
1306
+ task: shared.originalTask ?? task,
1307
+ arbiter: options.llmIntentArbiter,
1308
+ });
1309
+ completionGuardTriggered = arbitration.triggered;
1310
+ arbiterRescued = arbitration.rescued;
1311
+ }
1270
1312
  if (completionGuard) {
1271
1313
  result.effects = {
1272
1314
  ...(result.effects ?? {}),
1273
1315
  fileMutation: {
1274
- status: completionGuard.expectedMutation ? completionGuardTriggered ? "missing" : "observed" : "not-applicable",
1316
+ status: completionGuard.expectedMutation
1317
+ ? completionGuardTriggered
1318
+ ? "missing"
1319
+ : arbiterRescued
1320
+ ? "not-applicable"
1321
+ : "observed"
1322
+ : "not-applicable",
1275
1323
  expected: completionGuard.expectedMutation,
1276
1324
  attempted: completionGuard.attemptedMutation || observedMutationAttempt,
1277
1325
  ...(completionGuardTriggered ? { message: "Subagent completed without making edits for an implementation task." } : {}),
1326
+ ...(arbiterRescued ? { resolvedBy: "llm-intent-arbiter" } : {}),
1278
1327
  },
1279
1328
  };
1280
1329
  }
@@ -1344,7 +1393,7 @@ async function runSyncCompletion(
1344
1393
  };
1345
1394
  const agent = agents.find((a) => a.name === agentName);
1346
1395
  if (!agent) {
1347
- return withRunContext({
1396
+ return redactResultPrompt(withRunContext({
1348
1397
  index: options.index ?? 0,
1349
1398
  agent: agentName,
1350
1399
  task,
@@ -1352,12 +1401,12 @@ async function runSyncCompletion(
1352
1401
  messages: [],
1353
1402
  usage: emptyUsage(),
1354
1403
  error: `Unknown agent: ${agentName}`,
1355
- }, options.context);
1404
+ }, options.context));
1356
1405
  }
1357
1406
  try {
1358
1407
  assertAgentAllowedByCapabilityCeiling(agent.name, options.capabilityCeiling);
1359
1408
  } catch (error) {
1360
- return withRunContext({
1409
+ return redactResultPrompt(withRunContext({
1361
1410
  index: options.index ?? 0,
1362
1411
  agent: agent.name,
1363
1412
  task,
@@ -1366,11 +1415,23 @@ async function runSyncCompletion(
1366
1415
  usage: emptyUsage(),
1367
1416
  error: error instanceof Error ? error.message : String(error),
1368
1417
  ...(options.capabilityCeiling ? { capabilityCeiling: options.capabilityCeiling } : {}),
1369
- }, options.context);
1418
+ }, options.context));
1419
+ }
1420
+ const acceptanceErrors = validateAcceptanceInput(options.acceptance);
1421
+ if (acceptanceErrors.length > 0) {
1422
+ return redactResultPrompt(withRunContext({
1423
+ index: options.index ?? 0,
1424
+ agent: agentName,
1425
+ task,
1426
+ exitCode: 1,
1427
+ messages: [],
1428
+ usage: emptyUsage(),
1429
+ error: acceptanceErrors.join(" "),
1430
+ }, options.context));
1370
1431
  }
1371
1432
  const outputModeValidationError = validateFileOnlyOutputMode(options.outputMode, options.outputPath, `Single run (${agentName})`);
1372
1433
  if (outputModeValidationError) {
1373
- return withRunContext({
1434
+ return redactResultPrompt(withRunContext({
1374
1435
  index: options.index ?? 0,
1375
1436
  agent: agentName,
1376
1437
  task,
@@ -1379,7 +1440,7 @@ async function runSyncCompletion(
1379
1440
  usage: emptyUsage(),
1380
1441
  outputMode: options.outputMode,
1381
1442
  error: outputModeValidationError,
1382
- }, options.context);
1443
+ }, options.context));
1383
1444
  }
1384
1445
 
1385
1446
  const shareEnabled = options.share === true;
@@ -1396,7 +1457,11 @@ async function runSyncCompletion(
1396
1457
  });
1397
1458
  const acceptancePrompt = formatAcceptancePrompt(effectiveAcceptance, { reportOptional: isAgentContractV1(options.agentContract) });
1398
1459
  const taskWithAcceptance = acceptancePrompt ? `${task}\n${acceptancePrompt}` : task;
1460
+ options.onEffectivePrompt?.(taskWithAcceptance);
1399
1461
  const sessionEnabled = Boolean(options.sessionFile || options.sessionDir) || shareEnabled;
1462
+ if (options.context === "fork" && options.sessionFile && existsSync(options.sessionFile)) {
1463
+ alignForkedSessionCwd(options.sessionFile, options.cwd ?? runtimeCwd);
1464
+ }
1400
1465
  const skillNames = options.skills ?? agent.skills ?? [];
1401
1466
  const skillCwd = options.cwd ?? runtimeCwd;
1402
1467
  const { resolved: resolvedSkills, missing: missingSkills } = resolveSkillsWithFallback(
@@ -1407,7 +1472,7 @@ async function runSyncCompletion(
1407
1472
  agent.filePath ? path.dirname(agent.filePath) : skillCwd,
1408
1473
  );
1409
1474
  if (skillNames.some((skill) => skill.trim() === "pi-subagents") && missingSkills.includes("pi-subagents")) {
1410
- return withRunContext({
1475
+ return redactResultPrompt(withRunContext({
1411
1476
  index: options.index ?? 0,
1412
1477
  agent: agentName,
1413
1478
  task,
@@ -1415,7 +1480,7 @@ async function runSyncCompletion(
1415
1480
  messages: [],
1416
1481
  usage: emptyUsage(),
1417
1482
  error: "Skills not found: pi-subagents",
1418
- }, options.context);
1483
+ }, options.context));
1419
1484
  }
1420
1485
  let systemPrompt = agent.systemPrompt?.trim() || "";
1421
1486
  if (resolvedSkills.length > 0) {
@@ -1426,6 +1491,7 @@ async function runSyncCompletion(
1426
1491
  if (memoryInjection) {
1427
1492
  systemPrompt = systemPrompt ? `${systemPrompt}\n\n${memoryInjection}` : memoryInjection;
1428
1493
  }
1494
+ systemPrompt = appendAgentRefinementOverlay(systemPrompt, { cwd: skillCwd, agentName });
1429
1495
  systemPrompt = injectOutputPathSystemPrompt(systemPrompt, options.outputPath, agent);
1430
1496
 
1431
1497
  const candidates = buildModelCandidates(
@@ -1449,7 +1515,7 @@ async function runSyncCompletion(
1449
1515
  artifactPathsResult = getArtifactPaths(options.artifactsDir, options.runId, agentName, options.index);
1450
1516
  ensureArtifactsDir(options.artifactsDir);
1451
1517
  if (options.artifactConfig?.includeInput !== false) {
1452
- writeArtifact(artifactPathsResult.inputPath, `# Task for ${agentName}\n\n${taskWithAcceptance}`);
1518
+ writeArtifact(artifactPathsResult.inputPath, `# Task for ${agentName}\n\n${PROMPT_REDACTED}; live Prompt Audit only.\n`);
1453
1519
  }
1454
1520
  if (options.artifactConfig?.includeJsonl !== false) {
1455
1521
  jsonlPath = artifactPathsResult.jsonlPath;
@@ -1463,7 +1529,7 @@ async function runSyncCompletion(
1463
1529
  childIndex: options.index,
1464
1530
  cwd: options.cwd ?? runtimeCwd,
1465
1531
  });
1466
- transcriptWriter.writeInitialUserMessage(taskWithAcceptance);
1532
+ transcriptWriter.writeInitialUserMessage(`${PROMPT_REDACTED}; live Prompt Audit only.`);
1467
1533
  }
1468
1534
  }
1469
1535
 
@@ -1499,6 +1565,10 @@ async function runSyncCompletion(
1499
1565
  };
1500
1566
  let lastResult: SingleResult | undefined;
1501
1567
  const modelsToTry = candidates.length > 0 ? candidates : [undefined];
1568
+ let modelRetryIndex = 0;
1569
+ // Escalated to "file" after an unexplained zero-activity startup failure so
1570
+ // retries keep the task text out of argv (endpoint pre-exec scans may deny it).
1571
+ let taskDeliveryOverride: SubagentTaskDelivery | undefined;
1502
1572
  modelAttemptsLoop: for (let modelIndex = 0; modelIndex < modelsToTry.length; modelIndex++) {
1503
1573
  const candidate = modelsToTry[modelIndex];
1504
1574
  for (let startupAttemptIndex = 0; ; startupAttemptIndex++) {
@@ -1517,6 +1587,7 @@ async function runSyncCompletion(
1517
1587
  .filter((modelCandidate): modelCandidate is string => Boolean(modelCandidate)),
1518
1588
  outputSnapshot,
1519
1589
  originalTask: task,
1590
+ taskDelivery: taskDeliveryOverride,
1520
1591
  });
1521
1592
  lastResult = result;
1522
1593
  if (startupAttemptIndex === 0) {
@@ -1585,6 +1656,10 @@ async function runSyncCompletion(
1585
1656
  }
1586
1657
  break modelAttemptsLoop;
1587
1658
  }
1659
+ if (!taskDeliveryOverride && result.processSignal === "SIGKILL") {
1660
+ taskDeliveryOverride = "file";
1661
+ attemptNotes.push("[startup-retry] retrying with file task delivery to keep the task text out of the child process argv.");
1662
+ }
1588
1663
  attempt.error = retryNote;
1589
1664
  attemptNotes.push(retryNote);
1590
1665
  continue;
@@ -1603,9 +1678,48 @@ async function runSyncCompletion(
1603
1678
  attempt.error = startupError;
1604
1679
  break modelAttemptsLoop;
1605
1680
  }
1606
- if (!isRetryableModelFailure(result.error) || modelIndex === modelsToTry.length - 1) break modelAttemptsLoop;
1607
- attemptNotes.push(formatModelAttemptNote(attempt, modelsToTry[modelIndex + 1]));
1608
- break;
1681
+ if (isRetryableModelFailure(result.error)) {
1682
+ if (modelIndex < modelsToTry.length - 1) {
1683
+ attemptNotes.push(formatModelAttemptNote(attempt, modelsToTry[modelIndex + 1]));
1684
+ modelRetryIndex = 0;
1685
+ break;
1686
+ }
1687
+ const modelRetryDelayMs = MODEL_RETRY_DELAYS_MS[modelRetryIndex];
1688
+ if (modelRetryDelayMs !== undefined) {
1689
+ const retryNote = formatModelRetryNote({
1690
+ model: attempt.model,
1691
+ attempt: modelRetryIndex + 1,
1692
+ maxAttempts: MODEL_RETRY_DELAYS_MS.length + 1,
1693
+ delayMs: modelRetryDelayMs,
1694
+ });
1695
+ const shouldRetry = await waitForSubagentStartupRetry(modelRetryDelayMs, [options.signal, options.interruptSignal]);
1696
+ if (!shouldRetry) {
1697
+ if (options.interruptSignal?.aborted) {
1698
+ result.exitCode = 0;
1699
+ result.interrupted = true;
1700
+ result.error = undefined;
1701
+ result.finalOutput = "Interrupted. Waiting for explicit next action.";
1702
+ if (result.progress) {
1703
+ result.progress.status = "running";
1704
+ result.progress.error = undefined;
1705
+ }
1706
+ } else {
1707
+ const cancellationError = "Subagent model retry cancelled before relaunch.";
1708
+ result.error = cancellationError;
1709
+ result.finalOutput = cancellationError;
1710
+ attempt.error = cancellationError;
1711
+ if (result.progress) result.progress.error = cancellationError;
1712
+ }
1713
+ break modelAttemptsLoop;
1714
+ }
1715
+ attempt.error = retryNote;
1716
+ attemptNotes.push(retryNote);
1717
+ modelRetryIndex += 1;
1718
+ startupAttemptIndex = -1;
1719
+ continue;
1720
+ }
1721
+ }
1722
+ break modelAttemptsLoop;
1609
1723
  }
1610
1724
  }
1611
1725
 
@@ -1687,6 +1801,8 @@ async function runSyncCompletion(
1687
1801
  : undefined,
1688
1802
  cwd: options.cwd ?? runtimeCwd,
1689
1803
  reportOptional: isAgentContractV1(options.agentContract),
1804
+ artifactsDir: options.artifactsDir,
1805
+ runId: options.runId,
1690
1806
  });
1691
1807
  }
1692
1808
  } catch (error) {
@@ -1697,13 +1813,39 @@ async function runSyncCompletion(
1697
1813
  stripAcceptanceReportsFromMessages(result.messages);
1698
1814
  if (acceptanceFailure && result.acceptance.explicit && result.exitCode === 0 && !result.interrupted && !result.timedOut && !isAgentContractV1(options.agentContract)) {
1699
1815
  result.exitCode = 1;
1816
+ if (result.savedOutputPath) {
1817
+ result.finalOutput = finalizeSingleOutput({
1818
+ fullOutput: result.finalOutput ?? "",
1819
+ outputPath: options.outputPath,
1820
+ outputMode: result.outputMode,
1821
+ exitCode: result.exitCode,
1822
+ preserveSavedOutput: true,
1823
+ savedPath: result.savedOutputPath,
1824
+ outputReference: result.outputReference,
1825
+ }).displayOutput;
1826
+ artifactOutputByResult.set(result, result.finalOutput);
1827
+ }
1700
1828
  result.error = result.error ? `${result.error}\n${acceptanceFailure}` : acceptanceFailure;
1829
+ if (artifactPathsResult && options.artifactConfig?.enabled !== false && options.artifactConfig?.includeOutput !== false) {
1830
+ try {
1831
+ writeArtifact(artifactPathsResult.outputPath, formatOutputArtifactContent({
1832
+ output: artifactOutputByResult.get(result) ?? result.finalOutput ?? "",
1833
+ error: result.error,
1834
+ transcriptPath: result.transcriptPath,
1835
+ metadataPath: options.artifactConfig?.includeMetadata === false ? undefined : artifactPathsResult.metadataPath,
1836
+ }));
1837
+ } catch (error) {
1838
+ const message = `Artifact output post-processing failed: ${error instanceof Error ? error.message : String(error)}`;
1839
+ result.outputSaveError = result.outputSaveError ? `${result.outputSaveError}\n${message}` : message;
1840
+ }
1841
+ }
1701
1842
  if (result.progress) {
1702
1843
  result.progress.status = "failed";
1703
1844
  result.progress.error = result.error;
1704
1845
  }
1705
1846
  }
1706
1847
  if (isAgentContractV1(options.agentContract)) attachContractProjections(result);
1848
+ redactResultPrompt(result);
1707
1849
  try {
1708
1850
  persistResultMetadata(result);
1709
1851
  } catch (error) {
@@ -1788,7 +1930,7 @@ export async function runSync(
1788
1930
  durationMs: publishedReceipt.progressSummary?.durationMs ?? 0,
1789
1931
  error: failureMessage,
1790
1932
  };
1791
- const failedResult: SingleResult = {
1933
+ const failedResult: SingleResult = redactResultPrompt({
1792
1934
  ...publishedReceipt,
1793
1935
  detached: undefined,
1794
1936
  detachedReason,
@@ -1804,7 +1946,7 @@ export async function runSync(
1804
1946
  acceptance: publishedReceipt.acceptance
1805
1947
  ? buildSkippedAcceptanceLedger(publishedReceipt.acceptance.effectiveAcceptance, { id: "completion-pipeline", message: failureMessage })
1806
1948
  : undefined,
1807
- };
1949
+ });
1808
1950
  if (strictContract) attachContractProjections(failedResult);
1809
1951
  try {
1810
1952
  // Replace the provisional detach receipt metadata with the authoritative
@@ -1,9 +1,15 @@
1
1
  import type { AgentProgress, ForegroundChildControl, ForegroundRunControl } from "../../shared/types.ts";
2
+ import { registerLivePromptAudit, removeLivePromptAudit, type PromptAuditRerunContract } from "./prompt-audit.ts";
2
3
 
3
4
  interface BeginForegroundChildInput {
4
5
  index: number;
5
6
  agent: string;
6
7
  description?: string;
8
+ authoredTask: string;
9
+ effectivePrompt: string;
10
+ cwd?: string;
11
+ outputPath?: string;
12
+ rerun?: PromptAuditRerunContract;
7
13
  model?: string;
8
14
  thinking?: string;
9
15
  interrupt: () => boolean;
@@ -109,6 +115,11 @@ export function beginForegroundChild(control: ForegroundRunControl, input: Begin
109
115
  }
110
116
  control.activeChildren ??= new Map();
111
117
  control.activeChildren.set(input.index, child);
118
+ registerLivePromptAudit(control, input.index, input.authoredTask, input.effectivePrompt, {
119
+ ...(input.cwd ? { cwd: input.cwd } : {}),
120
+ ...(input.outputPath ? { outputPath: input.outputPath } : {}),
121
+ ...(input.rerun ? { rerun: input.rerun } : {}),
122
+ });
112
123
  syncCurrentChild(control, child);
113
124
  }
114
125
 
@@ -121,6 +132,7 @@ export function updateForegroundChild(control: ForegroundRunControl, index: numb
121
132
  }
122
133
 
123
134
  export function finishForegroundChild(control: ForegroundRunControl, index: number): void {
135
+ removeLivePromptAudit(control, index);
124
136
  control.activeChildren?.delete(index);
125
137
  if (control.currentIndex === index) {
126
138
  const next = [...(control.activeChildren?.values() ?? [])]