@selesai/code 0.8.2 → 0.8.4

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 (528) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +4 -2
  3. package/dist/cli/args.d.ts +2 -0
  4. package/dist/cli/args.js +18 -0
  5. package/dist/cli/config-selector.js +2 -2
  6. package/dist/cli/startup-ui.d.ts +1 -1
  7. package/dist/cli/startup-ui.js +2 -2
  8. package/dist/core/keybindings.d.ts +44 -4
  9. package/dist/core/llama/provider.js +22 -7
  10. package/dist/core/model-resolver.js +2 -0
  11. package/dist/core/model-runtime.d.ts +4 -2
  12. package/dist/core/model-runtime.js +23 -2
  13. package/dist/core/remote-catalog-provider.js +72 -67
  14. package/dist/core/settings-manager.d.ts +8 -0
  15. package/dist/core/settings-manager.js +18 -0
  16. package/dist/extensions/handoff-new.ts +1 -1
  17. package/dist/extensions/inline-skills.test.ts +1 -0
  18. package/dist/extensions/inline-skills.ts +1 -1
  19. package/dist/extensions/pi-intercom/CHANGELOG.md +25 -3
  20. package/dist/extensions/pi-intercom/README.md +34 -15
  21. package/dist/extensions/pi-intercom/broker/broker.ts +38 -141
  22. package/dist/extensions/pi-intercom/broker/client-liveness.test.ts +173 -0
  23. package/dist/extensions/pi-intercom/broker/client.ts +78 -150
  24. package/dist/extensions/pi-intercom/broker/extension-state.ts +18 -7
  25. package/dist/extensions/pi-intercom/broker/framing.ts +1 -1
  26. package/dist/extensions/pi-intercom/broker/protocol.ts +182 -0
  27. package/dist/extensions/pi-intercom/broker/spawn.test.ts +106 -7
  28. package/dist/extensions/pi-intercom/broker/spawn.ts +37 -11
  29. package/dist/extensions/pi-intercom/config.test.ts +8 -10
  30. package/dist/extensions/pi-intercom/config.ts +3 -3
  31. package/dist/extensions/pi-intercom/index.ts +218 -147
  32. package/dist/extensions/pi-intercom/intercom.integration.test.ts +891 -103
  33. package/dist/extensions/pi-intercom/package.json +3 -2
  34. package/dist/extensions/pi-intercom/project-agent.test.ts +145 -0
  35. package/dist/extensions/pi-intercom/project-agent.ts +324 -0
  36. package/dist/extensions/pi-intercom/reply-tracker.test.ts +86 -1
  37. package/dist/extensions/pi-intercom/reply-tracker.ts +41 -9
  38. package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +49 -9
  39. package/dist/extensions/pi-intercom/test/inline-message.test.ts +9 -9
  40. package/dist/extensions/pi-intercom/types.ts +3 -1
  41. package/dist/extensions/pi-intercom/ui/inline-message.ts +7 -7
  42. package/dist/extensions/pi-powerline-footer/.github/workflows/test.yml +2 -2
  43. package/dist/extensions/pi-powerline-footer/CHANGELOG.md +15 -1
  44. package/dist/extensions/pi-powerline-footer/README.md +20 -37
  45. package/dist/extensions/pi-powerline-footer/bash-mode/completion.ts +40 -25
  46. package/dist/extensions/pi-powerline-footer/bash-mode/editor.ts +149 -18
  47. package/dist/extensions/pi-powerline-footer/bash-mode/types.ts +1 -0
  48. package/dist/extensions/pi-powerline-footer/editor-performance.ts +99 -0
  49. package/dist/extensions/pi-powerline-footer/git-status.ts +15 -0
  50. package/dist/extensions/pi-powerline-footer/index.ts +394 -586
  51. package/dist/extensions/pi-powerline-footer/package.json +5 -6
  52. package/dist/extensions/pi-powerline-footer/powerline-config.ts +0 -18
  53. package/dist/extensions/pi-powerline-footer/queue/store.ts +8 -56
  54. package/dist/extensions/pi-powerline-footer/queue/types.ts +1 -2
  55. package/dist/extensions/pi-powerline-footer/segments.ts +0 -3
  56. package/dist/extensions/pi-powerline-footer/tests/bash-mode.test.ts +231 -1
  57. package/dist/extensions/pi-powerline-footer/tests/custom-items.test.ts +5 -19
  58. package/dist/extensions/pi-powerline-footer/tests/editor-performance.test.ts +43 -0
  59. package/dist/extensions/pi-powerline-footer/tests/fixed-editor-border.test.ts +2 -2
  60. package/dist/extensions/pi-powerline-footer/tests/git-optional-locks.test.ts +64 -0
  61. package/dist/extensions/pi-powerline-footer/tests/guide.test.ts +1 -1
  62. package/dist/extensions/pi-powerline-footer/tests/jump-shortcuts.test.ts +86 -19
  63. package/dist/extensions/pi-powerline-footer/tests/queue-store.test.ts +19 -149
  64. package/dist/extensions/pi-powerline-footer/tests/remaining-regressions.test.ts +6 -0
  65. package/dist/extensions/pi-powerline-footer/tests/usage-display.test.ts +5 -5
  66. package/dist/extensions/pi-powerline-footer/tsconfig.json +1 -1
  67. package/dist/extensions/pi-powerline-footer/types.ts +1 -2
  68. package/dist/extensions/pi-subagents/CHANGELOG.md +202 -14
  69. package/dist/extensions/pi-subagents/README.md +65 -1614
  70. package/dist/extensions/pi-subagents/agents/builder.md +0 -1
  71. package/dist/extensions/pi-subagents/agents/delegate.md +14 -0
  72. package/dist/extensions/pi-subagents/agents/oracle.md +74 -0
  73. package/dist/extensions/pi-subagents/agents/reviewer.md +78 -0
  74. package/dist/extensions/pi-subagents/agents/scout.md +50 -0
  75. package/dist/extensions/pi-subagents/agents/worker.md +58 -0
  76. package/dist/extensions/pi-subagents/docs/configuration.md +328 -0
  77. package/dist/extensions/pi-subagents/docs/extension-api.md +308 -0
  78. package/dist/extensions/pi-subagents/docs/missions.md +119 -0
  79. package/dist/extensions/pi-subagents/docs/models.md +192 -0
  80. package/dist/extensions/pi-subagents/docs/observability.md +174 -0
  81. package/dist/extensions/pi-subagents/docs/tool-reference.md +343 -0
  82. package/dist/extensions/pi-subagents/docs/watchdog.md +176 -0
  83. package/dist/extensions/pi-subagents/docs/workflows.md +163 -0
  84. package/dist/extensions/pi-subagents/inspector-runner.mjs +11 -0
  85. package/dist/extensions/pi-subagents/package-lock.json +152 -194
  86. package/dist/extensions/pi-subagents/package.json +9 -10
  87. package/dist/extensions/pi-subagents/prompts/gather-context-and-clarify.md +1 -1
  88. package/dist/extensions/pi-subagents/prompts/parallel-cleanup.md +9 -9
  89. package/dist/extensions/pi-subagents/prompts/parallel-research.md +6 -6
  90. package/dist/extensions/pi-subagents/prompts/parallel-review.md +8 -8
  91. package/dist/extensions/pi-subagents/prompts/review-loop.md +12 -12
  92. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +22 -17
  93. package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +77 -72
  94. package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +177 -69
  95. package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +28 -8
  96. package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +88 -66
  97. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +3 -3
  98. package/dist/extensions/pi-subagents/src/agents/agent-refinements.ts +624 -0
  99. package/dist/extensions/pi-subagents/src/agents/agents.ts +29 -16
  100. package/dist/extensions/pi-subagents/src/agents/frontmatter.ts +7 -3
  101. package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +2 -2
  102. package/dist/extensions/pi-subagents/src/agents/skills.ts +2 -9
  103. package/dist/extensions/pi-subagents/src/api/delegation.ts +1 -2
  104. package/dist/extensions/pi-subagents/src/api/project-panes.ts +30 -0
  105. package/dist/extensions/pi-subagents/src/extension/config.ts +56 -8
  106. package/dist/extensions/pi-subagents/src/extension/control-notices.ts +2 -2
  107. package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +51 -26
  108. package/dist/extensions/pi-subagents/src/extension/index.ts +119 -50
  109. package/dist/extensions/pi-subagents/src/extension/public-execution.ts +72 -0
  110. package/dist/extensions/pi-subagents/src/extension/rpc.ts +15 -15
  111. package/dist/extensions/pi-subagents/src/extension/schemas.ts +58 -21
  112. package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +39 -0
  113. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +47 -25
  114. package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +3 -3
  115. package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +460 -64
  116. package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +102 -4
  117. package/dist/extensions/pi-subagents/src/missions/actions.ts +77 -16
  118. package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +162 -0
  119. package/dist/extensions/pi-subagents/src/missions/lifecycle.ts +65 -14
  120. package/dist/extensions/pi-subagents/src/missions/store.ts +147 -5
  121. package/dist/extensions/pi-subagents/src/missions/types.ts +58 -3
  122. package/dist/extensions/pi-subagents/src/missions/workflow-state.ts +256 -0
  123. package/dist/extensions/pi-subagents/src/profiles/profiles.ts +8 -8
  124. package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +42 -0
  125. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +41 -7
  126. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +294 -134
  127. package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +19 -3
  128. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +39 -6
  129. package/dist/extensions/pi-subagents/src/runs/background/completion-replay.ts +267 -0
  130. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +145 -60
  131. package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +114 -6
  132. package/dist/extensions/pi-subagents/src/runs/background/resume-guidance.ts +33 -0
  133. package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +68 -0
  134. package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +71 -0
  135. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +21 -2
  136. package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +42 -14
  137. package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +12 -24
  138. package/dist/extensions/pi-subagents/src/runs/background/steering.ts +7 -5
  139. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +152 -68
  140. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +17 -4
  141. package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +146 -0
  142. package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +21 -5
  143. package/dist/extensions/pi-subagents/src/runs/foreground/async-dismiss-action.ts +85 -0
  144. package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +43 -18
  145. package/dist/extensions/pi-subagents/src/runs/foreground/chain-clarify.ts +20 -19
  146. package/dist/extensions/pi-subagents/src/runs/foreground/chain-execution.ts +3 -0
  147. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +55 -26
  148. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +137 -0
  149. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +798 -112
  150. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +187 -0
  151. package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +165 -22
  152. package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +1 -1
  153. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +2 -0
  154. package/dist/extensions/pi-subagents/src/runs/shared/model-fallback.ts +9 -5
  155. package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +12 -2
  156. package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +1 -0
  157. package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +465 -116
  158. package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +10 -10
  159. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +189 -32
  160. package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +2 -2
  161. package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +3 -3
  162. package/dist/extensions/pi-subagents/src/shared/artifacts.ts +128 -3
  163. package/dist/extensions/pi-subagents/src/shared/display-text.ts +100 -0
  164. package/dist/extensions/pi-subagents/src/shared/file-coalescer.ts +9 -0
  165. package/dist/extensions/pi-subagents/src/shared/fork-context.ts +13 -0
  166. package/dist/extensions/pi-subagents/src/shared/formatters.ts +4 -6
  167. package/dist/extensions/pi-subagents/src/shared/prompt-resources.ts +51 -0
  168. package/dist/extensions/pi-subagents/src/shared/settings.ts +41 -11
  169. package/dist/extensions/pi-subagents/src/shared/types.ts +100 -3
  170. package/dist/extensions/pi-subagents/src/shared/utf8.ts +11 -0
  171. package/dist/extensions/pi-subagents/src/shared/utils.ts +43 -33
  172. package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +1 -14
  173. package/dist/extensions/pi-subagents/src/slash/inline-subagents.ts +1 -1
  174. package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +14 -12
  175. package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +176 -21
  176. package/dist/extensions/pi-subagents/src/slash/slash-bridge.ts +12 -6
  177. package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +52 -18
  178. package/dist/extensions/pi-subagents/src/slash/slash-live-state.ts +36 -5
  179. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +30 -16
  180. package/dist/extensions/pi-subagents/src/tui/fleet.ts +151 -31
  181. package/dist/extensions/pi-subagents/src/tui/render.ts +201 -68
  182. package/dist/extensions/pi-subagents/src/types/pi-runtime-compat.d.ts +0 -6
  183. package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +5 -4
  184. package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +0 -1
  185. package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +313 -25
  186. package/dist/extensions/pi-subagents/test/e2e/real-session-subagent.test.ts +15 -15
  187. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +3 -0
  188. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +2 -0
  189. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +17 -0
  190. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +57 -0
  191. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +16 -0
  192. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +15 -0
  193. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +18 -0
  194. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +9 -0
  195. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +10 -0
  196. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +10 -0
  197. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +20 -0
  198. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +3 -0
  199. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +96 -0
  200. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +119 -0
  201. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +85 -0
  202. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +620 -0
  203. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +5 -0
  204. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +56 -0
  205. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +32 -0
  206. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +49 -0
  207. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +93 -0
  208. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +128 -0
  209. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +7 -0
  210. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +38 -0
  211. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +3 -0
  212. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +15 -0
  213. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +9 -0
  214. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +29 -0
  215. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +2 -0
  216. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +22 -0
  217. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +37 -0
  218. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +34 -0
  219. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +12 -0
  220. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +23 -0
  221. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +171 -0
  222. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +1261 -0
  223. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +20 -0
  224. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +54 -0
  225. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +22 -0
  226. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +13 -0
  227. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +358 -0
  228. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +77 -0
  229. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +512 -0
  230. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +43 -0
  231. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +121 -0
  232. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +82 -0
  233. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +17 -0
  234. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +7 -0
  235. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +210 -0
  236. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +15 -0
  237. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +54 -0
  238. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +4 -0
  239. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +55 -0
  240. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +2 -0
  241. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +5 -0
  242. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +30 -0
  243. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +206 -0
  244. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +15 -0
  245. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +106 -0
  246. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +19 -0
  247. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +356 -0
  248. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +297 -0
  249. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +60 -0
  250. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +15 -0
  251. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +18 -0
  252. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +28 -0
  253. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +3 -0
  254. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +10 -0
  255. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +68 -0
  256. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +106 -0
  257. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +51 -0
  258. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +6 -0
  259. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +35 -0
  260. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +37 -0
  261. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +40 -0
  262. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +37 -0
  263. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +52 -0
  264. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +10 -0
  265. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +35 -0
  266. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +24 -0
  267. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  268. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +70 -0
  269. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +26 -0
  270. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +36 -0
  271. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +19 -0
  272. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +3 -0
  273. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +61 -0
  274. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +23 -0
  275. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +3 -0
  276. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +10 -0
  277. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +42 -0
  278. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +35 -0
  279. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +12 -0
  280. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +33 -0
  281. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +9 -0
  282. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +34 -0
  283. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +22 -0
  284. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  285. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  286. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  287. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  288. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +102 -0
  289. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  290. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  291. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  292. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +20 -0
  293. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  294. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +12 -0
  295. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  296. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  297. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +22 -0
  298. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +23 -0
  299. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  300. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  301. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +32 -0
  302. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +34 -0
  303. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  304. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  305. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +54 -0
  306. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  307. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  308. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  309. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +95 -0
  310. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +77 -0
  311. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  312. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  313. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  314. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  315. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  316. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  317. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  318. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  319. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  320. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +14 -0
  321. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  322. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +394 -0
  323. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +12 -0
  324. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +29 -0
  325. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +120 -0
  326. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +28 -0
  327. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +17 -0
  328. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +246 -0
  329. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +20 -0
  330. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +457 -0
  331. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +8 -0
  332. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +3 -0
  333. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +2 -0
  334. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +22 -0
  335. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +18 -0
  336. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +11 -0
  337. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +11 -0
  338. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +4 -0
  339. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +4 -0
  340. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +5 -0
  341. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +8 -0
  342. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +5 -0
  343. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +26 -0
  344. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +7 -0
  345. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +10 -0
  346. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +18 -0
  347. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +30 -0
  348. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +2 -0
  349. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +16 -0
  350. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +3 -0
  351. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +3 -0
  352. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +9 -0
  353. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +31 -0
  354. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +21 -0
  355. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +2 -0
  356. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +31 -0
  357. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +5 -0
  358. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +12 -0
  359. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +3 -0
  360. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +15 -0
  361. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +3 -0
  362. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/index.mjs +84 -0
  363. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/package.json +14 -0
  364. package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +15 -15
  365. package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +411 -300
  366. package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +309 -123
  367. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +99 -56
  368. package/dist/extensions/pi-subagents/test/integration/chain-clarify.test.ts +62 -16
  369. package/dist/extensions/pi-subagents/test/integration/chain-execution.test.ts +159 -108
  370. package/dist/extensions/pi-subagents/test/integration/detect-error.test.ts +1 -1
  371. package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +4 -2
  372. package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +56 -56
  373. package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +114 -45
  374. package/dist/extensions/pi-subagents/test/integration/parallel-execution.test.ts +57 -19
  375. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +106 -106
  376. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +416 -106
  377. package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +287 -17
  378. package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +809 -87
  379. package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +107 -20
  380. package/dist/extensions/pi-subagents/test/integration/slash-live-state.test.ts +9 -9
  381. package/dist/extensions/pi-subagents/test/integration/template-resolution.test.ts +26 -6
  382. package/dist/extensions/pi-subagents/test/integration/top-level-async.test.ts +2 -2
  383. package/dist/extensions/pi-subagents/test/support/helpers.ts +2 -0
  384. package/dist/extensions/pi-subagents/test/support/mock-pi-script.mjs +1 -1
  385. package/dist/extensions/pi-subagents/test/support/ts-loader.mjs +0 -8
  386. package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +163 -58
  387. package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +15 -15
  388. package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +66 -66
  389. package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +334 -248
  390. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +52 -52
  391. package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +26 -26
  392. package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +99 -99
  393. package/dist/extensions/pi-subagents/test/unit/agent-refinements.test.ts +160 -0
  394. package/dist/extensions/pi-subagents/test/unit/agent-selection.test.ts +9 -9
  395. package/dist/extensions/pi-subagents/test/unit/artifacts.test.ts +43 -1
  396. package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +36 -10
  397. package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +387 -30
  398. package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +9 -9
  399. package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +2 -2
  400. package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +94 -40
  401. package/dist/extensions/pi-subagents/test/unit/background-work.test.ts +5 -3
  402. package/dist/extensions/pi-subagents/test/unit/builtin-agent-documentation.test.ts +7 -7
  403. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +19 -19
  404. package/dist/extensions/pi-subagents/test/unit/chain-append.test.ts +19 -19
  405. package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +9 -9
  406. package/dist/extensions/pi-subagents/test/unit/chain-serializer.test.ts +20 -20
  407. package/dist/extensions/pi-subagents/test/unit/child-transcript.test.ts +9 -9
  408. package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +35 -5
  409. package/dist/extensions/pi-subagents/test/unit/completion-dedupe.test.ts +2 -2
  410. package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +52 -52
  411. package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +187 -0
  412. package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +125 -71
  413. package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +18 -3
  414. package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +12 -12
  415. package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +17 -23
  416. package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +1 -1
  417. package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +25 -25
  418. package/dist/extensions/pi-subagents/test/unit/extra-agent-dirs.test.ts +3 -3
  419. package/dist/extensions/pi-subagents/test/unit/file-coalescer.test.ts +15 -0
  420. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +62 -44
  421. package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +329 -37
  422. package/dist/extensions/pi-subagents/test/unit/foreground-control.test.ts +4 -4
  423. package/dist/extensions/pi-subagents/test/unit/foreground-tool-call-compaction.test.ts +37 -0
  424. package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +69 -0
  425. package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +79 -2
  426. package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +102 -49
  427. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +98 -32
  428. package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +5 -5
  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 +55 -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 +28 -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/package-manifest.test.ts +16 -2
  440. package/dist/extensions/pi-subagents/test/unit/parallel-handoff.test.ts +7 -7
  441. package/dist/extensions/pi-subagents/test/unit/parallel-utils.test.ts +10 -10
  442. package/dist/extensions/pi-subagents/test/unit/path-handling.test.ts +3 -3
  443. package/dist/extensions/pi-subagents/test/unit/path-resolution.test.ts +26 -17
  444. package/dist/extensions/pi-subagents/test/unit/pi-args-permission-system.test.ts +405 -0
  445. package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +357 -92
  446. package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +22 -6
  447. package/dist/extensions/pi-subagents/test/unit/pi-spawn.test.ts +6 -6
  448. package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +43 -43
  449. package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +13 -13
  450. package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +4 -4
  451. package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +19 -19
  452. package/dist/extensions/pi-subagents/test/unit/project-panes-public-api.test.ts +243 -0
  453. package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +68 -168
  454. package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +58 -15
  455. package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +40 -0
  456. package/dist/extensions/pi-subagents/test/unit/reads-resolution.test.ts +66 -0
  457. package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +47 -28
  458. package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +12 -12
  459. package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +57 -0
  460. package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +107 -27
  461. package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +1 -1
  462. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +56 -50
  463. package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +69 -28
  464. package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +67 -0
  465. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +59 -44
  466. package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +424 -49
  467. package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +23 -1
  468. package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +32 -5
  469. package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +13 -13
  470. package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +120 -91
  471. package/dist/extensions/pi-subagents/test/unit/steering.test.ts +2 -2
  472. package/dist/extensions/pi-subagents/test/unit/subagent-action-recovery.test.ts +85 -0
  473. package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +35 -35
  474. package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +24 -0
  475. package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +312 -22
  476. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +150 -15
  477. package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +26 -26
  478. package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +73 -0
  479. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +76 -25
  480. package/dist/extensions/pi-subagents/test/unit/turn-budget.test.ts +5 -5
  481. package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +55 -6
  482. package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +13 -13
  483. package/dist/extensions/pi-subagents/test/unit/watchdog-lsp-diagnostics.test.ts +1 -1
  484. package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +1 -1
  485. package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +8 -8
  486. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +6 -6
  487. package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +138 -11
  488. package/dist/extensions/pi-subagents/test/unit/workflow-graph.test.ts +8 -8
  489. package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +113 -0
  490. package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +7 -7
  491. package/dist/extensions/pi-subagents/test/unit/writer-budget-guidance.test.ts +6 -6
  492. package/dist/extensions/workflow/extension.ts +21 -19
  493. package/dist/extensions/workflow/modes.ts +65 -0
  494. package/dist/index.d.ts +1 -1
  495. package/dist/main.js +1 -0
  496. package/dist/modes/interactive/components/settings-selector.d.ts +6 -2
  497. package/dist/modes/interactive/components/settings-selector.js +20 -0
  498. package/dist/modes/interactive/interactive-mode.d.ts +28 -0
  499. package/dist/modes/interactive/interactive-mode.js +214 -28
  500. package/dist/modes/interactive/theme/dark.json +1 -0
  501. package/dist/modes/interactive/theme/light.json +1 -0
  502. package/dist/modes/interactive/theme/theme-controller.d.ts +3 -0
  503. package/dist/modes/interactive/theme/theme-controller.js +10 -1
  504. package/dist/modes/interactive/theme/theme.d.ts +2 -2
  505. package/dist/modes/interactive/theme/theme.js +24 -6
  506. package/dist/skills/pi-subagents/SKILL.md +20 -15
  507. package/dist/skills/pi-subagents/references/constraints-and-recipes.md +77 -83
  508. package/dist/skills/pi-subagents/references/execution-controls.md +215 -106
  509. package/dist/skills/pi-subagents/references/management-authoring-rpc.md +29 -9
  510. package/dist/skills/pi-subagents/references/prompting-and-roles.md +58 -43
  511. package/docs/keybindings.md +35 -7
  512. package/docs/plans/workflow-autoloop-reference.md +192 -0
  513. package/docs/plans/workflow-subagent-consolidation-planb.md +374 -0
  514. package/docs/plans/workflow-subagent-scripted-merge.md +406 -0
  515. package/docs/settings.md +16 -14
  516. package/docs/usage.md +5 -0
  517. package/package.json +5 -5
  518. package/dist/extensions/pi-powerline-footer/fixed-editor/cluster.ts +0 -113
  519. package/dist/extensions/pi-powerline-footer/fixed-editor/terminal-split.ts +0 -1080
  520. package/dist/extensions/pi-powerline-footer/tests/fixed-editor.test.ts +0 -1452
  521. package/dist/extensions/workflow/adapter.ts +0 -949
  522. package/dist/extensions/workflow/modes/loop.ts +0 -74
  523. package/dist/extensions/workflow/modes/prototype.ts +0 -170
  524. package/dist/extensions/workflow/modes/quicktype.ts +0 -150
  525. package/dist/extensions/workflow/modes/task.ts +0 -105
  526. package/dist/extensions/workflow/run-state.ts +0 -124
  527. package/dist/extensions/workflow/state-machine.ts +0 -484
  528. package/dist/extensions/workflow/validators.ts +0 -42
@@ -48,7 +48,7 @@ const request: SubagentDelegationRequest = {
48
48
  requestId: "attempt-1",
49
49
  ownerRunId: "owner-1",
50
50
  nodeId: "node-1",
51
- agent: "commentator",
51
+ agent: "reviewer",
52
52
  task: "Review evidence",
53
53
  context: "fresh",
54
54
  cwd: "/repo",
@@ -137,13 +137,13 @@ describe("public subagent delegation contract", () => {
137
137
  },
138
138
  executeStructured: async (_id, params, _signal, _ctx, onUpdate) => {
139
139
  observedParams = params as unknown as Record<string, unknown>;
140
- onUpdate({ details: { mode: "single", runId: "run-1", results: [{ agent: "commentator", model: "openai/gpt-5", thinking: "high" }], progress: [{ currentTool: "read" }] } });
140
+ onUpdate({ details: { mode: "single", runId: "run-1", results: [{ agent: "reviewer", model: "openai/gpt-5", thinking: "high" }], progress: [{ currentTool: "read" }] } });
141
141
  return {
142
142
  details: {
143
143
  mode: "single",
144
144
  runId: "run-1",
145
145
  results: [{
146
- agent: "commentator",
146
+ agent: "reviewer",
147
147
  exitCode: 0,
148
148
  model: "openai/gpt-5",
149
149
  thinking: "high",
@@ -169,7 +169,7 @@ describe("public subagent delegation contract", () => {
169
169
  nodeId: "node-1",
170
170
  status: "completed",
171
171
  runId: "run-1",
172
- agent: "commentator",
172
+ agent: "reviewer",
173
173
  model: "openai/gpt-5",
174
174
  thinking: "high",
175
175
  exitCode: 0,
@@ -179,7 +179,7 @@ describe("public subagent delegation contract", () => {
179
179
  } satisfies SubagentDelegationResponse);
180
180
  assert.equal(ordinaryCalls, 0);
181
181
  assert.deepEqual(observedParams, {
182
- agent: "commentator",
182
+ agent: "reviewer",
183
183
  task: "Review evidence",
184
184
  context: "fresh",
185
185
  cwd: "/repo",
@@ -217,7 +217,7 @@ describe("public subagent delegation contract", () => {
217
217
  details: {
218
218
  mode: "single",
219
219
  results: [{
220
- agent: "commentator",
220
+ agent: "reviewer",
221
221
  exitCode: 0,
222
222
  ...(structuredOutput === undefined ? {} : { structuredOutput }),
223
223
  usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 1 },
@@ -345,7 +345,7 @@ describe("public subagent delegation contract", () => {
345
345
  details: {
346
346
  mode: "single",
347
347
  results: [{
348
- agent: "commentator",
348
+ agent: "reviewer",
349
349
  exitCode: 0,
350
350
  finalOutput: requestId,
351
351
  usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 1 },
@@ -399,7 +399,7 @@ describe("public subagent delegation contract", () => {
399
399
  details: {
400
400
  mode: "single",
401
401
  results: [{
402
- agent: "commentator",
402
+ agent: "reviewer",
403
403
  exitCode: 0,
404
404
  finalOutput: requestId,
405
405
  usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, cost: 0, turns: 1 },
@@ -445,37 +445,31 @@ describe("public subagent delegation contract", () => {
445
445
  settledBridge.dispose();
446
446
  });
447
447
 
448
- it("retains the unversioned prompt-template bridge as legacy fallback", async () => {
448
+ it("rejects the unversioned prompt-template direct delegation fallback", async () => {
449
449
  const events = new FakeEvents();
450
- let structuredCalls = 0;
451
- let legacyCalls = 0;
450
+ let executeCalls = 0;
452
451
  const bridge = registerPromptTemplateDelegationBridge({
453
452
  events,
454
453
  getContext: () => ({ cwd: "/repo" }),
455
454
  execute: async () => {
456
- legacyCalls++;
457
- return { content: [{ type: "text", text: "legacy done" }], details: { mode: "single", results: [{ agent: "commentator", finalOutput: "legacy done", exitCode: 0 }] } };
458
- },
459
- executeStructured: async () => {
460
- structuredCalls++;
461
- return { details: { mode: "single", results: [] } };
455
+ executeCalls++;
456
+ return { content: [{ type: "text", text: "unreachable" }], details: { mode: "single", results: [] } };
462
457
  },
463
458
  });
464
459
  const responsePromise = once(events, SUBAGENT_DELEGATION_RESPONSE_EVENT);
465
460
  events.emit(SUBAGENT_DELEGATION_REQUEST_EVENT, {
466
461
  requestId: "legacy-1",
467
- agent: "commentator",
462
+ agent: "reviewer",
468
463
  task: "Legacy prompt-template delegation",
469
464
  context: "fresh",
470
465
  model: "openai/gpt-5",
471
466
  cwd: "/repo",
472
467
  });
473
- const response = await responsePromise as { requestId: string; isError: boolean; contentText?: string };
468
+ const response = await responsePromise as { requestId: string; isError: boolean; errorText?: string };
474
469
  assert.equal(response.requestId, "legacy-1");
475
- assert.equal(response.isError, false);
476
- assert.equal(response.contentText, "legacy done");
477
- assert.equal(legacyCalls, 1);
478
- assert.equal(structuredCalls, 0);
470
+ assert.equal(response.isError, true);
471
+ assert.match(response.errorText ?? "", /Legacy prompt-template direct delegation was removed/);
472
+ assert.equal(executeCalls, 0);
479
473
  bridge.dispose();
480
474
  });
481
475
  });
@@ -43,7 +43,7 @@ function makeChain(name: string, source: ChainConfig["source"]): ChainConfig {
43
43
  description: `${name} chain`,
44
44
  source,
45
45
  filePath: `/tmp/${name}.chain.md`,
46
- steps: [{ agent: "builder", task: "Work" }],
46
+ steps: [{ agent: "worker", task: "Work" }],
47
47
  };
48
48
  }
49
49
 
@@ -16,7 +16,7 @@ const outputs: ChainOutputMap = {
16
16
  targets: {
17
17
  text: "{\"items\":[{\"path\":\"src/a.ts\"},{\"path\":\"src/b.ts\"}]}",
18
18
  structured: { items: [{ path: "src/a.ts" }, { path: "src/b.ts" }] },
19
- agent: "explorer",
19
+ agent: "scout",
20
20
  stepIndex: 0,
21
21
  },
22
22
  };
@@ -26,7 +26,7 @@ describe("dynamic fanout helpers", () => {
26
26
  assert.deepEqual(resolveJsonPointer({ items: [1, 2] }, "/items/1", "path"), 2);
27
27
  const step: ChainStep = {
28
28
  expand: { from: { output: "targets", path: "/items" }, item: "target", key: "/path", maxItems: 4 },
29
- parallel: { agent: "commentator", task: "Review {target.path}", label: "Review {target.path}" },
29
+ parallel: { agent: "reviewer", task: "Review {target.path}", label: "Review {target.path}" },
30
30
  collect: { as: "reviews" },
31
31
  };
32
32
  const materialized = materializeDynamicParallelStep(step, outputs, 1);
@@ -38,7 +38,7 @@ describe("dynamic fanout helpers", () => {
38
38
  it("rejects missing structured sources, over-limit arrays, duplicate keys, colliding ids, and bad templates", () => {
39
39
  const base: ChainStep = {
40
40
  expand: { from: { output: "targets", path: "/items" }, item: "target", key: "/path", maxItems: 4 },
41
- parallel: { agent: "commentator", task: "Review {target.path}" },
41
+ parallel: { agent: "reviewer", task: "Review {target.path}" },
42
42
  collect: { as: "reviews" },
43
43
  };
44
44
  assert.throws(
@@ -46,7 +46,7 @@ describe("dynamic fanout helpers", () => {
46
46
  /exceeding maxItems/,
47
47
  );
48
48
  assert.throws(
49
- () => materializeDynamicParallelStep(base, { targets: { text: "plain", agent: "explorer", stepIndex: 0 } }, 1),
49
+ () => materializeDynamicParallelStep(base, { targets: { text: "plain", agent: "scout", stepIndex: 0 } }, 1),
50
50
  /requires structured output/,
51
51
  );
52
52
  assert.throws(
@@ -58,15 +58,15 @@ describe("dynamic fanout helpers", () => {
58
58
  /colliding item id/,
59
59
  );
60
60
  assert.throws(
61
- () => materializeDynamicParallelStep({ ...base, parallel: { agent: "commentator", task: "Review {other.path}" } }, outputs, 1),
61
+ () => materializeDynamicParallelStep({ ...base, parallel: { agent: "reviewer", task: "Review {other.path}" } }, outputs, 1),
62
62
  /Unsupported template reference/,
63
63
  );
64
64
  assert.throws(
65
- () => materializeDynamicParallelStep({ ...base, parallel: { agent: "commentator", task: "Review {target[path]}" } }, outputs, 1),
65
+ () => materializeDynamicParallelStep({ ...base, parallel: { agent: "reviewer", task: "Review {target[path]}" } }, outputs, 1),
66
66
  /Invalid item reference/,
67
67
  );
68
68
  assert.throws(
69
- () => materializeDynamicParallelStep({ ...base, parallel: { agent: "commentator", task: "Review {target.path" } }, outputs, 1),
69
+ () => materializeDynamicParallelStep({ ...base, parallel: { agent: "reviewer", task: "Review {target.path" } }, outputs, 1),
70
70
  /Invalid item reference/,
71
71
  );
72
72
  });
@@ -74,13 +74,13 @@ describe("dynamic fanout helpers", () => {
74
74
  it("allows config maxItems defaults and handles empty arrays deterministically", () => {
75
75
  const base: ChainStep = {
76
76
  expand: { from: { output: "targets", path: "/items" }, item: "target", key: "/path" },
77
- parallel: { agent: "commentator", task: "Review {target.path}" },
77
+ parallel: { agent: "reviewer", task: "Review {target.path}" },
78
78
  collect: { as: "reviews" },
79
79
  };
80
80
  const materialized = materializeDynamicParallelStep(base, outputs, 1, { maxItems: 4 });
81
81
  assert.equal(materialized.parallel.length, 2);
82
82
  assert.doesNotThrow(() => validateChainOutputBindings([
83
- { agent: "explorer", task: "Return targets", as: "targets", outputSchema: { type: "object" } },
83
+ { agent: "scout", task: "Return targets", as: "targets", outputSchema: { type: "object" } },
84
84
  base,
85
85
  ], { maxItems: 4 }));
86
86
  const empty = materializeDynamicParallelStep(base, { targets: { ...outputs.targets, structured: { items: [] } } }, 1, { maxItems: 4 });
@@ -95,29 +95,29 @@ describe("dynamic fanout helpers", () => {
95
95
  const malformed = [
96
96
  {
97
97
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
98
- parallel: [{ agent: "commentator", task: "Review" }],
98
+ parallel: [{ agent: "reviewer", task: "Review" }],
99
99
  collect: { as: "reviews" },
100
100
  },
101
101
  {
102
102
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
103
- parallel: { agent: "commentator", task: "Review {item.path}" },
103
+ parallel: { agent: "reviewer", task: "Review {item.path}" },
104
104
  },
105
105
  {
106
106
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
107
- parallel: { agent: "commentator", task: "Review {item.path}" },
107
+ parallel: { agent: "reviewer", task: "Review {item.path}" },
108
108
  collect: { as: "reviews" },
109
109
  when: "later",
110
110
  },
111
111
  {
112
112
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
113
- parallel: { agent: "commentator", task: "Review {item.path}", as: "child" },
113
+ parallel: { agent: "reviewer", task: "Review {item.path}", as: "child" },
114
114
  collect: { as: "reviews" },
115
115
  },
116
116
  ] as ChainStep[];
117
117
 
118
118
  for (const step of malformed) {
119
119
  assert.throws(
120
- () => validateChainOutputBindings([{ agent: "explorer", task: "Return targets", as: "targets", outputSchema: { type: "object" } }, step]),
120
+ () => validateChainOutputBindings([{ agent: "scout", task: "Return targets", as: "targets", outputSchema: { type: "object" } }, step]),
121
121
  ChainOutputValidationError,
122
122
  );
123
123
  }
@@ -129,7 +129,7 @@ describe("dynamic fanout helpers", () => {
129
129
  // (allowRunnerFields) without leaking into the user-facing dynamic field whitelist.
130
130
  const runnerStep = {
131
131
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
132
- parallel: { agent: "commentator", task: "Review {item.path}", parentSessionId: "session-parent" },
132
+ parallel: { agent: "reviewer", task: "Review {item.path}", parentSessionId: "session-parent" },
133
133
  collect: { as: "reviews" },
134
134
  } as unknown as Parameters<typeof validateDynamicStepShape>[0];
135
135
  assert.doesNotThrow(() => validateDynamicStepShape(runnerStep, 1, { allowRunnerFields: true }));
@@ -142,7 +142,7 @@ describe("dynamic fanout helpers", () => {
142
142
  it("accepts toolBudget on dynamic parallel templates", () => {
143
143
  const step = {
144
144
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
145
- parallel: { agent: "commentator", task: "Review {item.path}", toolBudget: { hard: 3 } },
145
+ parallel: { agent: "reviewer", task: "Review {item.path}", toolBudget: { hard: 3 } },
146
146
  collect: { as: "reviews" },
147
147
  } as unknown as Parameters<typeof validateDynamicStepShape>[0];
148
148
 
@@ -151,10 +151,10 @@ describe("dynamic fanout helpers", () => {
151
151
 
152
152
  it("validates source ordering and collect name collisions", () => {
153
153
  const chain: ChainStep[] = [
154
- { agent: "explorer", task: "Return targets", as: "targets", outputSchema: { type: "object" } },
154
+ { agent: "scout", task: "Return targets", as: "targets", outputSchema: { type: "object" } },
155
155
  {
156
156
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
157
- parallel: { agent: "commentator", task: "Review {item.path}" },
157
+ parallel: { agent: "reviewer", task: "Review {item.path}" },
158
158
  collect: { as: "targets" },
159
159
  },
160
160
  ];
@@ -167,24 +167,24 @@ describe("dynamic fanout helpers", () => {
167
167
 
168
168
  it("validates appended steps against prior and reserved output names", () => {
169
169
  assert.doesNotThrow(() => validateChainOutputBindingsWithContext([
170
- { agent: "builder", task: "Use {outputs.targets}", as: "summary" },
170
+ { agent: "worker", task: "Use {outputs.targets}", as: "summary" },
171
171
  ], {}, { priorOutputNames: ["targets"], startStepIndex: 2 }));
172
172
  assert.throws(
173
173
  () => validateChainOutputBindingsWithContext([
174
- { agent: "builder", task: "Use {outputs.missing}" },
174
+ { agent: "worker", task: "Use {outputs.missing}" },
175
175
  ], {}, { priorOutputNames: ["targets"], startStepIndex: 2 }),
176
176
  /Unknown chain output reference '\{outputs\.missing\}' at step 3/,
177
177
  );
178
178
  assert.throws(
179
179
  () => validateChainOutputBindingsWithContext([
180
- { agent: "builder", task: "Use {previous}", as: "targets" },
180
+ { agent: "worker", task: "Use {previous}", as: "targets" },
181
181
  ], {}, { priorOutputNames: ["targets"], startStepIndex: 2 }),
182
182
  /Duplicate chain output name 'targets'/,
183
183
  );
184
184
  assert.doesNotThrow(() => validateChainOutputBindingsWithContext([
185
185
  {
186
186
  expand: { from: { output: "targets", path: "/items" }, maxItems: 4 },
187
- parallel: { agent: "commentator", task: "Review {item.path}" },
187
+ parallel: { agent: "reviewer", task: "Review {item.path}" },
188
188
  collect: { as: "reviews" },
189
189
  },
190
190
  ], {}, { priorOutputNames: ["targets"], startStepIndex: 2 }));
@@ -193,7 +193,7 @@ describe("dynamic fanout helpers", () => {
193
193
  it("collects ordered child result records and validates aggregate schema", async () => {
194
194
  const step: ChainStep = {
195
195
  expand: { from: { output: "targets", path: "/items" }, key: "/path", maxItems: 4 },
196
- parallel: { agent: "commentator", task: "Review {item.path}" },
196
+ parallel: { agent: "reviewer", task: "Review {item.path}" },
197
197
  collect: { as: "reviews" },
198
198
  };
199
199
  const materialized = materializeDynamicParallelStep(step, outputs, 1);
@@ -207,8 +207,8 @@ describe("dynamic fanout helpers", () => {
207
207
  finalOutput: "ok",
208
208
  structuredOutput,
209
209
  });
210
- const timedOut = { ...result("commentator", { ok: "b" }), exitCode: 1, error: "Subagent timed out after 300ms.", timedOut: true };
211
- const collected = collectDynamicResults(step, materialized.items, [result("commentator", { ok: "a" }), timedOut]);
210
+ const timedOut = { ...result("reviewer", { ok: "b" }), exitCode: 1, error: "Subagent timed out after 300ms.", timedOut: true };
211
+ const collected = collectDynamicResults(step, materialized.items, [result("reviewer", { ok: "a" }), timedOut]);
212
212
  assert.deepEqual(collected.map((item) => item.key), ["src/a.ts", "src/b.ts"]);
213
213
  assert.deepEqual(collected.map((item) => item.structured), [{ ok: "a" }, { ok: "b" }]);
214
214
  assert.equal(collected[1]?.timedOut, true);
@@ -44,16 +44,16 @@ describe("SELESAI_SUBAGENT_EXTRA_AGENT_DIRS discovery", () => {
44
44
 
45
45
  it("discovers agents from the env-provided dirs as a 'user' source", () => {
46
46
  const bundledDir = path.join(tempDir, "store", "agents");
47
- const bundledAgent = writeAgent(bundledDir, "bundled-commentator");
47
+ const bundledAgent = writeAgent(bundledDir, "bundled-reviewer");
48
48
  process.env[EXTRA_AGENT_DIRS_ENV] = bundledDir;
49
49
 
50
50
  const scoped = discoverAgents(cwd, "user");
51
- const found = scoped.agents.find((agent) => agent.name === "bundled-commentator");
51
+ const found = scoped.agents.find((agent) => agent.name === "bundled-reviewer");
52
52
  assert.ok(found, "expected bundled agent under 'user' scope");
53
53
  assert.equal(found?.filePath, bundledAgent);
54
54
 
55
55
  const all = discoverAgentsAll(cwd);
56
- assert.ok(all.user.find((agent) => agent.name === "bundled-commentator" && agent.filePath === bundledAgent));
56
+ assert.ok(all.user.find((agent) => agent.name === "bundled-reviewer" && agent.filePath === bundledAgent));
57
57
  });
58
58
 
59
59
  it("scans every directory listed (PATH-style delimiter)", () => {
@@ -53,6 +53,21 @@ describe("createFileCoalescer", () => {
53
53
  assert.deepEqual(events.sort(), ["a.json", "b.json"]);
54
54
  });
55
55
 
56
+ it("flushes a pending file immediately without a duplicate timer write", () => {
57
+ const events: string[] = [];
58
+ const timers = createFakeTimers();
59
+ const coalescer = createFileCoalescer((file) => events.push(file), 50, timers.timerApi);
60
+ coalescer.schedule("status.json");
61
+ coalescer.schedule("status.json");
62
+ assert.equal(timers.pendingCount(), 1);
63
+ assert.equal(coalescer.flush("status.json"), true);
64
+ assert.deepEqual(events, ["status.json"]);
65
+ assert.equal(timers.pendingCount(), 0);
66
+ timers.runAll();
67
+ assert.deepEqual(events, ["status.json"]);
68
+ assert.equal(coalescer.flush("status.json"), false);
69
+ });
70
+
56
71
  it("clear cancels all pending handlers", () => {
57
72
  const events: string[] = [];
58
73
  const timers = createFakeTimers();
@@ -62,7 +62,7 @@ describe("below-editor subagent FleetView", () => {
62
62
  mode: "single",
63
63
  startedAt: now - 11_000 + index,
64
64
  updatedAt: now,
65
- currentAgent: `builder-${index}`,
65
+ currentAgent: `worker-${index}`,
66
66
  description: index === 0 ? "Inspect\nmodule 0" : `Inspect module ${index}`,
67
67
  ...(index === 0 ? { model: "anthropic/fable-5", thinking: "low" } : {}),
68
68
  tokens: index === 0 ? 13_100 : 100,
@@ -106,9 +106,9 @@ describe("below-editor subagent FleetView", () => {
106
106
  assert.deepEqual(fleet.handleKey("\x1b[B"), { consume: true });
107
107
  const expandedLines = component.render(80);
108
108
  assert.ok(expandedLines.some((line) => line.includes("> main")));
109
- assert.ok(expandedLines.some((line) => line.includes(" builder-0")), "unselected agents use blank focus space");
109
+ assert.ok(expandedLines.some((line) => line.includes(" worker-0")), "unselected agents use blank focus space");
110
110
  assert.ok(expandedLines.every((line) => !/[⏺◯]/u.test(line)), "selection avoids terminal-ambiguous circle glyphs");
111
- assert.ok(expandedLines.some((line) => line.includes("builder-0 (fable-5 · thinking low)")));
111
+ assert.ok(expandedLines.some((line) => line.includes("worker-0 (fable-5 · thinking low)")));
112
112
  assert.ok(expandedLines.some((line) => line.includes("11s · ↓ 13.1k tokens")));
113
113
  assert.ok(expandedLines.some((line) => line.includes("↓ 1 more")));
114
114
  for (const line of expandedLines) assert.ok(visibleWidth(line) <= 80, `line exceeded width: ${line}`);
@@ -124,9 +124,9 @@ describe("below-editor subagent FleetView", () => {
124
124
 
125
125
  it("keeps one queued agent visible in the compact summary", () => {
126
126
  const state = stateForTest();
127
- state.asyncJobs.set("run-builder", {
128
- asyncId: "run-builder",
129
- asyncDir: "/tmp/run-builder",
127
+ state.asyncJobs.set("run-worker", {
128
+ asyncId: "run-worker",
129
+ asyncDir: "/tmp/run-worker",
130
130
  status: "queued",
131
131
  mode: "single",
132
132
  startedAt: 10,
@@ -160,12 +160,12 @@ describe("below-editor subagent FleetView", () => {
160
160
 
161
161
  it("registers above the editor when configured", () => {
162
162
  const state = stateForTest();
163
- state.foregroundControls.set("run-builder", {
164
- runId: "run-builder",
163
+ state.foregroundControls.set("run-worker", {
164
+ runId: "run-worker",
165
165
  mode: "single",
166
166
  startedAt: 10,
167
167
  updatedAt: 20,
168
- currentAgent: "builder",
168
+ currentAgent: "worker",
169
169
  });
170
170
  let placement: string | undefined;
171
171
  const ctx = {
@@ -191,12 +191,12 @@ describe("below-editor subagent FleetView", () => {
191
191
 
192
192
  it("stops refreshing when the captured extension context becomes stale", () => {
193
193
  const state = stateForTest();
194
- state.foregroundControls.set("run-builder", {
195
- runId: "run-builder",
194
+ state.foregroundControls.set("run-worker", {
195
+ runId: "run-worker",
196
196
  mode: "single",
197
197
  startedAt: 10,
198
198
  updatedAt: 20,
199
- currentAgent: "builder",
199
+ currentAgent: "worker",
200
200
  });
201
201
  let stale = false;
202
202
  let contextReads = 0;
@@ -238,12 +238,12 @@ describe("below-editor subagent FleetView", () => {
238
238
 
239
239
  it("does not swallow unrelated widget cleanup errors", () => {
240
240
  const state = stateForTest();
241
- state.foregroundControls.set("run-builder", {
242
- runId: "run-builder",
241
+ state.foregroundControls.set("run-worker", {
242
+ runId: "run-worker",
243
243
  mode: "single",
244
244
  startedAt: 10,
245
245
  updatedAt: 20,
246
- currentAgent: "builder",
246
+ currentAgent: "worker",
247
247
  });
248
248
  const ctx = {
249
249
  hasUI: true,
@@ -264,12 +264,12 @@ describe("below-editor subagent FleetView", () => {
264
264
 
265
265
  it("preserves multiple unrelated UI cleanup errors", () => {
266
266
  const state = stateForTest();
267
- state.foregroundControls.set("run-builder", {
268
- runId: "run-builder",
267
+ state.foregroundControls.set("run-worker", {
268
+ runId: "run-worker",
269
269
  mode: "single",
270
270
  startedAt: 10,
271
271
  updatedAt: 20,
272
- currentAgent: "builder",
272
+ currentAgent: "worker",
273
273
  });
274
274
  const ctx = {
275
275
  hasUI: true,
@@ -297,12 +297,12 @@ describe("below-editor subagent FleetView", () => {
297
297
 
298
298
  it("keeps widget ownership through invalidation so an empty refresh removes it", () => {
299
299
  const state = stateForTest();
300
- state.foregroundControls.set("run-builder", {
301
- runId: "run-builder",
300
+ state.foregroundControls.set("run-worker", {
301
+ runId: "run-worker",
302
302
  mode: "single",
303
303
  startedAt: 10,
304
304
  updatedAt: 20,
305
- currentAgent: "builder",
305
+ currentAgent: "worker",
306
306
  });
307
307
  let widgetFactory: ((tui: unknown, theme: typeof theme) => { render(width: number): string[]; invalidate(): void }) | undefined;
308
308
  let removals = 0;
@@ -335,12 +335,12 @@ describe("below-editor subagent FleetView", () => {
335
335
 
336
336
  it("removes the dynamic widget while the fleet inspector owns the viewport", () => {
337
337
  const state = stateForTest();
338
- state.foregroundControls.set("run-builder", {
339
- runId: "run-builder",
338
+ state.foregroundControls.set("run-worker", {
339
+ runId: "run-worker",
340
340
  mode: "single",
341
341
  startedAt: 10,
342
342
  updatedAt: 20,
343
- currentAgent: "builder",
343
+ currentAgent: "worker",
344
344
  });
345
345
  const registrations: string[] = [];
346
346
  const ctx = {
@@ -500,9 +500,9 @@ describe("below-editor subagent FleetView", () => {
500
500
  startedAt: 50,
501
501
  updatedAt: 200,
502
502
  steps: [
503
- { agent: "explorer", index: 0, status: "complete" },
504
- { agent: "builder", index: 1, status: "running" },
505
- { agent: "commentator", index: 2, status: "pending" },
503
+ { agent: "scout", index: 0, status: "complete" },
504
+ { agent: "worker", index: 1, status: "running" },
505
+ { agent: "reviewer", index: 2, status: "pending" },
506
506
  ],
507
507
  });
508
508
  state.asyncJobs.set("parallel-group", {
@@ -515,7 +515,7 @@ describe("below-editor subagent FleetView", () => {
515
515
  startedAt: 100,
516
516
  updatedAt: 200,
517
517
  steps: [
518
- { agent: "commentator", index: 3, status: "running" },
518
+ { agent: "reviewer", index: 3, status: "running" },
519
519
  { agent: "tester", index: 4, status: "pending" },
520
520
  ],
521
521
  });
@@ -534,9 +534,9 @@ describe("below-editor subagent FleetView", () => {
534
534
  startedAt: 10,
535
535
  updatedAt: 30,
536
536
  activeChildren: new Map([
537
- [0, { index: 0, agent: "commentator", description: "Review correctness", startedAt: 11, updatedAt: 21, tokens: 100 }],
538
- [1, { index: 1, agent: "commentator", description: "Review quality", startedAt: 12, updatedAt: 22, tokens: 200 }],
539
- [2, { index: 2, agent: "commentator", description: "Review tests", startedAt: 13, updatedAt: 23, tokens: 300 }],
537
+ [0, { index: 0, agent: "reviewer", description: "Review correctness", startedAt: 11, updatedAt: 21, tokens: 100 }],
538
+ [1, { index: 1, agent: "reviewer", description: "Review quality", startedAt: 12, updatedAt: 22, tokens: 200 }],
539
+ [2, { index: 2, agent: "reviewer", description: "Review tests", startedAt: 13, updatedAt: 23, tokens: 300 }],
540
540
  ]),
541
541
  });
542
542
 
@@ -550,6 +550,24 @@ describe("below-editor subagent FleetView", () => {
550
550
  assert.deepEqual(collectFleetSnapshot(state).items.map((item) => item.key), entries.map((entry) => entry.key));
551
551
  });
552
552
 
553
+ it("labels workflow-owned foreground children", () => {
554
+ const state = stateForTest();
555
+ state.foregroundControls.set("child-1", {
556
+ runId: "child-1",
557
+ parentWorkflowRunId: "workflow-1",
558
+ workflowKey: "review",
559
+ mode: "single",
560
+ startedAt: 10,
561
+ updatedAt: 20,
562
+ activeChildren: new Map([[0, { index: 0, agent: "reviewer", description: "Review the change", startedAt: 10, updatedAt: 20 }]]),
563
+ });
564
+
565
+ assert.deepEqual(collectFleetStatusEntries(state).map((entry) => ({ agent: entry.agent, description: entry.description })), [{
566
+ agent: "reviewer",
567
+ description: "workflow child: workflow-1 (review) · Review the change",
568
+ }]);
569
+ });
570
+
553
571
  it("uses the same item keys as the full inspector", () => {
554
572
  const state = stateForTest();
555
573
  state.foregroundControls.set("foreground", {
@@ -557,7 +575,7 @@ describe("below-editor subagent FleetView", () => {
557
575
  mode: "single",
558
576
  startedAt: 10,
559
577
  updatedAt: 20,
560
- currentAgent: "builder",
578
+ currentAgent: "worker",
561
579
  currentIndex: 2,
562
580
  });
563
581
  const asyncJob = {
@@ -568,7 +586,7 @@ describe("below-editor subagent FleetView", () => {
568
586
  mode: "single" as const,
569
587
  startedAt: 10,
570
588
  updatedAt: 20,
571
- steps: [{ agent: "commentator", index: 0, status: "running" as const }],
589
+ steps: [{ agent: "reviewer", index: 0, status: "running" as const }],
572
590
  };
573
591
  state.asyncJobs.set(asyncJob.asyncId, asyncJob);
574
592
  state.fleetJobs!.set(asyncJob.asyncId, asyncJob);
@@ -589,8 +607,8 @@ describe("below-editor subagent FleetView", () => {
589
607
  startedAt: 100,
590
608
  updatedAt: 200,
591
609
  steps: [
592
- { agent: "commentator", index: 0, status: "running", description: "Review only authentication", startedAt: 120, model: "openai/gpt-5", thinking: "medium", tokens: { input: 4_000, output: 200, total: 4_200 } },
593
- { agent: "builder", index: 1, status: "running", description: "Implement only billing", startedAt: 121, tokens: { input: 100, output: 20, total: 120 } },
610
+ { agent: "reviewer", index: 0, status: "running", description: "Review only authentication", startedAt: 120, model: "openai/gpt-5", thinking: "medium", tokens: { input: 4_000, output: 200, total: 4_200 } },
611
+ { agent: "worker", index: 1, status: "running", description: "Implement only billing", startedAt: 121, tokens: { input: 100, output: 20, total: 120 } },
594
612
  ],
595
613
  });
596
614
  const fleet = new SubagentFleetStatus(state, () => {}, { refreshMs: 60_000 });
@@ -612,8 +630,8 @@ describe("below-editor subagent FleetView", () => {
612
630
  const component = widgetFactory!(tui, theme);
613
631
  assert.deepEqual(fleet.handleKey("\x1b[B"), { consume: true });
614
632
  const lines = component.render(180);
615
- assert.ok(lines.some((line) => line.includes("commentator (gpt-5 · thinking medium)") && line.includes("Review only authentication")));
616
- assert.ok(lines.some((line) => line.includes("builder") && line.includes("Implement only billing")));
633
+ assert.ok(lines.some((line) => line.includes("reviewer (gpt-5 · thinking medium)") && line.includes("Review only authentication")));
634
+ assert.ok(lines.some((line) => line.includes("worker") && line.includes("Implement only billing")));
617
635
  assert.ok(lines.every((line) => !line.includes("Review the authentication changes")), "per-child descriptions should replace the run-level fallback when present");
618
636
  assert.ok(lines.some((line) => line.includes("↓ 4.2k tokens")));
619
637
  } finally {
@@ -623,12 +641,12 @@ describe("below-editor subagent FleetView", () => {
623
641
 
624
642
  it("only captures navigation at an empty editor and opens the selected child", async () => {
625
643
  const state = stateForTest();
626
- state.foregroundControls.set("run-builder", {
627
- runId: "run-builder",
644
+ state.foregroundControls.set("run-worker", {
645
+ runId: "run-worker",
628
646
  mode: "single",
629
647
  startedAt: Date.now() - 1_000,
630
648
  updatedAt: Date.now(),
631
- currentAgent: "builder",
649
+ currentAgent: "worker",
632
650
  description: "Implement FleetView",
633
651
  });
634
652
  let editorText = "draft";
@@ -682,16 +700,16 @@ describe("below-editor subagent FleetView", () => {
682
700
  assert.deepEqual(inputHandler!("\x1b[B"), { consume: true }, "custom editors should activate FleetView across jiti boundaries");
683
701
  assert.ok(component.render(100).length > 1, "keyboard activation should expand the roster");
684
702
  assert.deepEqual(inputHandler!("j"), { consume: true }, "active FleetView should navigate down with j");
685
- assert.ok(component.render(100).some((line) => line.includes("> builder")));
703
+ assert.ok(component.render(100).some((line) => line.includes("> worker")));
686
704
  assert.deepEqual(inputHandler!("k"), { consume: true }, "active FleetView should navigate up with k");
687
705
  assert.ok(component.render(100).some((line) => line.includes("> main")));
688
706
 
689
707
  tui.focusedComponent = Object.create(Editor.prototype) as Editor;
690
708
  assert.deepEqual(inputHandler!("\x1b[B"), { consume: true });
691
- assert.ok(component.render(100).some((line) => line.includes("> builder")));
709
+ assert.ok(component.render(100).some((line) => line.includes("> worker")));
692
710
  assert.deepEqual(inputHandler!("\r"), { consume: true });
693
711
  await Promise.resolve();
694
- assert.deepEqual(opened, ["foreground-active:run-builder:0"]);
712
+ assert.deepEqual(opened, ["foreground-active:run-worker:0"]);
695
713
  assert.equal(widgetFactory, undefined, "the widget should unregister while the inspector owns the viewport");
696
714
 
697
715
  closeInspector!();
@@ -699,7 +717,7 @@ describe("below-editor subagent FleetView", () => {
699
717
  assert.ok(widgetFactory, "closing should restore the FleetView widget");
700
718
  assert.notEqual(widgetFactory, component, "restoration should install a new component factory");
701
719
  const restoredComponent = widgetFactory!(tui, theme);
702
- assert.ok(restoredComponent.render(100).some((line) => line.includes("> builder")), "closing should restore the prior selected roster row");
720
+ assert.ok(restoredComponent.render(100).some((line) => line.includes("> worker")), "closing should restore the prior selected roster row");
703
721
  assert.deepEqual(inputHandler!("\x1b"), { consume: true });
704
722
  assert.equal(restoredComponent.render(100).length, 1, "Escape should return to the compact summary");
705
723
  } finally {