@selesai/code 0.13.40 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1356) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/bun/runtime-setup.js +4 -1
  3. package/dist/cli/args.d.ts +3 -1
  4. package/dist/cli/args.js +76 -33
  5. package/dist/cli/auth-check.d.ts +18 -0
  6. package/dist/cli/auth-check.js +49 -0
  7. package/dist/cli/credential-print.d.ts +5 -15
  8. package/dist/cli/credential-print.js +42 -82
  9. package/dist/cli/file-processor.d.ts +1 -1
  10. package/dist/cli/file-processor.js +2 -1
  11. package/dist/cli/list-models.d.ts +1 -1
  12. package/dist/cli/list-models.js +2 -2
  13. package/dist/cli/startup-ui.js +38 -30
  14. package/dist/config.d.ts +35 -6
  15. package/dist/config.js +95 -17
  16. package/dist/core/agent-session-custom-tools.test.js +64 -0
  17. package/dist/core/agent-session-length-continuation.test.js +7 -3
  18. package/dist/core/agent-session-runtime.js +2 -2
  19. package/dist/core/agent-session-services.d.ts +1 -0
  20. package/dist/core/agent-session-services.js +14 -0
  21. package/dist/core/agent-session.d.ts +180 -40
  22. package/dist/core/agent-session.js +1061 -485
  23. package/dist/core/auth-storage.d.ts +25 -15
  24. package/dist/core/auth-storage.js +242 -66
  25. package/dist/core/bash-executor.js +42 -52
  26. package/dist/core/bug-report.js +1 -1
  27. package/dist/core/cache-warmer.d.ts +1 -0
  28. package/dist/core/cache-warmer.js +15 -1
  29. package/dist/core/compaction/branch-summarization.js +3 -0
  30. package/dist/core/compaction/compaction.d.ts +3 -1
  31. package/dist/core/compaction/compaction.js +156 -79
  32. package/dist/core/compaction/utils.d.ts +2 -1
  33. package/dist/core/compaction/utils.js +25 -18
  34. package/dist/core/crash-log.d.ts +5 -0
  35. package/dist/core/crash-log.js +69 -0
  36. package/dist/core/defaults.d.ts +1 -1
  37. package/dist/core/defaults.js +1 -1
  38. package/dist/core/export-html/template.css +10 -0
  39. package/dist/core/export-html/template.js +72 -18
  40. package/dist/core/export-html/tool-renderer.d.ts +3 -3
  41. package/dist/core/export-html/tool-renderer.js +5 -3
  42. package/dist/core/extensions/index.d.ts +2 -2
  43. package/dist/core/extensions/index.js +1 -1
  44. package/dist/core/extensions/loader.js +138 -55
  45. package/dist/core/extensions/runner.d.ts +38 -5
  46. package/dist/core/extensions/runner.js +220 -7
  47. package/dist/core/extensions/types.d.ts +438 -51
  48. package/dist/core/extensions/types.js +3 -0
  49. package/dist/core/extensions/virtual-modules.js +6 -0
  50. package/dist/core/extensions/wrapper.d.ts +2 -2
  51. package/dist/core/extensions/wrapper.js +3 -3
  52. package/dist/core/footer-data-provider.d.ts +1 -1
  53. package/dist/core/footer-data-provider.js +1 -1
  54. package/dist/core/handoff.d.ts +0 -1
  55. package/dist/core/handoff.js +0 -1
  56. package/dist/core/http-dispatcher.js +5 -0
  57. package/dist/core/index.d.ts +1 -1
  58. package/dist/core/keybindings.d.ts +25 -24
  59. package/dist/core/keybindings.js +27 -6
  60. package/dist/core/mcp-servers.d.ts +134 -0
  61. package/dist/core/mcp-servers.js +223 -0
  62. package/dist/core/model-config.d.ts +122 -5
  63. package/dist/core/model-config.js +35 -1
  64. package/dist/core/model-registry.d.ts +23 -15
  65. package/dist/core/model-registry.js +46 -22
  66. package/dist/core/model-resolver.d.ts +6 -5
  67. package/dist/core/model-resolver.js +51 -21
  68. package/dist/core/model-runtime.d.ts +73 -14
  69. package/dist/core/model-runtime.js +398 -104
  70. package/dist/core/models-store.d.ts +12 -7
  71. package/dist/core/models-store.js +85 -15
  72. package/dist/core/nested-tool-calls.d.ts +102 -0
  73. package/dist/core/nested-tool-calls.js +178 -0
  74. package/dist/core/package-manager.d.ts +8 -1
  75. package/dist/core/package-manager.js +144 -61
  76. package/dist/core/package-manager.test.js +5 -5
  77. package/dist/core/pi-manifest.d.ts +9 -0
  78. package/dist/core/pi-manifest.js +25 -0
  79. package/dist/core/prompt-templates.d.ts +6 -1
  80. package/dist/core/prompt-templates.js +61 -35
  81. package/dist/core/provider-composer.d.ts +44 -19
  82. package/dist/core/provider-composer.js +166 -64
  83. package/dist/core/radius.d.ts +2 -0
  84. package/dist/core/radius.js +2 -0
  85. package/dist/core/remote-catalog-provider.d.ts +8 -1
  86. package/dist/core/remote-catalog-provider.js +25 -13
  87. package/dist/core/resource-loader.d.ts +9 -1
  88. package/dist/core/resource-loader.js +177 -45
  89. package/dist/core/runtime-credentials.d.ts +5 -5
  90. package/dist/core/runtime-credentials.js +11 -8
  91. package/dist/core/sdk.d.ts +16 -7
  92. package/dist/core/sdk.js +57 -24
  93. package/dist/core/session-manager.d.ts +45 -9
  94. package/dist/core/session-manager.js +124 -31
  95. package/dist/core/settings-diagnostics.d.ts +8 -0
  96. package/dist/core/settings-diagnostics.js +20 -0
  97. package/dist/core/settings-manager.d.ts +62 -32
  98. package/dist/core/settings-manager.js +147 -69
  99. package/dist/core/skills.d.ts +5 -2
  100. package/dist/core/skills.js +58 -35
  101. package/dist/core/slash-commands.js +2 -1
  102. package/dist/core/source-info.d.ts +8 -0
  103. package/dist/core/source-info.js +16 -0
  104. package/dist/core/system-prompt.d.ts +9 -3
  105. package/dist/core/system-prompt.js +9 -12
  106. package/dist/core/system-prompt.test.js +2 -7
  107. package/dist/core/tools/bash.d.ts +12 -0
  108. package/dist/core/tools/bash.js +33 -2
  109. package/dist/core/tools/edit-diff.d.ts +0 -5
  110. package/dist/core/tools/edit-diff.js +2 -5
  111. package/dist/core/tools/edit.d.ts +4 -0
  112. package/dist/core/tools/edit.js +31 -11
  113. package/dist/core/tools/find.d.ts +7 -0
  114. package/dist/core/tools/find.js +16 -19
  115. package/dist/core/tools/grep.d.ts +4 -0
  116. package/dist/core/tools/grep.js +5 -1
  117. package/dist/core/tools/index.d.ts +1 -1
  118. package/dist/core/tools/index.js +11 -2
  119. package/dist/core/tools/ls.d.ts +4 -0
  120. package/dist/core/tools/ls.js +5 -1
  121. package/dist/core/tools/output-accumulator.d.ts +11 -0
  122. package/dist/core/tools/output-accumulator.js +40 -10
  123. package/dist/core/tools/read.d.ts +17 -2
  124. package/dist/core/tools/read.js +23 -2
  125. package/dist/core/tools/render-utils.d.ts +6 -0
  126. package/dist/core/tools/render-utils.js +26 -0
  127. package/dist/core/tools/renderers/bash.js +19 -35
  128. package/dist/core/tools/renderers/edit.js +5 -4
  129. package/dist/core/tools/renderers/index.d.ts +2 -2
  130. package/dist/core/tools/renderers/read.js +3 -2
  131. package/dist/core/tools/tool-definition-wrapper.d.ts +5 -3
  132. package/dist/core/tools/tool-definition-wrapper.js +3 -1
  133. package/dist/core/tools/truncate.d.ts +14 -0
  134. package/dist/core/tools/truncate.js +29 -0
  135. package/dist/core/tools/write.d.ts +4 -0
  136. package/dist/core/tools/write.js +6 -2
  137. package/dist/core/trust-manager.js +3 -1
  138. package/dist/core/usage-totals.d.ts +2 -0
  139. package/dist/core/usage-totals.js +23 -0
  140. package/dist/core/virtual-models.d.ts +116 -0
  141. package/dist/core/virtual-models.js +123 -0
  142. package/dist/defaults/models.json +32 -0
  143. package/dist/defaults/settings.json +1 -9
  144. package/dist/extensions/codemode/execute.d.ts +15 -0
  145. package/dist/extensions/codemode/execute.js +633 -0
  146. package/dist/extensions/codemode/execute.lazy.d.ts +2 -0
  147. package/dist/extensions/codemode/execute.lazy.js +2 -0
  148. package/dist/extensions/codemode/index.d.ts +20 -0
  149. package/dist/extensions/codemode/index.js +31 -0
  150. package/dist/extensions/codemode/renderer.d.ts +11 -0
  151. package/dist/extensions/codemode/renderer.js +136 -0
  152. package/dist/extensions/codemode/tool.d.ts +129 -0
  153. package/dist/extensions/codemode/tool.js +275 -0
  154. package/dist/extensions/context-compaction-reminder.ts +1 -1
  155. package/dist/extensions/grep-app/index.ts +2 -10
  156. package/dist/extensions/herdr-agent-state.ts +1 -1
  157. package/dist/extensions/{pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts → index.d.ts} +0 -1
  158. package/dist/extensions/index.js +12 -0
  159. package/dist/extensions/jev/classifier-context.ts +54 -0
  160. package/dist/extensions/jev/classifier.test.ts +85 -0
  161. package/dist/extensions/jev/classifier.ts +105 -0
  162. package/dist/extensions/jev/decisions.test.ts +35 -47
  163. package/dist/extensions/jev/decisions.ts +58 -104
  164. package/dist/extensions/jev/test-support.ts +33 -38
  165. package/dist/extensions/jev-advisory-lifecycle.test.ts +12 -12
  166. package/dist/extensions/jev-advisory-memory.test.ts +9 -9
  167. package/dist/extensions/jev-advisory-recommendations.test.ts +8 -8
  168. package/dist/extensions/jev-ask-tool.test.ts +41 -45
  169. package/dist/extensions/jev-ask-tool.ts +10 -38
  170. package/dist/extensions/jev-find-source.test.ts +26 -0
  171. package/dist/extensions/jev-find-source.ts +58 -19
  172. package/dist/{core → extensions}/llama/client.d.ts +2 -0
  173. package/dist/{core → extensions}/llama/client.js +7 -3
  174. package/dist/{core → extensions}/llama/index.js +13 -2
  175. package/dist/{core → extensions}/llama/provider.d.ts +1 -1
  176. package/dist/extensions/llama/provider.js +235 -0
  177. package/dist/extensions/mcp/cli.d.ts +20 -0
  178. package/dist/extensions/mcp/cli.js +496 -0
  179. package/dist/extensions/mcp/cli.lazy.d.ts +2 -0
  180. package/dist/extensions/mcp/cli.lazy.js +2 -0
  181. package/dist/extensions/mcp/config.d.ts +83 -0
  182. package/dist/extensions/mcp/config.js +193 -0
  183. package/dist/extensions/mcp/index.d.ts +78 -0
  184. package/dist/extensions/mcp/index.js +1201 -0
  185. package/dist/extensions/mcp/log.d.ts +15 -0
  186. package/dist/extensions/mcp/log.js +65 -0
  187. package/dist/extensions/mcp/oauth.d.ts +97 -0
  188. package/dist/extensions/mcp/oauth.js +401 -0
  189. package/dist/extensions/mcp/resources.d.ts +41 -0
  190. package/dist/extensions/mcp/resources.js +260 -0
  191. package/dist/extensions/mcp/runtime.d.ts +96 -0
  192. package/dist/extensions/mcp/runtime.js +412 -0
  193. package/dist/extensions/mcp/runtime.lazy.d.ts +2 -0
  194. package/dist/extensions/mcp/runtime.lazy.js +2 -0
  195. package/dist/extensions/mcp/tools.d.ts +86 -0
  196. package/dist/extensions/mcp/tools.js +252 -0
  197. package/dist/extensions/mcp/ui.d.ts +59 -0
  198. package/dist/extensions/mcp/ui.js +185 -0
  199. package/dist/extensions/package.json +1 -1
  200. package/dist/extensions/pi-graft/tools.ts +6 -0
  201. package/dist/extensions/pi-hermes-memory/CHANGELOG.md +25 -0
  202. package/dist/extensions/pi-hermes-memory/README.md +140 -4
  203. package/dist/extensions/pi-hermes-memory/package-lock.json +624 -2720
  204. package/dist/extensions/pi-hermes-memory/package.json +9 -7
  205. package/dist/extensions/pi-hermes-memory/scripts/benchmark-memory-startup.mjs +72 -0
  206. package/dist/extensions/pi-hermes-memory/scripts/check-production-install.mjs +107 -0
  207. package/dist/extensions/pi-hermes-memory/src/auto-consolidation-warning.ts +2 -1
  208. package/dist/extensions/pi-hermes-memory/src/config.ts +35 -0
  209. package/dist/extensions/pi-hermes-memory/src/constants.ts +62 -15
  210. package/dist/extensions/pi-hermes-memory/src/handlers/auto-consolidate.ts +374 -50
  211. package/dist/extensions/pi-hermes-memory/src/handlers/background-review.ts +7 -4
  212. package/dist/extensions/pi-hermes-memory/src/handlers/correction-detector.ts +19 -14
  213. package/dist/extensions/pi-hermes-memory/src/handlers/insights.ts +75 -1
  214. package/dist/extensions/pi-hermes-memory/src/handlers/review-memory-ops.ts +322 -22
  215. package/dist/extensions/pi-hermes-memory/src/handlers/session-backfill.ts +8 -0
  216. package/dist/extensions/pi-hermes-memory/src/handlers/session-flush.ts +193 -54
  217. package/dist/extensions/pi-hermes-memory/src/handlers/skills-command.ts +6 -2
  218. package/dist/extensions/pi-hermes-memory/src/handlers/sync-markdown-memories.ts +33 -5
  219. package/dist/extensions/pi-hermes-memory/src/index.ts +116 -47
  220. package/dist/extensions/pi-hermes-memory/src/memory-initialization.ts +101 -0
  221. package/dist/extensions/pi-hermes-memory/src/store/atomic-lock-coordinator.ts +10 -2
  222. package/dist/extensions/pi-hermes-memory/src/store/db.ts +34 -9
  223. package/dist/extensions/pi-hermes-memory/src/store/memory-store.ts +44 -8
  224. package/dist/extensions/pi-hermes-memory/src/store/schema.ts +3 -1
  225. package/dist/extensions/pi-hermes-memory/src/store/sqlite-memory-store.ts +141 -0
  226. package/dist/extensions/pi-hermes-memory/src/store/standing-instructions.ts +17 -6
  227. package/dist/extensions/pi-hermes-memory/src/tools/memory-search-tool.ts +20 -10
  228. package/dist/extensions/pi-hermes-memory/src/tools/memory-tool.ts +1 -17
  229. package/dist/extensions/pi-hermes-memory/src/tools/session-search-tool.ts +2 -10
  230. package/dist/extensions/pi-hermes-memory/src/tools/skill-tool.ts +4 -8
  231. package/dist/extensions/pi-hermes-memory/src/types.ts +48 -0
  232. package/dist/extensions/pi-hermes-memory/tests/config.test.ts +108 -0
  233. package/dist/extensions/pi-hermes-memory/tests/handlers/auto-consolidate.test.ts +1185 -42
  234. package/dist/extensions/pi-hermes-memory/tests/handlers/insights.test.ts +57 -1
  235. package/dist/extensions/pi-hermes-memory/tests/handlers/lazy-memory-hooks.test.ts +128 -0
  236. package/dist/extensions/pi-hermes-memory/tests/handlers/review-memory-ops.test.ts +844 -1
  237. package/dist/extensions/pi-hermes-memory/tests/handlers/session-backfill.test.ts +16 -0
  238. package/dist/extensions/pi-hermes-memory/tests/handlers/session-flush.test.ts +512 -3
  239. package/dist/extensions/pi-hermes-memory/tests/handlers/skills-command.test.ts +38 -0
  240. package/dist/extensions/pi-hermes-memory/tests/handlers/sync-markdown-memories.test.ts +183 -2
  241. package/dist/extensions/pi-hermes-memory/tests/handlers/system-prompt.test.ts +1 -3
  242. package/dist/extensions/pi-hermes-memory/tests/index.test.ts +17 -0
  243. package/dist/extensions/pi-hermes-memory/tests/integration/corruption-recovery-integration.test.ts +21 -0
  244. package/dist/extensions/pi-hermes-memory/tests/lazy-startup.test.ts +313 -0
  245. package/dist/extensions/pi-hermes-memory/tests/memory-initialization.test.ts +182 -0
  246. package/dist/extensions/pi-hermes-memory/tests/prompt-injection.test.ts +184 -0
  247. package/dist/extensions/pi-hermes-memory/tests/skill-discovery-contract.test.ts +60 -0
  248. package/dist/extensions/pi-hermes-memory/tests/store/atomic-lock-lazy-probe.test.ts +80 -0
  249. package/dist/extensions/pi-hermes-memory/tests/store/db.test.ts +2 -0
  250. package/dist/extensions/pi-hermes-memory/tests/store/memory-store.test.ts +79 -0
  251. package/dist/extensions/pi-hermes-memory/tests/store/sqlite-memory-store.test.ts +268 -0
  252. package/dist/extensions/pi-hermes-memory/tests/store/standing-instructions.test.ts +29 -0
  253. package/dist/extensions/pi-hermes-memory/tests/store/usage-tracking.test.ts +170 -0
  254. package/dist/extensions/pi-hermes-memory/tests/tools/memory-search-tool.test.ts +80 -1
  255. package/dist/extensions/pi-hermes-memory/tests/tools/skill-tool.test.ts +51 -0
  256. package/dist/extensions/pi-intercom/CHANGELOG.md +66 -0
  257. package/dist/extensions/pi-intercom/README.md +100 -12
  258. package/dist/extensions/pi-intercom/broker/broker.ts +28 -12
  259. package/dist/extensions/pi-intercom/broker/client.ts +3 -0
  260. package/dist/extensions/pi-intercom/broker/cross-machine-provenance.test.ts +63 -0
  261. package/dist/extensions/pi-intercom/broker/protocol.ts +64 -0
  262. package/dist/extensions/pi-intercom/broker/spawn.test.ts +58 -167
  263. package/dist/extensions/pi-intercom/broker/spawn.ts +40 -87
  264. package/dist/extensions/pi-intercom/cli.mjs +6 -0
  265. package/dist/extensions/pi-intercom/cli.test.ts +428 -0
  266. package/dist/extensions/pi-intercom/cli.ts +343 -0
  267. package/dist/extensions/pi-intercom/config.test.ts +61 -1
  268. package/dist/extensions/pi-intercom/config.ts +53 -2
  269. package/dist/extensions/pi-intercom/cross-machine-discovery.test.ts +218 -0
  270. package/dist/extensions/pi-intercom/cross-machine-discovery.ts +140 -0
  271. package/dist/extensions/pi-intercom/cross-machine-envelope.test.ts +106 -0
  272. package/dist/extensions/pi-intercom/cross-machine-envelope.ts +92 -0
  273. package/dist/extensions/pi-intercom/cross-machine-integration.test.ts +25 -0
  274. package/dist/extensions/pi-intercom/cross-machine-transport.test.ts +106 -0
  275. package/dist/extensions/pi-intercom/cross-machine-transport.ts +110 -0
  276. package/dist/extensions/pi-intercom/extension-api.ts +14 -0
  277. package/dist/extensions/pi-intercom/handover.test.ts +88 -0
  278. package/dist/extensions/pi-intercom/handover.ts +115 -0
  279. package/dist/extensions/pi-intercom/herdr-location.test.ts +173 -0
  280. package/dist/extensions/pi-intercom/herdr-location.ts +137 -0
  281. package/dist/extensions/pi-intercom/human-priority.pi.test.ts +489 -0
  282. package/dist/extensions/pi-intercom/index.ts +582 -164
  283. package/dist/extensions/pi-intercom/intercom.integration.test.ts +590 -22
  284. package/dist/extensions/pi-intercom/package.json +12 -2
  285. package/dist/extensions/pi-intercom/project-agent.ts +1 -1
  286. package/dist/extensions/pi-intercom/skills/pi-intercom/SKILL.md +26 -2
  287. package/dist/extensions/pi-intercom/test/handover-picker.test.ts +134 -0
  288. package/dist/extensions/pi-intercom/test/inline-message.test.ts +43 -0
  289. package/dist/extensions/pi-intercom/types.d.ts +247 -0
  290. package/dist/extensions/pi-intercom/types.js +2 -0
  291. package/dist/extensions/pi-intercom/types.ts +39 -1
  292. package/dist/extensions/pi-intercom/ui/handover-picker.ts +318 -0
  293. package/dist/extensions/pi-intercom/ui/inline-message.ts +10 -3
  294. package/dist/extensions/pi-intercom/ui/session-list.ts +28 -15
  295. package/dist/extensions/pi-subagents/.github/workflows/release.yml +5 -1
  296. package/dist/extensions/pi-subagents/.github/workflows/test.yml +188 -18
  297. package/dist/extensions/pi-subagents/CHANGELOG.md +514 -1
  298. package/dist/extensions/pi-subagents/README.md +7 -5
  299. package/dist/extensions/pi-subagents/VISION.md +6 -0
  300. package/dist/extensions/pi-subagents/agents/reviewer.md +7 -5
  301. package/dist/extensions/pi-subagents/agents/worker.md +1 -1
  302. package/dist/extensions/pi-subagents/docs/agents.md +75 -35
  303. package/dist/extensions/pi-subagents/docs/configuration.md +156 -25
  304. package/dist/extensions/pi-subagents/docs/extension-api.md +113 -29
  305. package/dist/extensions/pi-subagents/docs/missions.md +46 -14
  306. package/dist/extensions/pi-subagents/docs/models.md +22 -84
  307. package/dist/extensions/pi-subagents/docs/observability.md +49 -24
  308. package/dist/extensions/pi-subagents/docs/standalone-background.md +59 -0
  309. package/dist/extensions/pi-subagents/docs/tool-reference.md +167 -116
  310. package/dist/extensions/pi-subagents/docs/watchdog.md +41 -10
  311. package/dist/extensions/pi-subagents/docs/workflows.md +239 -163
  312. package/dist/extensions/pi-subagents/examples/typed-gate/.pi/agents/classifier.md +14 -0
  313. package/dist/extensions/pi-subagents/examples/typed-gate/README.md +42 -0
  314. package/dist/extensions/pi-subagents/examples/typed-gate/classify +38 -0
  315. package/dist/extensions/pi-subagents/examples/typed-gate/workflow.js +32 -0
  316. package/dist/extensions/pi-subagents/index.ts +11 -3
  317. package/dist/extensions/pi-subagents/inspector-runner.mjs +3 -3
  318. package/dist/extensions/pi-subagents/package-lock.json +517 -1129
  319. package/dist/extensions/pi-subagents/package.json +22 -11
  320. package/dist/extensions/pi-subagents/prompts/council.md +7 -4
  321. package/dist/extensions/pi-subagents/prompts/parallel-review.md +2 -2
  322. package/dist/extensions/pi-subagents/prompts/review-loop.md +2 -2
  323. package/dist/extensions/pi-subagents/runner-peer-loader.mjs +21 -0
  324. package/dist/extensions/pi-subagents/runner-peer-preload.mjs +30 -0
  325. package/dist/extensions/pi-subagents/scripts/build-package.mjs +79 -0
  326. package/dist/extensions/pi-subagents/skills/council-mode/SKILL.md +2 -2
  327. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +46 -27
  328. package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +11 -7
  329. package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +78 -73
  330. package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +4 -5
  331. package/dist/extensions/pi-subagents/skills/pi-subagents/references/multi-lane-orchestration.md +10 -2
  332. package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +69 -67
  333. package/dist/extensions/pi-subagents/skills/pi-subagents/references/review-and-validation.md +3 -3
  334. package/dist/extensions/pi-subagents/src/agents/advertised-agent-prompt.ts +21 -10
  335. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +113 -113
  336. package/dist/extensions/pi-subagents/src/agents/agent-memory.ts +91 -4
  337. package/dist/extensions/pi-subagents/src/agents/agent-serializer.ts +15 -9
  338. package/dist/extensions/pi-subagents/src/agents/agents.ts +432 -193
  339. package/dist/extensions/pi-subagents/src/agents/chain-serializer.ts +6 -1
  340. package/dist/extensions/pi-subagents/src/agents/global-npm-root.ts +58 -0
  341. package/dist/extensions/pi-subagents/src/agents/proactive-skills.ts +5 -2
  342. package/dist/extensions/pi-subagents/src/agents/runtime-agent-registry.ts +22 -18
  343. package/dist/extensions/pi-subagents/src/agents/skills.ts +43 -10
  344. package/dist/extensions/pi-subagents/src/api/delegation.ts +20 -1
  345. package/dist/extensions/pi-subagents/src/api/inspectors.ts +27 -0
  346. package/dist/extensions/pi-subagents/src/api/preflight.ts +140 -62
  347. package/dist/extensions/pi-subagents/src/api/required-child-extensions.ts +6 -0
  348. package/dist/extensions/pi-subagents/src/api/shared-types.ts +2 -0
  349. package/dist/extensions/pi-subagents/src/extension/config.ts +24 -40
  350. package/dist/extensions/pi-subagents/src/extension/control-notices.ts +4 -1
  351. package/dist/extensions/pi-subagents/src/extension/doctor.ts +18 -15
  352. package/dist/extensions/pi-subagents/src/extension/fanout-child.ts +87 -13
  353. package/dist/extensions/pi-subagents/src/extension/herdr-pi-bridge.ts +162 -0
  354. package/dist/extensions/pi-subagents/src/extension/index.ts +280 -268
  355. package/dist/extensions/pi-subagents/src/extension/public-execution.ts +76 -37
  356. package/dist/extensions/pi-subagents/src/extension/reply-workflow-script.ts +67 -0
  357. package/dist/extensions/pi-subagents/src/extension/rpc.ts +34 -11
  358. package/dist/extensions/pi-subagents/src/extension/schemas.ts +116 -205
  359. package/dist/extensions/pi-subagents/src/extension/subagent-guide.ts +13 -5
  360. package/dist/extensions/pi-subagents/src/extension/tool-activation.ts +146 -0
  361. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +77 -90
  362. package/dist/extensions/pi-subagents/src/extension/upgrade-notice.ts +40 -0
  363. package/dist/extensions/pi-subagents/src/inspectors/actions.ts +148 -0
  364. package/dist/extensions/pi-subagents/src/inspectors/ghostty/actions.ts +74 -0
  365. package/dist/extensions/pi-subagents/src/inspectors/ghostty/plugin.ts +29 -0
  366. package/dist/extensions/pi-subagents/src/inspectors/herdr/actions.ts +100 -180
  367. package/dist/extensions/pi-subagents/src/inspectors/herdr/plugin.ts +20 -0
  368. package/dist/extensions/pi-subagents/src/inspectors/herdr/project-panes.ts +2 -2
  369. package/dist/extensions/pi-subagents/src/inspectors/{herdr/inspector-runner.ts → inspector-runner.ts} +13 -13
  370. package/dist/extensions/pi-subagents/src/inspectors/plugins.ts +75 -0
  371. package/dist/extensions/pi-subagents/src/inspectors/{herdr/session-roots-codec.ts → session-roots-codec.ts} +4 -15
  372. package/dist/extensions/pi-subagents/src/inspectors/{herdr/shell-command.ts → shell-command.ts} +1 -1
  373. package/dist/extensions/pi-subagents/src/inspectors/types.ts +51 -0
  374. package/dist/extensions/pi-subagents/src/integrations/herdr-status.ts +38 -53
  375. package/dist/extensions/pi-subagents/src/intercom/intercom-bridge.ts +53 -9
  376. package/dist/extensions/pi-subagents/src/intercom/native-supervisor-channel.ts +69 -55
  377. package/dist/extensions/pi-subagents/src/intercom/result-intercom.ts +7 -2
  378. package/dist/extensions/pi-subagents/src/missions/goal-driver.ts +45 -32
  379. package/dist/extensions/pi-subagents/src/missions/store.ts +11 -2
  380. package/dist/extensions/pi-subagents/src/policy/authority.ts +5 -1
  381. package/dist/extensions/pi-subagents/src/profiles/profiles.ts +30 -18
  382. package/dist/extensions/pi-subagents/src/runs/background/active-async-capacity.ts +59 -9
  383. package/dist/extensions/pi-subagents/src/runs/background/active-run-index.ts +18 -2
  384. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +463 -248
  385. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +106 -66
  386. package/dist/extensions/pi-subagents/src/runs/background/async-resume.ts +33 -20
  387. package/dist/extensions/pi-subagents/src/runs/background/async-retention.ts +47 -17
  388. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +18 -5
  389. package/dist/extensions/pi-subagents/src/runs/background/auto-drain.ts +24 -11
  390. package/dist/extensions/pi-subagents/src/runs/background/await-async-run.ts +78 -0
  391. package/dist/extensions/pi-subagents/src/runs/background/binary-bootstrap.ts +66 -0
  392. package/dist/extensions/pi-subagents/src/runs/background/calendar-schedule.ts +90 -0
  393. package/dist/extensions/pi-subagents/src/runs/background/chain-append.ts +2 -2
  394. package/dist/extensions/pi-subagents/src/runs/background/chain-root-attachment.ts +19 -38
  395. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +62 -3
  396. package/dist/extensions/pi-subagents/src/runs/background/fleet-view.ts +82 -10
  397. package/dist/extensions/pi-subagents/src/runs/background/notify.ts +259 -21
  398. package/dist/extensions/pi-subagents/src/runs/background/owned-process-tree.ts +30 -3
  399. package/dist/extensions/pi-subagents/src/runs/background/pid-namespace.ts +18 -0
  400. package/dist/extensions/pi-subagents/src/runs/background/process-terminal-candidate.ts +98 -0
  401. package/dist/extensions/pi-subagents/src/runs/background/process-terminal.ts +18 -97
  402. package/dist/extensions/pi-subagents/src/runs/background/result-files.ts +14 -5
  403. package/dist/extensions/pi-subagents/src/runs/background/result-watcher.ts +66 -12
  404. package/dist/extensions/pi-subagents/src/runs/background/retained-children.ts +4 -3
  405. package/dist/extensions/pi-subagents/src/runs/background/run-child-session.ts +126 -45
  406. package/dist/extensions/pi-subagents/src/runs/background/run-id-resolver.ts +11 -6
  407. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +18 -7
  408. package/dist/extensions/pi-subagents/src/runs/background/runner-aliases.ts +43 -51
  409. package/dist/extensions/pi-subagents/src/runs/background/runner-child-launch.ts +8 -1
  410. package/dist/extensions/pi-subagents/src/runs/background/runner-child-sessions.ts +5 -4
  411. package/dist/extensions/pi-subagents/src/runs/background/runner-http-dispatcher.ts +119 -0
  412. package/dist/extensions/pi-subagents/src/runs/background/runner-startup-failure.ts +56 -0
  413. package/dist/extensions/pi-subagents/src/runs/background/scheduled-runs.ts +233 -69
  414. package/dist/extensions/pi-subagents/src/runs/background/stale-run-reconciler.ts +67 -16
  415. package/dist/extensions/pi-subagents/src/runs/background/steering.ts +21 -3
  416. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner-bootstrap.ts +276 -0
  417. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +592 -573
  418. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +177 -29
  419. package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +77 -28
  420. package/dist/extensions/pi-subagents/src/runs/background/wait-subscriptions.ts +10 -4
  421. package/dist/extensions/pi-subagents/src/runs/background/wait-tool.ts +7 -13
  422. package/dist/extensions/pi-subagents/src/runs/background/workflow-terminal-proof.ts +41 -23
  423. package/dist/extensions/pi-subagents/src/runs/foreground/async-steering-action.ts +19 -8
  424. package/dist/extensions/pi-subagents/src/runs/foreground/async-stop-action.ts +130 -7
  425. package/dist/extensions/pi-subagents/src/runs/foreground/command-action.ts +41 -0
  426. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +267 -385
  427. package/dist/extensions/pi-subagents/src/runs/foreground/foreground-history.ts +4 -2
  428. package/dist/extensions/pi-subagents/src/runs/foreground/prompt-audit.ts +6 -10
  429. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +1158 -413
  430. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-detach-reconcile.ts +3 -1
  431. package/dist/extensions/pi-subagents/src/runs/foreground/workflow-foreground-steering.ts +2 -1
  432. package/dist/extensions/pi-subagents/src/runs/shared/acceptance.ts +200 -74
  433. package/dist/extensions/pi-subagents/src/runs/shared/async-status-projection.ts +133 -34
  434. package/dist/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts +6 -1
  435. package/dist/extensions/pi-subagents/src/runs/shared/child-commands.ts +228 -0
  436. package/dist/extensions/pi-subagents/src/runs/shared/child-hooks.ts +18 -18
  437. package/dist/extensions/pi-subagents/src/runs/shared/child-launch-plan.ts +16 -4
  438. package/dist/extensions/pi-subagents/src/runs/shared/child-launch.ts +55 -12
  439. package/dist/extensions/pi-subagents/src/runs/shared/child-lifecycle.ts +6 -3
  440. package/dist/extensions/pi-subagents/src/runs/shared/child-runtime-config.ts +11 -1
  441. package/dist/extensions/pi-subagents/src/runs/shared/child-session.ts +367 -74
  442. package/dist/extensions/pi-subagents/src/runs/shared/child-tool-plan.ts +50 -86
  443. package/dist/extensions/pi-subagents/src/runs/shared/claude-code-adapter.ts +288 -0
  444. package/dist/extensions/pi-subagents/src/runs/shared/codex-exec-adapter.ts +129 -0
  445. package/dist/extensions/pi-subagents/src/runs/shared/cursor-agent-adapter.ts +114 -0
  446. package/dist/extensions/pi-subagents/src/runs/shared/dynamic-fanout.ts +5 -5
  447. package/dist/extensions/pi-subagents/src/runs/shared/effective-system-prompt.ts +33 -0
  448. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-contract.ts +49 -10
  449. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-preflight.ts +61 -9
  450. package/dist/extensions/pi-subagents/src/runs/shared/external-cli-runner.ts +16 -9
  451. package/dist/extensions/pi-subagents/src/runs/shared/external-job-bridge.ts +55 -1
  452. package/dist/extensions/pi-subagents/src/runs/shared/git-environment.ts +1 -1
  453. package/dist/extensions/pi-subagents/src/runs/shared/herdr-connection.ts +134 -0
  454. package/dist/extensions/pi-subagents/src/runs/shared/herdr-external-adapters.ts +169 -0
  455. package/dist/extensions/pi-subagents/src/runs/shared/herdr-machine.ts +279 -0
  456. package/dist/extensions/pi-subagents/src/runs/shared/herdr-pi-protocol.ts +59 -0
  457. package/dist/extensions/pi-subagents/src/runs/shared/herdr-placed-run.ts +263 -0
  458. package/dist/extensions/pi-subagents/src/runs/shared/mcp-config-sources.ts +6 -2
  459. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +108 -13
  460. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-grant.ts +23 -7
  461. package/dist/extensions/pi-subagents/src/runs/shared/model-resolution-diagnostic.ts +76 -0
  462. package/dist/extensions/pi-subagents/src/runs/shared/{model-fallback.ts → model-resolution.ts} +65 -245
  463. package/dist/extensions/pi-subagents/src/runs/shared/model-scope.ts +30 -11
  464. package/dist/extensions/pi-subagents/src/runs/shared/nested-events.ts +24 -3
  465. package/dist/extensions/pi-subagents/src/runs/shared/orca-progress-tabs.ts +5 -4
  466. package/dist/extensions/pi-subagents/src/runs/shared/parallel-handoff.ts +55 -7
  467. package/dist/extensions/pi-subagents/src/runs/shared/parallel-utils.ts +14 -4
  468. package/dist/extensions/pi-subagents/src/runs/shared/partial-output.ts +48 -0
  469. package/dist/extensions/pi-subagents/src/runs/shared/pi-spawn.ts +12 -4
  470. package/dist/extensions/pi-subagents/src/runs/shared/run-history.ts +88 -1
  471. package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +12 -3
  472. package/dist/extensions/pi-subagents/src/runs/shared/structured-output.ts +160 -9
  473. package/dist/extensions/pi-subagents/src/runs/shared/subagent-control.ts +35 -34
  474. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +58 -19
  475. package/dist/extensions/pi-subagents/src/runs/shared/tool-availability.ts +2 -2
  476. package/dist/extensions/pi-subagents/src/runs/shared/tool-budget.ts +21 -0
  477. package/dist/extensions/pi-subagents/src/runs/shared/usage-reconciliation.ts +73 -0
  478. package/dist/extensions/pi-subagents/src/runs/shared/workflow-async-child-guidance.ts +18 -0
  479. package/dist/extensions/pi-subagents/src/runs/shared/worktree-cleanup-apply.ts +160 -0
  480. package/dist/extensions/pi-subagents/src/runs/shared/worktree-cleanup-plan.ts +42 -20
  481. package/dist/extensions/pi-subagents/src/runs/shared/worktree-lock.ts +29 -0
  482. package/dist/extensions/pi-subagents/src/runs/shared/worktree-setup-command.ts +27 -4
  483. package/dist/extensions/pi-subagents/src/runs/shared/worktree.ts +94 -26
  484. package/dist/extensions/pi-subagents/src/shared/child-cache-retention.ts +43 -0
  485. package/dist/extensions/pi-subagents/src/shared/child-session-name.ts +5 -3
  486. package/dist/extensions/pi-subagents/src/shared/disabled-features.ts +123 -0
  487. package/dist/extensions/pi-subagents/src/shared/extension-context.ts +14 -1
  488. package/dist/extensions/pi-subagents/src/shared/file-lease.ts +74 -0
  489. package/dist/extensions/pi-subagents/src/shared/fork-context.ts +27 -77
  490. package/dist/extensions/pi-subagents/src/shared/launch-contract.ts +70 -10
  491. package/dist/extensions/pi-subagents/src/shared/model-info.ts +10 -1
  492. package/dist/extensions/pi-subagents/src/shared/opencode-session-headers.ts +30 -0
  493. package/dist/extensions/pi-subagents/src/shared/package-version.ts +17 -0
  494. package/dist/extensions/pi-subagents/src/shared/parent-wake.ts +66 -0
  495. package/dist/extensions/pi-subagents/src/shared/pruned-fork.ts +71 -58
  496. package/dist/extensions/pi-subagents/src/shared/required-child-extensions.ts +115 -0
  497. package/dist/extensions/pi-subagents/src/shared/settings-file-lease.ts +36 -0
  498. package/dist/extensions/pi-subagents/src/shared/settings.ts +7 -4
  499. package/dist/extensions/pi-subagents/src/shared/shortcuts.ts +1 -5
  500. package/dist/extensions/pi-subagents/src/shared/types.ts +146 -48
  501. package/dist/extensions/pi-subagents/src/slash/delegation-adapters.ts +28 -2
  502. package/dist/extensions/pi-subagents/src/slash/delegation-request.ts +15 -1
  503. package/dist/extensions/pi-subagents/src/slash/prompt-template-bridge.ts +19 -4
  504. package/dist/extensions/pi-subagents/src/slash/prompt-workflows.ts +13 -2
  505. package/dist/extensions/pi-subagents/src/slash/slash-commands.ts +15 -15
  506. package/dist/extensions/pi-subagents/src/slash/subagent-cost.ts +46 -9
  507. package/dist/extensions/pi-subagents/src/slash/subagents-admin.ts +29 -16
  508. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +201 -26
  509. package/dist/extensions/pi-subagents/src/tui/fleet.ts +33 -16
  510. package/dist/extensions/pi-subagents/src/tui/render.ts +334 -103
  511. package/dist/extensions/pi-subagents/src/tui/running-tone.ts +28 -0
  512. package/dist/extensions/pi-subagents/src/watchdog/child-status.ts +27 -28
  513. package/dist/extensions/pi-subagents/src/watchdog/diff-tool.ts +47 -12
  514. package/dist/extensions/pi-subagents/src/watchdog/lsp-diagnostics.ts +2 -2
  515. package/dist/extensions/pi-subagents/src/watchdog/model-selection.ts +22 -2
  516. package/dist/extensions/pi-subagents/src/watchdog/permission-arbiter.ts +17 -17
  517. package/dist/extensions/pi-subagents/src/watchdog/register-child.ts +24 -8
  518. package/dist/extensions/pi-subagents/src/watchdog/register-main.ts +43 -39
  519. package/dist/extensions/pi-subagents/src/watchdog/render.ts +2 -2
  520. package/dist/extensions/pi-subagents/src/watchdog/review.ts +127 -78
  521. package/dist/extensions/pi-subagents/src/watchdog/rules.ts +1 -1
  522. package/dist/extensions/pi-subagents/src/watchdog/runtime.ts +107 -31
  523. package/dist/extensions/pi-subagents/src/watchdog/scope.ts +1 -1
  524. package/dist/extensions/pi-subagents/src/watchdog/settings.ts +22 -14
  525. package/dist/extensions/pi-subagents/src/watchdog/tool-actions.ts +14 -13
  526. package/dist/extensions/pi-subagents/src/watchdog/turn-delta.ts +35 -6
  527. package/dist/extensions/pi-subagents/src/watchdog/types.ts +6 -4
  528. package/dist/extensions/pi-subagents/src/watchdog/warning-format.ts +2 -2
  529. package/dist/extensions/pi-subagents/src/workflows/chat-progress.ts +3 -3
  530. package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +500 -65
  531. package/dist/extensions/pi-subagents/src/workflows/structured-workflow-scripts.ts +177 -0
  532. package/dist/extensions/pi-subagents/src/workflows/workflow-checklist.ts +8 -2
  533. package/dist/extensions/pi-subagents/src/workflows/workflow-child-summary.ts +5 -3
  534. package/dist/extensions/pi-subagents/src/workflows/workflow-receipt.ts +70 -10
  535. package/dist/extensions/pi-subagents/src/workflows/workflow-resources.ts +57 -18
  536. package/dist/extensions/pi-subagents/src/workflows/workflow-reuse.ts +120 -0
  537. package/dist/extensions/pi-subagents/src/workflows/workflow-revival.ts +123 -0
  538. package/dist/extensions/pi-subagents/src/workflows/workflow-settlement.ts +5 -2
  539. package/dist/extensions/pi-subagents/test/fixtures/cwd-workflow-child.ts +37 -0
  540. package/dist/extensions/pi-subagents/test/fixtures/herdr-allocation-lock-child.ts +16 -0
  541. package/dist/extensions/pi-subagents/test/fixtures/herdr-provision-child.ts +15 -0
  542. package/dist/extensions/pi-subagents/test/fixtures/native-nested-wait-provider.ts +76 -0
  543. package/dist/extensions/pi-subagents/test/fixtures/runner-bootstrap-harness.ts +36 -0
  544. package/dist/extensions/pi-subagents/test/fixtures/schedule-history-writer.mjs +48 -0
  545. package/dist/extensions/pi-subagents/test/fixtures/settings-race-writer.mjs +57 -0
  546. package/dist/extensions/pi-subagents/test/fixtures/workflow-cwd-access-failure.ts +33 -0
  547. package/dist/extensions/pi-subagents/test/integration/acceptance-file-report.test.ts +40 -7
  548. package/dist/extensions/pi-subagents/test/integration/async-attention-clearing.test.ts +9 -8
  549. package/dist/extensions/pi-subagents/test/integration/async-execution.part-1.test.ts +435 -276
  550. package/dist/extensions/pi-subagents/test/integration/async-execution.part-2.test.ts +435 -397
  551. package/dist/extensions/pi-subagents/test/integration/async-execution.part-3.test.ts +918 -497
  552. package/dist/extensions/pi-subagents/test/integration/async-execution.part-4.test.ts +264 -17
  553. package/dist/extensions/pi-subagents/test/integration/async-job-tracker.test.ts +185 -22
  554. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +3 -2
  555. package/dist/extensions/pi-subagents/test/integration/claude-code-dispatch.test.ts +127 -0
  556. package/dist/extensions/pi-subagents/test/integration/deadline-checkpoint.test.ts +126 -0
  557. package/dist/extensions/pi-subagents/test/integration/doctor-executor.test.ts +29 -1
  558. package/dist/extensions/pi-subagents/test/integration/error-handling.test.ts +88 -0
  559. package/dist/extensions/pi-subagents/test/integration/external-cli-runner.test.ts +450 -13
  560. package/dist/extensions/pi-subagents/test/integration/foreign-workflow-steering.test.ts +10 -6
  561. package/dist/extensions/pi-subagents/test/integration/fork-context-execution.test.ts +105 -86
  562. package/dist/extensions/pi-subagents/test/integration/in-process-child.test.ts +403 -18
  563. package/dist/extensions/pi-subagents/test/integration/inline-workflow-visibility.test.ts +351 -0
  564. package/dist/extensions/pi-subagents/test/integration/intercom-result-delivery.test.ts +195 -10
  565. package/dist/extensions/pi-subagents/test/integration/model-resolution-diagnostic.test.ts +108 -0
  566. package/dist/extensions/pi-subagents/test/integration/nested-async-wait.test.ts +61 -0
  567. package/dist/extensions/pi-subagents/test/integration/orca-progress-tabs.test.ts +5 -4
  568. package/dist/extensions/pi-subagents/test/integration/recovered-assistant-error.test.ts +1 -1
  569. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +6 -4
  570. package/dist/extensions/pi-subagents/test/integration/render-widget-mouse.test.ts +84 -0
  571. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +242 -16
  572. package/dist/extensions/pi-subagents/test/integration/result-publication.test.ts +2 -2
  573. package/dist/extensions/pi-subagents/test/integration/result-watcher.test.ts +158 -4
  574. package/dist/extensions/pi-subagents/test/integration/single-execution.part-1.test.ts +1435 -248
  575. package/dist/extensions/pi-subagents/test/integration/single-execution.part-2.test.ts +454 -515
  576. package/dist/extensions/pi-subagents/test/integration/slash-commands.test.ts +140 -21
  577. package/dist/extensions/pi-subagents/test/integration/structured-workflows.test.ts +105 -0
  578. package/dist/extensions/pi-subagents/test/integration/workflow-result-publication.test.ts +90 -11
  579. package/dist/extensions/pi-subagents/test/integration/workflow-steer-inbox.test.ts +18 -15
  580. package/dist/extensions/pi-subagents/test/integration/workflow-worktree-admission.test.ts +100 -0
  581. package/dist/extensions/pi-subagents/test/smoke/clean-install.mjs +106 -0
  582. package/dist/extensions/pi-subagents/test/smoke/npm-background.mjs +43 -0
  583. package/dist/extensions/pi-subagents/test/smoke/packed-runner-selection.mjs +42 -0
  584. package/dist/extensions/pi-subagents/test/smoke/runner-loader-capability.mjs +50 -0
  585. package/dist/extensions/pi-subagents/test/smoke/sdk-child.ts +57 -0
  586. package/dist/extensions/pi-subagents/test/smoke/{pi085-extension.ts → sdk-extension.ts} +2 -2
  587. package/dist/extensions/pi-subagents/test/smoke/standalone-background.mjs +140 -0
  588. package/dist/extensions/pi-subagents/test/smoke/standalone-fault.ts +43 -0
  589. package/dist/extensions/pi-subagents/test/smoke/standalone-matrix.mjs +65 -0
  590. package/dist/extensions/pi-subagents/test/smoke/standalone-observer.ts +8 -0
  591. package/dist/extensions/pi-subagents/test/smoke/standalone-parent.ts +220 -0
  592. package/dist/extensions/pi-subagents/test/smoke/standalone-provider.ts +58 -0
  593. package/dist/extensions/pi-subagents/test/smoke/standalone-release.json +8 -0
  594. package/dist/extensions/pi-subagents/test/smoke/standalone-revival.ts +109 -0
  595. package/dist/extensions/pi-subagents/test/smoke/standalone-shared.ts +79 -0
  596. package/dist/extensions/pi-subagents/test/smoke/tool-activation.test.ts +128 -0
  597. package/dist/extensions/pi-subagents/test/support/async-execution-fixture.ts +6 -25
  598. package/dist/extensions/pi-subagents/test/support/async-result-timeout-evidence.ts +61 -0
  599. package/dist/extensions/pi-subagents/test/support/fake-child-session.ts +122 -9
  600. package/dist/extensions/pi-subagents/test/support/foreign-workflow-steer-host.mjs +15 -7
  601. package/dist/extensions/pi-subagents/test/support/helpers.ts +11 -14
  602. package/dist/extensions/pi-subagents/test/support/isolated-temp-root.mjs +21 -3
  603. package/dist/extensions/pi-subagents/test/support/native-peer-loader.mjs +15 -0
  604. package/dist/extensions/pi-subagents/test/support/node-command.ts +29 -6
  605. package/dist/extensions/pi-subagents/test/support/notify-diagnostics-fixture.ts +5 -3
  606. package/dist/extensions/pi-subagents/test/support/single-execution-fixture.ts +7 -15
  607. package/dist/extensions/pi-subagents/test/support/watchdog-stable-host-loader.mjs +23 -0
  608. package/dist/extensions/pi-subagents/test/unit/acceptance-compaction.test.ts +3 -3
  609. package/dist/extensions/pi-subagents/test/unit/acceptance.test.ts +158 -155
  610. package/dist/extensions/pi-subagents/test/unit/active-async-capacity.test.ts +52 -1
  611. package/dist/extensions/pi-subagents/test/unit/advertised-agent-prompt.test.ts +21 -17
  612. package/dist/extensions/pi-subagents/test/unit/advertised-agent-refresh.test.ts +105 -36
  613. package/dist/extensions/pi-subagents/test/unit/advertisement-barrier.test.ts +151 -0
  614. package/dist/extensions/pi-subagents/test/unit/agent-disabled.test.ts +1 -2
  615. package/dist/extensions/pi-subagents/test/unit/agent-eject-disable.test.ts +33 -3
  616. package/dist/extensions/pi-subagents/test/unit/agent-end-auto-drain.test.ts +149 -0
  617. package/dist/extensions/pi-subagents/test/unit/agent-exclude-dirs.test.ts +246 -0
  618. package/dist/extensions/pi-subagents/test/unit/agent-frontmatter.test.ts +62 -87
  619. package/dist/extensions/pi-subagents/test/unit/agent-global-root-override.test.ts +86 -0
  620. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +398 -48
  621. package/dist/extensions/pi-subagents/test/unit/agent-memory.test.ts +126 -1
  622. package/dist/extensions/pi-subagents/test/unit/agent-name-resolution.test.ts +75 -0
  623. package/dist/extensions/pi-subagents/test/unit/agent-overrides.test.ts +94 -42
  624. package/dist/extensions/pi-subagents/test/unit/async-execution.test.ts +73 -3
  625. package/dist/extensions/pi-subagents/test/unit/async-interrupt-action.test.ts +428 -2
  626. package/dist/extensions/pi-subagents/test/unit/async-permission-session.test.ts +4 -4
  627. package/dist/extensions/pi-subagents/test/unit/async-recovery-descriptor.test.ts +112 -1
  628. package/dist/extensions/pi-subagents/test/unit/async-result-timeout-evidence.test.ts +53 -0
  629. package/dist/extensions/pi-subagents/test/unit/async-resume.test.ts +92 -4
  630. package/dist/extensions/pi-subagents/test/unit/async-retention.test.ts +58 -6
  631. package/dist/extensions/pi-subagents/test/unit/async-run-history.test.ts +123 -0
  632. package/dist/extensions/pi-subagents/test/unit/async-spawn-package-dir.test.ts +203 -0
  633. package/dist/extensions/pi-subagents/test/unit/async-spawn-preload.test.ts +26 -35
  634. package/dist/extensions/pi-subagents/test/unit/async-status-projection.test.ts +185 -0
  635. package/dist/extensions/pi-subagents/test/unit/authority-policy.test.ts +9 -1
  636. package/dist/extensions/pi-subagents/test/unit/auto-drain.test.ts +106 -1
  637. package/dist/extensions/pi-subagents/test/unit/await-async-run.test.ts +202 -0
  638. package/dist/extensions/pi-subagents/test/unit/binary-async-spawn.test.ts +115 -0
  639. package/dist/extensions/pi-subagents/test/unit/binary-pi-spawn.test.ts +27 -0
  640. package/dist/extensions/pi-subagents/test/unit/calendar-schedule.test.ts +70 -0
  641. package/dist/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts +38 -0
  642. package/dist/extensions/pi-subagents/test/unit/chain-root-attachment.test.ts +10 -2
  643. package/dist/extensions/pi-subagents/test/unit/changelog-format.test.ts +11 -0
  644. package/dist/extensions/pi-subagents/test/unit/child-cache-retention.test.ts +87 -0
  645. package/dist/extensions/pi-subagents/test/unit/child-commands.test.ts +243 -0
  646. package/dist/extensions/pi-subagents/test/unit/child-external-job-bridge.test.ts +126 -0
  647. package/dist/extensions/pi-subagents/test/unit/child-launch-plan.test.ts +12 -1
  648. package/dist/extensions/pi-subagents/test/unit/child-lifecycle.test.ts +36 -0
  649. package/dist/extensions/pi-subagents/test/unit/child-runtime-config.test.ts +24 -0
  650. package/dist/extensions/pi-subagents/test/unit/child-session-commands.test.ts +162 -0
  651. package/dist/extensions/pi-subagents/test/unit/child-session-host-sdk.test.ts +226 -0
  652. package/dist/extensions/pi-subagents/test/unit/child-session-parent-providers.test.ts +200 -0
  653. package/dist/extensions/pi-subagents/test/unit/child-session-queued.test.ts +260 -0
  654. package/dist/extensions/pi-subagents/test/unit/child-tool-plan-permission-system.test.ts +3 -98
  655. package/dist/extensions/pi-subagents/test/unit/child-tool-plan.test.ts +222 -1
  656. package/dist/extensions/pi-subagents/test/unit/claude-code-adapter.test.ts +314 -0
  657. package/dist/extensions/pi-subagents/test/unit/claude-code-dispatch.test.ts +182 -0
  658. package/dist/extensions/pi-subagents/test/unit/codex-exec-adapter.test.ts +157 -0
  659. package/dist/extensions/pi-subagents/test/unit/command-action.test.ts +50 -0
  660. package/dist/extensions/pi-subagents/test/unit/compaction-resume.test.ts +25 -11
  661. package/dist/extensions/pi-subagents/test/unit/completion-replay.test.ts +3 -1
  662. package/dist/extensions/pi-subagents/test/unit/control-channel.test.ts +18 -0
  663. package/dist/extensions/pi-subagents/test/unit/control-notices.test.ts +7 -1
  664. package/dist/extensions/pi-subagents/test/unit/cursor-agent-adapter.test.ts +220 -0
  665. package/dist/extensions/pi-subagents/test/unit/default-extensions.test.ts +104 -32
  666. package/dist/extensions/pi-subagents/test/unit/delegation-api.test.ts +138 -1
  667. package/dist/extensions/pi-subagents/test/unit/disabled-features.test.ts +227 -0
  668. package/dist/extensions/pi-subagents/test/unit/doctor.test.ts +48 -9
  669. package/dist/extensions/pi-subagents/test/unit/dynamic-fanout.test.ts +7 -4
  670. package/dist/extensions/pi-subagents/test/unit/extension-lazy-loading.test.ts +21 -0
  671. package/dist/extensions/pi-subagents/test/unit/extension-maintenance-lifecycle.test.ts +66 -0
  672. package/dist/extensions/pi-subagents/test/unit/extension-module-preload.test.ts +49 -0
  673. package/dist/extensions/pi-subagents/test/unit/external-cli-runner.test.ts +104 -3
  674. package/dist/extensions/pi-subagents/test/unit/file-lease.test.ts +17 -0
  675. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +316 -0
  676. package/dist/extensions/pi-subagents/test/unit/fleet.test.ts +58 -7
  677. package/dist/extensions/pi-subagents/test/unit/fork-context.test.ts +25 -96
  678. package/dist/extensions/pi-subagents/test/unit/ghostty-inspector.test.ts +92 -0
  679. package/dist/extensions/pi-subagents/test/unit/global-npm-root.test.ts +108 -0
  680. package/dist/extensions/pi-subagents/test/unit/herdr-connection.test.ts +43 -0
  681. package/dist/extensions/pi-subagents/test/unit/herdr-external-adapters.test.ts +89 -0
  682. package/dist/extensions/pi-subagents/test/unit/herdr-inspector-bootstrap.test.ts +11 -20
  683. package/dist/extensions/pi-subagents/test/unit/herdr-inspector.test.ts +113 -19
  684. package/dist/extensions/pi-subagents/test/unit/herdr-machine.test.ts +161 -0
  685. package/dist/extensions/pi-subagents/test/unit/herdr-native-placement.test.ts +187 -0
  686. package/dist/extensions/pi-subagents/test/unit/herdr-session-roots-codec.test.ts +7 -12
  687. package/dist/extensions/pi-subagents/test/unit/herdr-shell-command.test.ts +2 -2
  688. package/dist/extensions/pi-subagents/test/unit/herdr-status-bridge.test.ts +182 -87
  689. package/dist/extensions/pi-subagents/test/unit/host-peer-runtime-imports.test.ts +68 -49
  690. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +295 -135
  691. package/dist/extensions/pi-subagents/test/unit/inspect-rpc.test.ts +3 -3
  692. package/dist/extensions/pi-subagents/test/unit/inspector-authority-policy.test.ts +144 -0
  693. package/dist/extensions/pi-subagents/test/unit/inspector-registration.test.ts +128 -0
  694. package/dist/extensions/pi-subagents/test/unit/intercom-bridge.test.ts +49 -1
  695. package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-grant.test.ts +74 -1
  696. package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-resolution.test.ts +112 -0
  697. package/dist/extensions/pi-subagents/test/unit/mission-global-projection.test.ts +215 -0
  698. package/dist/extensions/pi-subagents/test/unit/mission-goal-driver.test.ts +65 -1
  699. package/dist/extensions/pi-subagents/test/unit/mission-store.test.ts +2 -1
  700. package/dist/extensions/pi-subagents/test/unit/model-resolution-diagnostic.test.ts +78 -0
  701. package/dist/extensions/pi-subagents/test/unit/model-resolution.test.ts +153 -0
  702. package/dist/extensions/pi-subagents/test/unit/model-scope.test.ts +43 -1
  703. package/dist/extensions/pi-subagents/test/unit/mutation-evidence.test.ts +1 -21
  704. package/dist/extensions/pi-subagents/test/unit/native-supervisor-channel.test.ts +279 -2
  705. package/dist/extensions/pi-subagents/test/unit/nested-control-fanout.test.ts +73 -0
  706. package/dist/extensions/pi-subagents/test/unit/nested-control.test.ts +297 -3
  707. package/dist/extensions/pi-subagents/test/unit/notify-diagnostics.test.ts +1 -1
  708. package/dist/extensions/pi-subagents/test/unit/notify.test.ts +431 -23
  709. package/dist/extensions/pi-subagents/test/unit/opencode-session-headers.test.ts +32 -0
  710. package/dist/extensions/pi-subagents/test/unit/orca-progress-tabs.test.ts +89 -21
  711. package/dist/extensions/pi-subagents/test/unit/owned-process-tree.test.ts +31 -1
  712. package/dist/extensions/pi-subagents/test/unit/package-manifest.test.ts +18 -24
  713. package/dist/extensions/pi-subagents/test/unit/parent-wake.test.ts +206 -0
  714. package/dist/extensions/pi-subagents/test/unit/partial-output.test.ts +53 -0
  715. package/dist/extensions/pi-subagents/test/unit/pi-coding-agent-dir.test.ts +216 -32
  716. package/dist/extensions/pi-subagents/test/unit/pi-spawn-host-root.test.ts +82 -0
  717. package/dist/extensions/pi-subagents/test/unit/pi-subagents-policy-guidance.test.ts +28 -0
  718. package/dist/extensions/pi-subagents/test/unit/preflight.test.ts +193 -104
  719. package/dist/extensions/pi-subagents/test/unit/proactive-skills.test.ts +16 -1
  720. package/dist/extensions/pi-subagents/test/unit/process-terminal.test.ts +17 -1
  721. package/dist/extensions/pi-subagents/test/unit/profiles.test.ts +89 -9
  722. package/dist/extensions/pi-subagents/test/unit/prompt-audit-optional-peers.test.ts +6 -0
  723. package/dist/extensions/pi-subagents/test/unit/prompt-audit-provider-routing.test.ts +69 -0
  724. package/dist/extensions/pi-subagents/test/unit/prompt-template-bridge.test.ts +2 -2
  725. package/dist/extensions/pi-subagents/test/unit/prompt-workflows.test.ts +23 -1
  726. package/dist/extensions/pi-subagents/test/unit/pruned-fork.test.ts +117 -3
  727. package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +35 -14
  728. package/dist/extensions/pi-subagents/test/unit/readonly-drain-observation.test.ts +3 -2
  729. package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +261 -9
  730. package/dist/extensions/pi-subagents/test/unit/reply-workflow-script.test.ts +37 -0
  731. package/dist/extensions/pi-subagents/test/unit/required-child-extensions.test.ts +114 -0
  732. package/dist/extensions/pi-subagents/test/unit/result-intercom.test.ts +11 -1
  733. package/dist/extensions/pi-subagents/test/unit/retained-children.test.ts +22 -2
  734. package/dist/extensions/pi-subagents/test/unit/rpc.test.ts +125 -18
  735. package/dist/extensions/pi-subagents/test/unit/run-child-session.test.ts +230 -0
  736. package/dist/extensions/pi-subagents/test/unit/run-id-resolver.test.ts +50 -1
  737. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +301 -4
  738. package/dist/extensions/pi-subagents/test/unit/runner-bootstrap.test.ts +182 -0
  739. package/dist/extensions/pi-subagents/test/unit/runner-http-dispatcher.test.ts +136 -0
  740. package/dist/extensions/pi-subagents/test/unit/runner-peer-loader.test.ts +68 -0
  741. package/dist/extensions/pi-subagents/test/unit/runner-peer-symlinks.test.ts +50 -0
  742. package/dist/extensions/pi-subagents/test/unit/running-tone.test.ts +13 -0
  743. package/dist/extensions/pi-subagents/test/unit/runtime-agent-registration.test.ts +155 -4
  744. package/dist/extensions/pi-subagents/test/unit/schedule-claim-initialization.test.ts +71 -0
  745. package/dist/extensions/pi-subagents/test/unit/schedule-claim-preservation.test.ts +98 -0
  746. package/dist/extensions/pi-subagents/test/unit/schedule-history-transactions.test.ts +201 -0
  747. package/dist/extensions/pi-subagents/test/unit/scheduled-mission.test.ts +317 -0
  748. package/dist/extensions/pi-subagents/test/unit/scheduled-runs.test.ts +412 -11
  749. package/dist/extensions/pi-subagents/test/unit/scheduled-store-root.test.ts +2 -8
  750. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +70 -71
  751. package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +748 -5
  752. package/dist/extensions/pi-subagents/test/unit/session-liveness-delivery.test.ts +337 -0
  753. package/dist/extensions/pi-subagents/test/unit/settings-atomic-save.test.ts +419 -0
  754. package/dist/extensions/pi-subagents/test/unit/settings-transactions.test.ts +88 -0
  755. package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +13 -1
  756. package/dist/extensions/pi-subagents/test/unit/skills-disable-model-invocation.test.ts +164 -0
  757. package/dist/extensions/pi-subagents/test/unit/skills-fallback.test.ts +35 -2
  758. package/dist/extensions/pi-subagents/test/unit/slash-bridge.test.ts +2 -2
  759. package/dist/extensions/pi-subagents/test/unit/stale-run-reconciler.test.ts +334 -9
  760. package/dist/extensions/pi-subagents/test/unit/steering-action.test.ts +170 -0
  761. package/dist/extensions/pi-subagents/test/unit/steering.test.ts +34 -5
  762. package/dist/extensions/pi-subagents/test/unit/structured-output-validation.test.ts +199 -0
  763. package/dist/extensions/pi-subagents/test/unit/structured-workflow-resources.test.ts +241 -0
  764. package/dist/extensions/pi-subagents/test/unit/subagent-control.test.ts +47 -38
  765. package/dist/extensions/pi-subagents/test/unit/subagent-cost.test.ts +97 -0
  766. package/dist/extensions/pi-subagents/test/unit/subagent-guide.test.ts +10 -0
  767. package/dist/extensions/pi-subagents/test/unit/subagent-prompt-runtime.test.ts +343 -44
  768. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +410 -11
  769. package/dist/extensions/pi-subagents/test/unit/supervisor-ask-registration.test.ts +459 -22
  770. package/dist/extensions/pi-subagents/test/unit/temp-paths.test.ts +43 -3
  771. package/dist/extensions/pi-subagents/test/unit/timeout-defaults.test.ts +11 -1
  772. package/dist/extensions/pi-subagents/test/unit/tool-activation-stale-peer.test.ts +32 -0
  773. package/dist/extensions/pi-subagents/test/unit/tool-activation.test.ts +313 -0
  774. package/dist/extensions/pi-subagents/test/unit/tool-budget.test.ts +14 -0
  775. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +76 -89
  776. package/dist/extensions/pi-subagents/test/unit/typed-gate-output.test.ts +141 -0
  777. package/dist/extensions/pi-subagents/test/unit/upgrade-notice.test.ts +31 -0
  778. package/dist/extensions/pi-subagents/test/unit/usage-reconciliation-owners.test.ts +66 -0
  779. package/dist/extensions/pi-subagents/test/unit/usage-reconciliation.test.ts +23 -0
  780. package/dist/extensions/pi-subagents/test/unit/wait-completions.test.ts +195 -1
  781. package/dist/extensions/pi-subagents/test/unit/wait-subscriptions.test.ts +3 -1
  782. package/dist/extensions/pi-subagents/test/unit/watchdog-child-status.test.ts +48 -45
  783. package/dist/extensions/pi-subagents/test/unit/watchdog-compaction-scope.test.ts +94 -0
  784. package/dist/extensions/pi-subagents/test/unit/watchdog-diff-tool.test.ts +48 -3
  785. package/dist/extensions/pi-subagents/test/unit/watchdog-native-scheduling.test.ts +107 -0
  786. package/dist/extensions/pi-subagents/test/unit/watchdog-permission-arbiter.test.ts +95 -7
  787. package/dist/extensions/pi-subagents/test/unit/watchdog-register-child.test.ts +79 -0
  788. package/dist/extensions/pi-subagents/test/unit/watchdog-render.test.ts +7 -4
  789. package/dist/extensions/pi-subagents/test/unit/watchdog-review.test.ts +111 -24
  790. package/dist/extensions/pi-subagents/test/unit/watchdog-rules.test.ts +1 -1
  791. package/dist/extensions/pi-subagents/test/unit/watchdog-runtime.test.ts +283 -2
  792. package/dist/extensions/pi-subagents/test/unit/watchdog-scope.test.ts +3 -0
  793. package/dist/extensions/pi-subagents/test/unit/watchdog-settings.test.ts +12 -1
  794. package/dist/extensions/pi-subagents/test/unit/watchdog-stable-host-layout.test.ts +23 -0
  795. package/dist/extensions/pi-subagents/test/unit/watchdog-tool-actions.test.ts +30 -0
  796. package/dist/extensions/pi-subagents/test/unit/watchdog-turn-delta.test.ts +39 -2
  797. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +18 -1
  798. package/dist/extensions/pi-subagents/test/unit/workflow-chat-progress.test.ts +8 -4
  799. package/dist/extensions/pi-subagents/test/unit/workflow-child-summary.test.ts +10 -0
  800. package/dist/extensions/pi-subagents/test/unit/workflow-detach-reconcile.test.ts +6 -3
  801. package/dist/extensions/pi-subagents/test/unit/workflow-launch-params.test.ts +44 -1
  802. package/dist/extensions/pi-subagents/test/unit/workflow-receipt.test.ts +28 -1
  803. package/dist/extensions/pi-subagents/test/unit/workflow-revival.test.ts +85 -0
  804. package/dist/extensions/pi-subagents/test/unit/workflow-scripts-feature.test.ts +177 -0
  805. package/dist/extensions/pi-subagents/test/unit/workflow-terminal-proof.test.ts +8 -0
  806. package/dist/extensions/pi-subagents/test/unit/workflow-worktree-admission.test.ts +29 -0
  807. package/dist/extensions/pi-subagents/test/unit/worktree-cleanup-plan.test.ts +343 -4
  808. package/dist/extensions/pi-subagents/test/unit/worktree-lock.test.ts +123 -0
  809. package/dist/extensions/pi-subagents/test/unit/worktree.test.ts +252 -22
  810. package/dist/extensions/pi-subagents/tsconfig.build.json +13 -0
  811. package/dist/extensions/pi-tool-display/tests/custom-tool-overrides.test.ts +1 -1
  812. package/dist/extensions/pi-tool-display/tests/tool-overrides-config.test.ts +1 -1
  813. package/dist/extensions/pi-tool-display/tests/tool-overrides-mcp.test.ts +24 -1
  814. package/dist/extensions/pi-tool-display/tests/tool-overrides-registration.test.ts +6 -2
  815. package/dist/extensions/pi-web-agent/src/extension.ts +1 -5
  816. package/dist/extensions/pi-zentui/.github/workflows/ci.yml +67 -4
  817. package/dist/extensions/pi-zentui/AGENTS.md +3 -2
  818. package/dist/extensions/pi-zentui/README.md +60 -32
  819. package/dist/extensions/pi-zentui/docs/configuration.md +662 -51
  820. package/dist/extensions/pi-zentui/docs/footer-format.md +174 -5
  821. package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-editor.ts +15 -4
  822. package/dist/extensions/pi-zentui/extensions/zentui/average-token-rate.ts +146 -0
  823. package/dist/extensions/pi-zentui/extensions/zentui/codex-quota-display.ts +34 -0
  824. package/dist/extensions/pi-zentui/extensions/zentui/codex-quota.ts +298 -0
  825. package/dist/extensions/pi-zentui/extensions/zentui/component-colors.ts +172 -0
  826. package/dist/extensions/pi-zentui/extensions/zentui/component-settings.ts +243 -0
  827. package/dist/extensions/pi-zentui/extensions/zentui/config.ts +851 -114
  828. package/dist/extensions/pi-zentui/extensions/zentui/custom-value-colors.ts +93 -0
  829. package/dist/extensions/pi-zentui/extensions/zentui/custom-variable-demand.ts +61 -0
  830. package/dist/extensions/pi-zentui/extensions/zentui/custom-variable-format.ts +80 -0
  831. package/dist/extensions/pi-zentui/extensions/zentui/custom-variables.ts +152 -0
  832. package/dist/extensions/pi-zentui/extensions/zentui/editor-metadata-format.ts +138 -23
  833. package/dist/extensions/pi-zentui/extensions/zentui/editor-mouse.ts +89 -0
  834. package/dist/extensions/pi-zentui/extensions/zentui/extension-status-controller.ts +148 -0
  835. package/dist/extensions/pi-zentui/extensions/zentui/extension-status-settings.ts +40 -0
  836. package/dist/extensions/pi-zentui/extensions/zentui/extension-status.ts +109 -1
  837. package/dist/extensions/pi-zentui/extensions/zentui/footer-format.ts +203 -23
  838. package/dist/extensions/pi-zentui/extensions/zentui/footer-layout.ts +80 -3
  839. package/dist/extensions/pi-zentui/extensions/zentui/footer-text.ts +1 -1
  840. package/dist/extensions/pi-zentui/extensions/zentui/footer.ts +432 -125
  841. package/dist/extensions/pi-zentui/extensions/zentui/format.ts +92 -4
  842. package/dist/extensions/pi-zentui/extensions/zentui/git.ts +47 -30
  843. package/dist/extensions/pi-zentui/extensions/zentui/github-status.ts +575 -0
  844. package/dist/extensions/pi-zentui/extensions/zentui/host-project-changes.ts +25 -0
  845. package/dist/extensions/pi-zentui/extensions/zentui/host-template-values.ts +29 -0
  846. package/dist/extensions/pi-zentui/extensions/zentui/icons.ts +53 -13
  847. package/dist/extensions/pi-zentui/extensions/zentui/index.ts +778 -258
  848. package/dist/extensions/pi-zentui/extensions/zentui/interaction-summary.ts +70 -5
  849. package/dist/extensions/pi-zentui/extensions/zentui/layered-editor.ts +55 -0
  850. package/dist/extensions/pi-zentui/extensions/zentui/live-context.ts +6 -1
  851. package/dist/extensions/pi-zentui/extensions/zentui/live-metadata-demand.ts +72 -0
  852. package/dist/extensions/pi-zentui/extensions/zentui/live-metadata-display.ts +21 -0
  853. package/dist/extensions/pi-zentui/extensions/zentui/live-metadata.ts +255 -0
  854. package/dist/extensions/pi-zentui/extensions/zentui/minimalist-editor.ts +476 -36
  855. package/dist/extensions/pi-zentui/extensions/zentui/minimalist-settings.ts +118 -0
  856. package/dist/extensions/pi-zentui/extensions/zentui/minimalist-template.ts +177 -0
  857. package/dist/extensions/pi-zentui/extensions/zentui/omp-editor-frame.ts +148 -0
  858. package/dist/extensions/pi-zentui/extensions/zentui/omp-statusline.ts +569 -0
  859. package/dist/extensions/pi-zentui/extensions/zentui/omp-template-lookups.ts +344 -0
  860. package/dist/extensions/pi-zentui/extensions/zentui/omp-template-metrics.ts +91 -0
  861. package/dist/extensions/pi-zentui/extensions/zentui/omp-template-modes.ts +323 -0
  862. package/dist/extensions/pi-zentui/extensions/zentui/omp-ui.ts +210 -0
  863. package/dist/extensions/pi-zentui/extensions/zentui/package-version.ts +30 -12
  864. package/dist/extensions/pi-zentui/extensions/zentui/project-demand.ts +46 -0
  865. package/dist/extensions/pi-zentui/extensions/zentui/project-discovery.ts +58 -0
  866. package/dist/extensions/pi-zentui/extensions/zentui/project-refresh.ts +10 -3
  867. package/dist/extensions/pi-zentui/extensions/zentui/project-state.ts +37 -0
  868. package/dist/extensions/pi-zentui/extensions/zentui/repository-root.ts +1 -0
  869. package/dist/extensions/pi-zentui/extensions/zentui/runtime.ts +119 -43
  870. package/dist/extensions/pi-zentui/extensions/zentui/selector-border.ts +40 -29
  871. package/dist/extensions/pi-zentui/extensions/zentui/settings-command.ts +1268 -722
  872. package/dist/extensions/pi-zentui/extensions/zentui/settings-keys.ts +59 -0
  873. package/dist/extensions/pi-zentui/extensions/zentui/settings-list-selection.ts +13 -0
  874. package/dist/extensions/pi-zentui/extensions/zentui/settings-previews.ts +11 -4
  875. package/dist/extensions/pi-zentui/extensions/zentui/state.ts +24 -11
  876. package/dist/extensions/pi-zentui/extensions/zentui/style.ts +6 -0
  877. package/dist/extensions/pi-zentui/extensions/zentui/telemetry.ts +113 -11
  878. package/dist/extensions/pi-zentui/extensions/zentui/thinking-experimental.ts +234 -46
  879. package/dist/extensions/pi-zentui/extensions/zentui/thinking-steps.ts +20 -5
  880. package/dist/extensions/pi-zentui/extensions/zentui/token-rate.ts +313 -0
  881. package/dist/extensions/pi-zentui/extensions/zentui/turn-summary-format.ts +59 -0
  882. package/dist/extensions/pi-zentui/extensions/zentui/turn-summary-rate.ts +52 -0
  883. package/dist/extensions/pi-zentui/extensions/zentui/ui.ts +640 -172
  884. package/dist/extensions/pi-zentui/extensions/zentui/user-message-styles.ts +72 -34
  885. package/dist/extensions/pi-zentui/extensions/zentui/user-message.ts +219 -34
  886. package/dist/extensions/pi-zentui/extensions/zentui/working-line.ts +495 -119
  887. package/dist/extensions/pi-zentui/omp.ts +157 -0
  888. package/dist/extensions/pi-zentui/package-lock.json +3762 -1507
  889. package/dist/extensions/pi-zentui/package.json +50 -12
  890. package/dist/extensions/pi-zentui/test/accent-rail-editor.test.ts +13 -2
  891. package/dist/extensions/pi-zentui/test/average-token-rate.test.ts +297 -0
  892. package/dist/extensions/pi-zentui/test/behavior-compatibility.mjs +89 -0
  893. package/dist/extensions/pi-zentui/test/codex-quota-lifecycle.test.ts +284 -0
  894. package/dist/extensions/pi-zentui/test/codex-quota-rendering.test.ts +466 -0
  895. package/dist/extensions/pi-zentui/test/codex-quota.test.ts +440 -0
  896. package/dist/extensions/pi-zentui/test/component-colors.test.ts +554 -0
  897. package/dist/extensions/pi-zentui/test/component-settings.test.ts +364 -0
  898. package/dist/extensions/pi-zentui/test/config-component-independence.test.ts +402 -0
  899. package/dist/extensions/pi-zentui/test/config-extension-status-choice.test.ts +233 -0
  900. package/dist/extensions/pi-zentui/test/config-hidden-extension-status-colors.test.ts +118 -0
  901. package/dist/extensions/pi-zentui/test/config-hidden-extension-status-placement.test.ts +142 -0
  902. package/dist/extensions/pi-zentui/test/config-minimalist-templates.test.ts +240 -0
  903. package/dist/extensions/pi-zentui/test/config-template-variables.test.ts +85 -0
  904. package/dist/extensions/pi-zentui/test/config.test.ts +80 -17
  905. package/dist/extensions/pi-zentui/test/custom-value-colors-integration.test.ts +453 -0
  906. package/dist/extensions/pi-zentui/test/custom-value-colors.test.ts +399 -0
  907. package/dist/extensions/pi-zentui/test/custom-variable-alias-prototypes.test.ts +177 -0
  908. package/dist/extensions/pi-zentui/test/custom-variable-consumers.test.ts +194 -0
  909. package/dist/extensions/pi-zentui/test/custom-variable-demand.test.ts +169 -0
  910. package/dist/extensions/pi-zentui/test/custom-variable-probe-reservation.test.ts +141 -0
  911. package/dist/extensions/pi-zentui/test/custom-variables-lifecycle.integration.test.ts +365 -0
  912. package/dist/extensions/pi-zentui/test/custom-variables.test.ts +330 -0
  913. package/dist/extensions/pi-zentui/test/editor-metadata-format.test.ts +121 -0
  914. package/dist/extensions/pi-zentui/test/editor-mouse.test.ts +507 -0
  915. package/dist/extensions/pi-zentui/test/editor-viewport-indicators.test.ts +247 -20
  916. package/dist/extensions/pi-zentui/test/extension-compliance.test.ts +204 -260
  917. package/dist/extensions/pi-zentui/test/extension-status-controller.test.ts +323 -0
  918. package/dist/extensions/pi-zentui/test/extension-status-lifecycle.integration.test.ts +466 -0
  919. package/dist/extensions/pi-zentui/test/extension-status-settings.test.ts +79 -0
  920. package/dist/extensions/pi-zentui/test/footer-alignment.test.ts +135 -0
  921. package/dist/extensions/pi-zentui/test/footer-authority.test.ts +69 -0
  922. package/dist/extensions/pi-zentui/test/footer-auto-compaction.test.ts +148 -0
  923. package/dist/extensions/pi-zentui/test/footer-format-cache.test.ts +186 -0
  924. package/dist/extensions/pi-zentui/test/footer-format.test.ts +154 -4
  925. package/dist/extensions/pi-zentui/test/footer-hidden.test.ts +312 -0
  926. package/dist/extensions/pi-zentui/test/footer-hyperlink.test.ts +22 -0
  927. package/dist/extensions/pi-zentui/test/footer-layout.test.ts +80 -0
  928. package/dist/extensions/pi-zentui/test/footer-thinking-level.test.ts +123 -0
  929. package/dist/extensions/pi-zentui/test/format.test.ts +75 -1
  930. package/dist/extensions/pi-zentui/test/git-probes.test.ts +182 -0
  931. package/dist/extensions/pi-zentui/test/github-status.test.ts +931 -0
  932. package/dist/extensions/pi-zentui/test/host-template-surfaces.test.ts +287 -0
  933. package/dist/extensions/pi-zentui/test/icons.test.ts +86 -16
  934. package/dist/extensions/pi-zentui/test/layered-editor.test.ts +53 -0
  935. package/dist/extensions/pi-zentui/test/live-context-integration.test.ts +154 -7
  936. package/dist/extensions/pi-zentui/test/live-context.test.ts +45 -0
  937. package/dist/extensions/pi-zentui/test/live-metadata-lifecycle.integration.test.ts +963 -0
  938. package/dist/extensions/pi-zentui/test/live-metadata.test.ts +767 -0
  939. package/dist/extensions/pi-zentui/test/minimalist-cache-hit-colors.test.ts +183 -0
  940. package/dist/extensions/pi-zentui/test/minimalist-editor.test.ts +222 -4
  941. package/dist/extensions/pi-zentui/test/minimalist-settings.test.ts +103 -0
  942. package/dist/extensions/pi-zentui/test/minimalist-templates.test.ts +489 -0
  943. package/dist/extensions/pi-zentui/test/omp-editor-composers.test.ts +324 -0
  944. package/dist/extensions/pi-zentui/test/omp-statusline.test.ts +579 -0
  945. package/dist/extensions/pi-zentui/test/omp-template-lookups.test.ts +630 -0
  946. package/dist/extensions/pi-zentui/test/omp-template-metrics.test.ts +72 -0
  947. package/dist/extensions/pi-zentui/test/omp-template-modes.test.ts +557 -0
  948. package/dist/extensions/pi-zentui/test/omp-ui.test.ts +93 -0
  949. package/dist/extensions/pi-zentui/test/package-contents.mjs +1 -0
  950. package/dist/extensions/pi-zentui/test/pi-version-policy.test.ts +37 -0
  951. package/dist/extensions/pi-zentui/test/project-demand-integration.test.ts +542 -0
  952. package/dist/extensions/pi-zentui/test/project-discovery.test.ts +412 -0
  953. package/dist/extensions/pi-zentui/test/project-refresh.test.ts +44 -0
  954. package/dist/extensions/pi-zentui/test/project-state.test.ts +38 -1
  955. package/dist/extensions/pi-zentui/test/responsive-dependencies.test.ts +7 -7
  956. package/dist/extensions/pi-zentui/test/runtime.test.ts +127 -2
  957. package/dist/extensions/pi-zentui/test/selesai-v030-gate.json +939 -0
  958. package/dist/extensions/pi-zentui/test/settings-command.test.ts +1330 -82
  959. package/dist/extensions/pi-zentui/test/settings-keys.test.ts +41 -0
  960. package/dist/extensions/pi-zentui/test/settings-list-selection.test.ts +88 -0
  961. package/dist/extensions/pi-zentui/test/settings-previews.test.ts +4 -1
  962. package/dist/extensions/pi-zentui/test/state.test.ts +15 -1
  963. package/dist/extensions/pi-zentui/test/telemetry-lifecycle-integration.test.ts +214 -12
  964. package/dist/extensions/pi-zentui/test/telemetry-snapshot.test.ts +246 -0
  965. package/dist/extensions/pi-zentui/test/thinking-experimental-cache.test.ts +246 -0
  966. package/dist/extensions/pi-zentui/test/thinking-experimental-rows.test.ts +22 -0
  967. package/dist/extensions/pi-zentui/test/thinking-experimental-tui.mjs +113 -51
  968. package/dist/extensions/pi-zentui/test/thinking-experimental.test.ts +576 -76
  969. package/dist/extensions/pi-zentui/test/thinking-steps.test.ts +23 -0
  970. package/dist/extensions/pi-zentui/test/token-rate.test.ts +450 -0
  971. package/dist/extensions/pi-zentui/test/turn-summary-format.test.ts +207 -0
  972. package/dist/extensions/pi-zentui/test/turn-summary-lifecycle.integration.test.ts +72 -5
  973. package/dist/extensions/pi-zentui/test/turn-summary-rate.test.ts +158 -0
  974. package/dist/extensions/pi-zentui/test/usage-lifecycle-integration.test.ts +421 -0
  975. package/dist/extensions/pi-zentui/test/usage-snapshot.test.ts +154 -0
  976. package/dist/extensions/pi-zentui/test/user-message-cache.test.ts +239 -0
  977. package/dist/extensions/pi-zentui/test/user-message-native-reduced-capabilities.test.ts +61 -0
  978. package/dist/extensions/pi-zentui/test/user-message-native.test.ts +447 -0
  979. package/dist/extensions/pi-zentui/test/user-message-styles.test.ts +2 -2
  980. package/dist/extensions/pi-zentui/test/working-line-editor-placement.test.ts +317 -0
  981. package/dist/extensions/pi-zentui/test/working-line-generation-cache.test.ts +238 -0
  982. package/dist/extensions/pi-zentui/test/working-line-lifecycle.integration.test.ts +674 -179
  983. package/dist/extensions/pi-zentui/test/working-line-message-ownership.test.ts +239 -0
  984. package/dist/extensions/pi-zentui/test/working-line-metric-animation.test.ts +284 -0
  985. package/dist/extensions/pi-zentui/test/working-line-placement.test.ts +298 -0
  986. package/dist/extensions/pi-zentui/test/working-line.test.ts +386 -18
  987. package/dist/extensions/pi-zentui/test/wrapped-editor-consumers.integration.test.ts +579 -0
  988. package/dist/extensions/pi-zentui/test/wrapped-editor-usage.integration.test.ts +298 -0
  989. package/dist/extensions/pi-zentui/tsconfig.json +1 -1
  990. package/dist/extensions/pi-zentui/vitest.host.config.ts +33 -0
  991. package/dist/extensions/question/index.ts +1 -5
  992. package/dist/extensions/rtk.test.ts +28 -15
  993. package/dist/extensions/rtk.ts +22 -22
  994. package/dist/extensions/skills-index/index.test.ts +99 -0
  995. package/dist/extensions/skills-index/index.ts +105 -0
  996. package/dist/extensions/skills-index/package.json +9 -0
  997. package/dist/extensions/tokenin-onboarding.ts +48 -208
  998. package/dist/extensions/tool-search/index.d.ts +11 -0
  999. package/dist/extensions/tool-search/index.js +14 -0
  1000. package/dist/extensions/tool-search/tool.d.ts +72 -0
  1001. package/dist/extensions/tool-search/tool.js +188 -0
  1002. package/dist/index.d.ts +16 -9
  1003. package/dist/index.js +10 -5
  1004. package/dist/main.d.ts +4 -0
  1005. package/dist/main.js +106 -42
  1006. package/dist/migrations.js +4 -3
  1007. package/dist/modes/index.d.ts +1 -0
  1008. package/dist/modes/interactive/bug-report.js +4 -0
  1009. package/dist/modes/interactive/components/armin.d.ts +3 -0
  1010. package/dist/modes/interactive/components/armin.js +7 -5
  1011. package/dist/modes/interactive/components/assistant-message.js +1 -1
  1012. package/dist/modes/interactive/components/auth-url.d.ts +13 -0
  1013. package/dist/modes/interactive/components/auth-url.js +36 -0
  1014. package/dist/modes/interactive/components/bash-execution.d.ts +5 -1
  1015. package/dist/modes/interactive/components/bash-execution.js +17 -14
  1016. package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -1
  1017. package/dist/modes/interactive/components/branch-summary-message.js +5 -2
  1018. package/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -1
  1019. package/dist/modes/interactive/components/compaction-summary-message.js +5 -2
  1020. package/dist/modes/interactive/components/config-selector.js +13 -3
  1021. package/dist/modes/interactive/components/custom-editor.js +7 -0
  1022. package/dist/modes/interactive/components/custom-entry.d.ts +3 -1
  1023. package/dist/modes/interactive/components/custom-entry.js +8 -2
  1024. package/dist/modes/interactive/components/custom-message.js +1 -0
  1025. package/dist/modes/interactive/components/first-time-setup.d.ts +4 -4
  1026. package/dist/modes/interactive/components/first-time-setup.js +8 -2
  1027. package/dist/modes/interactive/components/footer.d.ts +7 -0
  1028. package/dist/modes/interactive/components/footer.js +44 -4
  1029. package/dist/modes/interactive/components/index.d.ts +0 -1
  1030. package/dist/modes/interactive/components/index.js +0 -1
  1031. package/dist/modes/interactive/components/login-dialog.d.ts +2 -0
  1032. package/dist/modes/interactive/components/login-dialog.js +11 -5
  1033. package/dist/modes/interactive/components/mermaid.d.ts +10 -0
  1034. package/dist/modes/interactive/components/mermaid.js +74 -0
  1035. package/dist/modes/interactive/components/model-selector.d.ts +14 -9
  1036. package/dist/modes/interactive/components/model-selector.js +79 -31
  1037. package/dist/modes/interactive/components/oauth-selector.d.ts +8 -2
  1038. package/dist/modes/interactive/components/oauth-selector.js +24 -21
  1039. package/dist/modes/interactive/components/pi-logo.d.ts +18 -0
  1040. package/dist/modes/interactive/components/pi-logo.js +36 -0
  1041. package/dist/modes/interactive/components/radius-login-selector.d.ts +14 -0
  1042. package/dist/modes/interactive/components/radius-login-selector.js +84 -0
  1043. package/dist/modes/interactive/components/scoped-models-selector.d.ts +4 -0
  1044. package/dist/modes/interactive/components/scoped-models-selector.js +26 -0
  1045. package/dist/modes/interactive/components/settings-selector.d.ts +8 -11
  1046. package/dist/modes/interactive/components/settings-selector.js +60 -102
  1047. package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -1
  1048. package/dist/modes/interactive/components/skill-invocation-message.js +5 -2
  1049. package/dist/modes/interactive/components/themed-text.d.ts +16 -0
  1050. package/dist/modes/interactive/components/themed-text.js +28 -0
  1051. package/dist/modes/interactive/components/tool-execution.d.ts +11 -18
  1052. package/dist/modes/interactive/components/tool-execution.js +34 -47
  1053. package/dist/modes/interactive/components/tree-selector.js +7 -0
  1054. package/dist/modes/interactive/components/user-message.d.ts +3 -1
  1055. package/dist/modes/interactive/components/user-message.js +14 -6
  1056. package/dist/modes/interactive/components/visual-truncate.d.ts +27 -3
  1057. package/dist/modes/interactive/components/visual-truncate.js +39 -6
  1058. package/dist/modes/interactive/external-editor.js +2 -1
  1059. package/dist/modes/interactive/interactive-mode.d.ts +41 -8
  1060. package/dist/modes/interactive/interactive-mode.js +854 -492
  1061. package/dist/modes/interactive/program-status-reporter.d.ts +33 -0
  1062. package/dist/modes/interactive/program-status-reporter.js +109 -0
  1063. package/dist/modes/interactive/theme/dark.json +59 -72
  1064. package/dist/modes/interactive/theme/light.json +57 -69
  1065. package/dist/modes/interactive/theme/system-theme.d.ts +54 -0
  1066. package/dist/modes/interactive/theme/system-theme.js +545 -0
  1067. package/dist/modes/interactive/theme/theme-controller.d.ts +46 -6
  1068. package/dist/modes/interactive/theme/theme-controller.js +127 -47
  1069. package/dist/modes/interactive/theme/theme-json.d.ts +1 -0
  1070. package/dist/modes/interactive/theme/theme-json.js +3 -1
  1071. package/dist/modes/interactive/theme/theme-schema.json +7 -2
  1072. package/dist/modes/interactive/theme/theme.d.ts +66 -39
  1073. package/dist/modes/interactive/theme/theme.js +243 -320
  1074. package/dist/modes/interactive/tui-renderer.d.ts +2 -1
  1075. package/dist/modes/interactive/tui-renderer.js +1 -0
  1076. package/dist/modes/json-event.d.ts +33 -0
  1077. package/dist/modes/json-event.js +28 -0
  1078. package/dist/modes/print-mode.js +12 -2
  1079. package/dist/modes/rpc/rpc-client.d.ts +11 -19
  1080. package/dist/modes/rpc/rpc-client.js +52 -35
  1081. package/dist/modes/rpc/rpc-mode.js +11 -26
  1082. package/dist/modes/rpc/rpc-types.d.ts +12 -23
  1083. package/dist/package-manager-cli.js +16 -5
  1084. package/dist/rpc-entry.js +1 -0
  1085. package/dist/skills/pi-subagents/SKILL.md +109 -35
  1086. package/dist/skills/pi-subagents/references/constraints-and-recipes.md +38 -238
  1087. package/dist/skills/pi-subagents/references/execution-controls.md +181 -83
  1088. package/dist/skills/pi-subagents/references/management-authoring-rpc.md +9 -9
  1089. package/dist/skills/pi-subagents/references/multi-lane-orchestration.md +24 -2
  1090. package/dist/skills/pi-subagents/references/prompting-and-roles.md +121 -91
  1091. package/dist/skills/pi-subagents/references/review-and-validation.md +73 -0
  1092. package/dist/utils/ansi.d.ts +8 -0
  1093. package/dist/utils/ansi.js +30 -11
  1094. package/dist/utils/clipboard-image.js +14 -17
  1095. package/dist/utils/clipboard.d.ts +2 -0
  1096. package/dist/utils/clipboard.js +17 -11
  1097. package/dist/utils/frontmatter.js +2 -1
  1098. package/dist/utils/image-convert.d.ts +12 -0
  1099. package/dist/utils/image-convert.js +45 -6
  1100. package/dist/utils/image-resize-core.d.ts +12 -0
  1101. package/dist/utils/image-resize-core.js +5 -0
  1102. package/dist/utils/image-resize-worker.js +3 -2
  1103. package/dist/utils/image-resize.js +9 -10
  1104. package/dist/utils/mime.js +1 -1
  1105. package/dist/utils/output-files.d.ts +14 -0
  1106. package/dist/utils/output-files.js +29 -0
  1107. package/dist/utils/paths.d.ts +6 -3
  1108. package/dist/utils/paths.js +28 -5
  1109. package/dist/utils/shell.d.ts +1 -3
  1110. package/dist/utils/shell.js +3 -30
  1111. package/dist/utils/syntax-highlight.d.ts +1 -0
  1112. package/dist/utils/syntax-highlight.js +68 -2
  1113. package/dist/utils/tool-result-images.d.ts +20 -0
  1114. package/dist/utils/tool-result-images.js +47 -0
  1115. package/dist/utils/tools-manager.d.ts +5 -0
  1116. package/dist/utils/tools-manager.js +6 -6
  1117. package/dist/utils/version-check.d.ts +4 -0
  1118. package/dist/utils/version-check.js +20 -2
  1119. package/docs/cli-integration.md +104 -0
  1120. package/docs/cli.md +333 -0
  1121. package/docs/codemode.md +230 -0
  1122. package/docs/configuration.md +47 -0
  1123. package/docs/environment-variables.md +5 -0
  1124. package/docs/extensions.md +107 -30
  1125. package/docs/json.md +8 -4
  1126. package/docs/keybindings.md +10 -10
  1127. package/docs/mcp.md +262 -0
  1128. package/docs/models.md +104 -3
  1129. package/docs/providers.md +20 -2
  1130. package/docs/rpc.md +13 -12
  1131. package/docs/sdk.md +41 -33
  1132. package/docs/security.md +21 -20
  1133. package/docs/settings.md +18 -46
  1134. package/docs/terminal-setup.md +14 -0
  1135. package/docs/virtual-models.md +114 -0
  1136. package/examples/extensions/jev-router.ts +113 -0
  1137. package/examples/extensions/tokenin-usage-widget.ts +124 -0
  1138. package/examples/rpc-client.ts +35 -0
  1139. package/examples/sdk/14-codemode-mcp.ts +67 -0
  1140. package/package.json +15 -8
  1141. package/dist/core/agent-session-auto-handoff.test.js +0 -195
  1142. package/dist/core/built-in-extensions.d.ts +0 -2
  1143. package/dist/core/built-in-extensions.js +0 -2
  1144. package/dist/core/llama/provider.js +0 -143
  1145. package/dist/core/settings-manager-auto-handoff.test.d.ts +0 -1
  1146. package/dist/core/settings-manager-auto-handoff.test.js +0 -53
  1147. package/dist/extensions/capability-gateway/catalog.ts +0 -177
  1148. package/dist/extensions/capability-gateway/index.test.ts +0 -226
  1149. package/dist/extensions/capability-gateway/index.ts +0 -669
  1150. package/dist/extensions/capability-gateway/integration.test.ts +0 -803
  1151. package/dist/extensions/capability-gateway/package.json +0 -16
  1152. package/dist/extensions/capability-gateway/routing.test.ts +0 -574
  1153. package/dist/extensions/capability-gateway/routing.ts +0 -403
  1154. package/dist/extensions/pi-subagents/runner-server-preload.mjs +0 -13
  1155. package/dist/extensions/pi-subagents/src/runs/shared/completion-evidence.ts +0 -89
  1156. package/dist/extensions/pi-subagents/src/runs/shared/completion-guard.ts +0 -259
  1157. package/dist/extensions/pi-subagents/src/runs/shared/llm-intent-arbiter.ts +0 -312
  1158. package/dist/extensions/pi-subagents/src/runs/shared/model-exclusions.ts +0 -374
  1159. package/dist/extensions/pi-subagents/src/runs/shared/readonly-model-continuation.ts +0 -69
  1160. package/dist/extensions/pi-subagents/src/runs/shared/readonly-session-evidence.ts +0 -307
  1161. package/dist/extensions/pi-subagents/src/runs/shared/task-intent.ts +0 -211
  1162. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +0 -3
  1163. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +0 -2
  1164. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +0 -17
  1165. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +0 -57
  1166. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +0 -16
  1167. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +0 -15
  1168. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +0 -18
  1169. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +0 -9
  1170. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +0 -10
  1171. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +0 -10
  1172. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +0 -20
  1173. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +0 -3
  1174. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +0 -96
  1175. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +0 -119
  1176. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +0 -85
  1177. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +0 -620
  1178. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +0 -5
  1179. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +0 -56
  1180. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +0 -32
  1181. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +0 -49
  1182. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +0 -93
  1183. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +0 -128
  1184. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +0 -7
  1185. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +0 -38
  1186. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +0 -3
  1187. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +0 -15
  1188. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +0 -9
  1189. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +0 -29
  1190. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +0 -2
  1191. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +0 -22
  1192. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +0 -37
  1193. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +0 -34
  1194. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +0 -12
  1195. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +0 -23
  1196. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +0 -171
  1197. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +0 -1261
  1198. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +0 -20
  1199. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +0 -54
  1200. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +0 -22
  1201. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +0 -13
  1202. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +0 -358
  1203. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +0 -77
  1204. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +0 -512
  1205. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +0 -43
  1206. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +0 -121
  1207. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +0 -82
  1208. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +0 -17
  1209. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +0 -7
  1210. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +0 -210
  1211. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +0 -15
  1212. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +0 -54
  1213. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +0 -4
  1214. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +0 -55
  1215. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +0 -2
  1216. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +0 -5
  1217. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +0 -30
  1218. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +0 -206
  1219. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +0 -15
  1220. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +0 -106
  1221. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +0 -19
  1222. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +0 -356
  1223. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +0 -297
  1224. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +0 -60
  1225. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +0 -15
  1226. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +0 -18
  1227. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +0 -28
  1228. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +0 -3
  1229. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +0 -10
  1230. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +0 -68
  1231. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +0 -106
  1232. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +0 -51
  1233. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +0 -6
  1234. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +0 -35
  1235. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +0 -37
  1236. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +0 -40
  1237. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +0 -37
  1238. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +0 -52
  1239. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +0 -10
  1240. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +0 -35
  1241. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +0 -24
  1242. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  1243. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +0 -70
  1244. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +0 -26
  1245. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +0 -36
  1246. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +0 -19
  1247. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +0 -61
  1248. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +0 -23
  1249. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +0 -3
  1250. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +0 -10
  1251. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +0 -42
  1252. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +0 -35
  1253. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +0 -12
  1254. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +0 -33
  1255. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +0 -9
  1256. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +0 -34
  1257. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +0 -22
  1258. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  1259. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  1260. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  1261. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  1262. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +0 -102
  1263. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  1264. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  1265. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +0 -19
  1266. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +0 -20
  1267. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  1268. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +0 -12
  1269. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  1270. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  1271. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +0 -22
  1272. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +0 -23
  1273. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +0 -26
  1274. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +0 -25
  1275. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +0 -32
  1276. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +0 -34
  1277. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +0 -13
  1278. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +0 -52
  1279. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +0 -54
  1280. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +0 -33
  1281. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  1282. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  1283. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +0 -95
  1284. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +0 -77
  1285. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  1286. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  1287. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +0 -28
  1288. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  1289. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  1290. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  1291. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +0 -94
  1292. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +0 -23
  1293. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  1294. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +0 -14
  1295. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  1296. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +0 -394
  1297. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +0 -12
  1298. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +0 -29
  1299. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +0 -120
  1300. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +0 -28
  1301. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +0 -17
  1302. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +0 -246
  1303. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +0 -20
  1304. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +0 -457
  1305. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +0 -8
  1306. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +0 -3
  1307. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +0 -2
  1308. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +0 -22
  1309. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +0 -18
  1310. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +0 -11
  1311. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +0 -11
  1312. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +0 -4
  1313. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +0 -4
  1314. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +0 -5
  1315. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +0 -8
  1316. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +0 -5
  1317. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +0 -26
  1318. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +0 -7
  1319. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +0 -10
  1320. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +0 -18
  1321. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +0 -30
  1322. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +0 -2
  1323. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +0 -16
  1324. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +0 -3
  1325. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +0 -3
  1326. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +0 -9
  1327. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +0 -31
  1328. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +0 -21
  1329. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +0 -2
  1330. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +0 -31
  1331. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +0 -5
  1332. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +0 -12
  1333. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +0 -3
  1334. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +0 -15
  1335. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +0 -3
  1336. package/dist/extensions/pi-subagents/test/smoke/pi085-child.ts +0 -31
  1337. package/dist/extensions/pi-subagents/test/smoke/pi085-clean-install.mjs +0 -74
  1338. package/dist/extensions/pi-subagents/test/unit/completion-evidence.test.ts +0 -150
  1339. package/dist/extensions/pi-subagents/test/unit/completion-guard.test.ts +0 -766
  1340. package/dist/extensions/pi-subagents/test/unit/llm-intent-arbiter.test.ts +0 -327
  1341. package/dist/extensions/pi-subagents/test/unit/model-exclusions.test.ts +0 -309
  1342. package/dist/extensions/pi-subagents/test/unit/model-fallback.test.ts +0 -1093
  1343. package/dist/extensions/pi-subagents/test/unit/readonly-model-continuation.test.ts +0 -94
  1344. package/dist/extensions/pi-subagents/test/unit/readonly-session-evidence.test.ts +0 -1329
  1345. package/dist/extensions/pi-subagents/test/unit/task-intent.test.ts +0 -153
  1346. package/dist/extensions/pi-zentui/extensions/zentui/accent-rail-layout-patch.ts +0 -457
  1347. package/dist/extensions/pi-zentui/test/accent-rail-layout-patch.test.ts +0 -669
  1348. package/dist/extensions/pi-zentui/test/thinking-experimental-docs.test.ts +0 -51
  1349. package/dist/modes/interactive/components/daxnuts.d.ts +0 -22
  1350. package/dist/modes/interactive/components/daxnuts.js +0 -139
  1351. /package/dist/core/{agent-session-auto-handoff.test.d.ts → agent-session-custom-tools.test.d.ts} +0 -0
  1352. /package/dist/{core → extensions}/llama/huggingface.d.ts +0 -0
  1353. /package/dist/{core → extensions}/llama/huggingface.js +0 -0
  1354. /package/dist/{core → extensions}/llama/index.d.ts +0 -0
  1355. /package/dist/{core → extensions}/llama/ui.d.ts +0 -0
  1356. /package/dist/{core → extensions}/llama/ui.js +0 -0
@@ -5,7 +5,7 @@
5
5
  * - Sync (default): Streams output, renders markdown, tracks usage
6
6
  * - Async: Background execution, emits events when done
7
7
  *
8
- * Public execution mode: workflow (workflowScript)
8
+ * Public execution mode: workflow (workflow: true reply block, script path, or named resource)
9
9
  * Toggle: async parameter (default: true; set asyncByDefault:false in config.json to opt out)
10
10
  *
11
11
  * Config file: ~/.selesai/agent/extensions/subagent/config.json
@@ -19,27 +19,30 @@ import * as path from "node:path";
19
19
  import type { AgentToolResult } from "@earendil-works/pi-agent-core";
20
20
  import { keyText, type ExtensionAPI, type ExtensionContext, type ToolDefinition } from "@selesai/code";
21
21
  import { Box, Container, Spacer, Text, truncateToWidth, visibleWidth, wrapTextWithAnsi, type Component } from "@earendil-works/pi-tui";
22
- import { clearAgentDiscoveryCache, discoverAgentSnapshot, discoverAgents, type AgentConfig, type AgentScope } from "../agents/agents.ts";
22
+ import { clearAgentDiscoveryCache, discoverAgentSnapshot, discoverAgents, discoverAgentsAll, type AgentConfig, type AgentScope } from "../agents/agents.ts";
23
23
  import { applyBuiltinAgentAugmentations, requestBuiltinAgentAugmentations } from "../agents/builtin-agent-augmentations.ts";
24
- import { appendAdvertisedAgentPrompt, buildAdvertisedAgentPrompt } from "../agents/advertised-agent-prompt.ts";
24
+ import { resolveGlobalNpmRoot } from "../agents/global-npm-root.ts";
25
+ import { buildAdvertisedAgentCatalog, buildAdvertisedAgentPrompt } from "../agents/advertised-agent-prompt.ts";
25
26
  import { clearRuntimeAgentsForPi, listRuntimeAgentConfigs, mergeRuntimeAgents } from "../agents/runtime-agent-registry.ts";
26
27
  import { registerRuntimeAgentEventListener } from "../agents/runtime-agent-events.ts";
27
28
  import { ensureAccessibleDir } from "../shared/accessible-dir.ts";
28
29
  import { cleanupAllArtifactDirs, cleanupOldArtifacts, getArtifactsDir } from "../shared/artifacts.ts";
29
30
  import { resolveCurrentSessionId } from "../shared/session-identity.ts";
30
31
  import { getAgentDir } from "../shared/utils.ts";
31
- import { isStaleExtensionContextError, withCachedUiContext } from "../shared/extension-context.ts";
32
+ import { isStaleExtensionContextError, MODEL_ONLY_TOOL, withCachedUiContext } from "../shared/extension-context.ts";
32
33
  import { currentCompletionOwnerId } from "../shared/completion-owner.ts";
33
34
  import { ensureOwnerRecord } from "../shared/owner-record.ts";
34
35
  import { cleanupOldChainDirs } from "../shared/settings.ts";
35
- import { clearLegacyResultAnimationTimer, renderSubagentResult, renderSubagentSummary } from "../tui/render.ts";
36
- import { openSubagentFleet } from "../tui/fleet.ts";
36
+ import { clearLegacyResultAnimationTimer, renderSubagentResult, renderSubagentSummary, setInlineWorkflowCoverage } from "../tui/render.ts";
37
+ import { getInspectorPlugins, registerInspectorEventListener } from "../inspectors/plugins.ts";
37
38
  import { SubagentFleetStatus, resolveFleetViewPlacement } from "../tui/fleet-status.ts";
39
+ import { readMainThinkingLevel, setMainThinkingLevelSource } from "../tui/running-tone.ts";
38
40
  import { createSubagentParamsSchema } from "./schemas.ts";
39
- import { createSubagentExecutor, type SubagentParamsLike } from "../runs/foreground/subagent-executor.ts";
41
+ import { resolveDisabledFeatureSurface } from "../shared/disabled-features.ts";
42
+ import type { SubagentParamsLike } from "../runs/foreground/subagent-executor.ts";
40
43
  import { createAsyncJobTracker } from "../runs/background/async-job-tracker.ts";
41
44
  import { getActiveAsyncCapacitySnapshot, resolveAbandonedSlotReleaseAfterMs, resolveMaxActiveAsyncRunsPerSession } from "../runs/background/active-async-capacity.ts";
42
- import { cleanupResultIndexes, missionObserverResultCandidateFiles } from "../runs/background/result-files.ts";
45
+ import { cleanupResultIndexes, missionObserverResultCandidateFiles, resultFilePath } from "../runs/background/result-files.ts";
43
46
  import { ASYNC_RETENTION_DELAY_MS, cleanupAsyncRetention } from "../runs/background/async-retention.ts";
44
47
  import { createResultWatcher } from "../runs/background/result-watcher.ts";
45
48
  import { createResultDeliveryOwnership } from "../runs/background/result-delivery-ownership.ts";
@@ -66,18 +69,22 @@ import { findUndeliveredResults, registerReleaseReadiness } from "./release-read
66
69
  import { clearSlashSnapshots, getSlashRenderableSnapshot, resolveSlashMessageDetails, restoreSlashFinalSnapshots, type SlashMessageDetails } from "../slash/slash-live-state.ts";
67
70
  import { resolveWaitToolConfig } from "../runs/background/subagent-wait.ts";
68
71
  import { registerWaitTool } from "../runs/background/wait-tool.ts";
72
+ import { registerSubagentToolActivation } from "./tool-activation.ts";
69
73
  import { createWaitSubscriptionManager } from "../runs/background/wait-subscriptions.ts";
70
74
  import { drainOutstandingWork } from "../runs/background/auto-drain.ts";
71
75
  import registerSubagentNotify, { parseSubagentNotifyContent, type SubagentNotifyDetails } from "../runs/background/notify.ts";
76
+ import { createParentWake } from "../shared/parent-wake.ts";
72
77
  import { formatSteeringNotice, handleSubagentSteeringNotice, SUBAGENT_STEERING_MESSAGE_TYPE, type SubagentSteeringMessageDetails } from "./steering-notices.ts";
73
78
  import { SUBAGENT_CHILD_ENV, SUBAGENT_PARENT_SESSION_ENV } from "../runs/shared/child-runtime-config.ts";
74
79
  import { disposeChildSessions } from "../runs/shared/child-session.ts";
75
80
  import { resolveCurrentSubagentCapabilityCeiling } from "../runs/shared/capability-ceiling.ts";
76
81
  import { formatDuration, shortenPath } from "../shared/formatters.ts";
77
- import { applyModelExclusionsConfig, loadConfig, resolveAsyncByDefault, resolveScheduledStoreRoot } from "./config.ts";
82
+ import { loadConfig, resolveAsyncByDefault, resolveScheduledStoreRoot } from "./config.ts";
78
83
  import { buildSubagentToolDescription, buildSubagentToolPromptMetadata } from "./tool-description.ts";
79
84
  import { formatWorkflowPreflightSummary, normalizeWorkflowPreflight } from "../workflows/workflow-preflight.ts";
85
+ import { runtimeReplacedAbortReason } from "../workflows/workflow-reuse.ts";
80
86
  import { finalizeToolResult } from "./tool-result.ts";
87
+ import { removedModelWorkflowFieldError } from "./public-execution.ts";
81
88
  import { collectGoalContinuationNotices } from "../missions/goal-driver.ts";
82
89
  import { restoreForegroundRunHistory } from "../runs/foreground/foreground-history.ts";
83
90
  import { resolveMissionStoreLocation } from "../missions/store.ts";
@@ -85,6 +92,7 @@ import { listRetainedChildren } from "../runs/background/retained-children.ts";
85
92
  import {
86
93
  type Details,
87
94
  type MainWindowRendererConfig,
95
+ type AsyncJobState,
88
96
  type SubagentState,
89
97
  DIRS,
90
98
  DEFAULT_ARTIFACT_CONFIG,
@@ -104,12 +112,19 @@ import {
104
112
  SUBAGENT_CONTROL_MESSAGE_TYPE,
105
113
  type SubagentControlMessageDetails,
106
114
  } from "./control-notices.ts";
115
+ // Selesai: upstream upgrade notice disabled (Selesai ships its own update notice).
107
116
 
108
117
  export { loadConfig, resolveAsyncByDefault } from "./config.ts";
109
118
 
110
119
  const SLOW_RELOAD_PHASE_MS = 250;
120
+ // Long enough for Pi to finish starting; loading the executor blocks the event loop for tens of ms.
121
+ const MODULE_PRELOAD_DELAY_MS = 1_000;
111
122
  const RUNTIME_REGISTRY_STORE_KEY = "__piSubagentRuntimeRegistry";
112
123
 
124
+ type SubagentExecutorModule = typeof import("../runs/foreground/subagent-executor.ts");
125
+ type SubagentExecutor = ReturnType<SubagentExecutorModule["createSubagentExecutor"]>;
126
+ type SubagentExecutorDeps = Parameters<SubagentExecutorModule["createSubagentExecutor"]>[0];
127
+
113
128
  interface SubagentRuntimeEntry {
114
129
  cleanup(): void;
115
130
  sessionManager: object | null;
@@ -145,128 +160,6 @@ function logSlowPhase(label: string, startedAt: number): void {
145
160
  if (elapsed >= SLOW_RELOAD_PHASE_MS) console.error(`Subagent reload phase '${label}' took ${elapsed}ms.`);
146
161
  }
147
162
 
148
- function workflowLaneKeys(script: string): string[] {
149
- const keys: string[] = [];
150
- const seen = new Set<string>();
151
- const add = (key: string): void => {
152
- if (!seen.has(key)) {
153
- seen.add(key);
154
- keys.push(key);
155
- }
156
- };
157
- const isIdentifier = (char: string | undefined): boolean => char !== undefined && /[\w$]/.test(char);
158
- const skipTrivia = (start: number): number => {
159
- let index = start;
160
- while (index < script.length) {
161
- if (/\s/.test(script[index]!)) index += 1;
162
- else if (script.startsWith("//", index)) {
163
- const end = script.indexOf("\n", index + 2);
164
- index = end === -1 ? script.length : end + 1;
165
- } else if (script.startsWith("/*", index)) {
166
- const end = script.indexOf("*/", index + 2);
167
- index = end === -1 ? script.length : end + 2;
168
- } else break;
169
- }
170
- return index;
171
- };
172
- const readLiteral = (start: number): { key?: string; end: number } | undefined => {
173
- const quote = script[start];
174
- if (quote !== "'" && quote !== '"' && quote !== "`") return undefined;
175
- let index = start + 1;
176
- let dynamicTemplate = false;
177
- while (index < script.length) {
178
- if (script[index] === "\\") {
179
- index += 2;
180
- continue;
181
- }
182
- if (quote === "`" && script.startsWith("${", index)) dynamicTemplate = true;
183
- if (script[index] === quote) return { key: dynamicTemplate ? undefined : script.slice(start + 1, index), end: index + 1 };
184
- if (quote !== "`" && /[\r\n]/.test(script[index]!)) return { end: index + 1 };
185
- index += 1;
186
- }
187
- return { end: script.length };
188
- };
189
-
190
- const collectRunsAllKeys = (start: number): number => {
191
- let index = skipTrivia(start);
192
- if (script[index] !== "(") return start;
193
- index = skipTrivia(index + 1);
194
- if (script[index] !== "[") return start;
195
- let arrayDepth = 1;
196
- let objectDepth = 0;
197
- let directChildObject = false;
198
- let expectingElement = true;
199
- for (index += 1; index < script.length; index += 1) {
200
- index = skipTrivia(index);
201
- const literal = readLiteral(index);
202
- if (literal) {
203
- index = literal.end - 1;
204
- continue;
205
- }
206
- if (script[index] === "[") {
207
- arrayDepth += 1;
208
- expectingElement = false;
209
- continue;
210
- }
211
- if (script[index] === "]") {
212
- arrayDepth -= 1;
213
- if (arrayDepth === 0) return index + 1;
214
- continue;
215
- }
216
- if (script[index] === "{") {
217
- objectDepth += 1;
218
- if (objectDepth === 1) directChildObject = arrayDepth === 1 && expectingElement;
219
- expectingElement = false;
220
- continue;
221
- }
222
- if (script[index] === "}") {
223
- objectDepth -= 1;
224
- if (objectDepth === 0) directChildObject = false;
225
- continue;
226
- }
227
- if (script[index] === "," && arrayDepth === 1 && objectDepth === 0) {
228
- expectingElement = true;
229
- continue;
230
- }
231
- if (directChildObject && objectDepth === 1 && !isIdentifier(script[index - 1]) && script.startsWith("key", index) && !isIdentifier(script[index + 3])) {
232
- const colon = skipTrivia(index + 3);
233
- const key = script[colon] === ":" ? readLiteral(skipTrivia(colon + 1)) : undefined;
234
- if (key) {
235
- const next = skipTrivia(key.end);
236
- if (key.key !== undefined && (script[next] === "," || script[next] === "}")) add(key.key);
237
- index = key.end - 1;
238
- }
239
- }
240
- }
241
- return index;
242
- };
243
-
244
- for (let index = 0; index < script.length;) {
245
- index = skipTrivia(index);
246
- const literal = readLiteral(index);
247
- if (literal) {
248
- index = literal.end;
249
- continue;
250
- }
251
- if (!isIdentifier(script[index - 1]) && script.startsWith("runs.run", index) && !isIdentifier(script[index + 8])) {
252
- const open = skipTrivia(index + 8);
253
- const key = script[open] === "(" ? readLiteral(skipTrivia(open + 1)) : undefined;
254
- if (key) {
255
- const next = skipTrivia(key.end);
256
- if (key.key !== undefined && (script[next] === "," || script[next] === ")")) add(key.key);
257
- index = key.end;
258
- continue;
259
- }
260
- }
261
- if (!isIdentifier(script[index - 1]) && script.startsWith("runs.all", index) && !isIdentifier(script[index + 8])) {
262
- index = collectRunsAllKeys(index + 8);
263
- continue;
264
- }
265
- index += 1;
266
- }
267
- return keys;
268
- }
269
-
270
163
  function formatWorkflowPreflightCall(input: unknown): string {
271
164
  if (input === undefined) return "";
272
165
  try {
@@ -276,18 +169,6 @@ function formatWorkflowPreflightCall(input: unknown): string {
276
169
  }
277
170
  }
278
171
 
279
- function formatWorkflowManifest(script: string, async: unknown, clarify: unknown, preflightInput?: unknown): string {
280
- if (clarify === true) return "workflow script · rejected: clarify UI unsupported";
281
- const keys = workflowLaneKeys(script);
282
- // The workflow executor starts background work unless callers pass async:false.
283
- const mode = async === false ? "foreground" : "background";
284
- const preflight = formatWorkflowPreflightCall(preflightInput);
285
- if (keys.length === 0) return `workflow script · ${mode}${preflight ? ` · ${preflight}` : ""}`;
286
- const visibleKeys = keys.slice(0, 4).join(", ");
287
- const remainder = keys.length > 4 ? `, +${keys.length - 4}` : "";
288
- return `workflow · ${mode} · ${keys.length} lane${keys.length === 1 ? "" : "s"}: ${visibleKeys}${remainder}${preflight ? ` · ${preflight}` : ""}`;
289
- }
290
-
291
172
  /**
292
173
  * Derive subagent session base directory from parent session file.
293
174
  * If parent session is ~/.selesai/agent/sessions/abc123.jsonl,
@@ -340,14 +221,18 @@ function createSlashResultComponent(
340
221
  theme: ExtensionContext["ui"]["theme"],
341
222
  rendererConfig?: MainWindowRendererConfig,
342
223
  foregroundDetachShortcut?: string,
224
+ getCurrentTheme: () => ExtensionContext["ui"]["theme"] = () => theme,
343
225
  ): Container {
344
226
  const container = new Container();
345
227
  let lastVersion = -1;
228
+ let lastTheme: ExtensionContext["ui"]["theme"] | undefined;
346
229
  container.render = (width: number): string[] => {
347
230
  const snapshot = getSlashRenderableSnapshot(details);
348
- if (snapshot.version !== lastVersion || isSlashResultRunning(snapshot.result)) {
231
+ const currentTheme = getCurrentTheme();
232
+ if (snapshot.version !== lastVersion || currentTheme !== lastTheme || isSlashResultRunning(snapshot.result)) {
349
233
  lastVersion = snapshot.version;
350
- rebuildSlashResultContainer(container, snapshot.result, options, theme, rendererConfig, foregroundDetachShortcut);
234
+ lastTheme = currentTheme;
235
+ rebuildSlashResultContainer(container, snapshot.result, options, currentTheme, rendererConfig, foregroundDetachShortcut);
351
236
  }
352
237
  return Container.prototype.render.call(container, width);
353
238
  };
@@ -403,18 +288,31 @@ export function projectActiveHerdrRuns(state: SubagentState): HerdrStatusRun[] {
403
288
  existing.push(...children);
404
289
  foregroundChildrenByWorkflow.set(control.parentWorkflowRunId, existing);
405
290
  }
291
+
292
+ // Keep each async child under its own ID: completion and attention events
293
+ // address that ID directly. The workflow row accounts only for foreground
294
+ // children; its own coordinator and step summaries are not leaf agents.
406
295
  return [...state.asyncJobs.values()]
407
296
  .filter((job) => active(job.status))
408
297
  .map((job) => {
409
- const children = job.mode === "workflow" ? foregroundChildrenByWorkflow.get(job.asyncId) : undefined;
410
298
  const currentStep = job.steps?.find((step) => step.status === "running")
411
299
  ?? (job.currentStep !== undefined ? job.steps?.[job.currentStep] : undefined)
412
300
  ?? job.steps?.find((step) => step.status === "pending");
301
+ if (job.mode === "workflow") {
302
+ const children = foregroundChildrenByWorkflow.get(job.asyncId) ?? [];
303
+ return {
304
+ id: job.asyncId,
305
+ coordinator: true as const,
306
+ agents: children.map((child) => child.agent),
307
+ ...(currentStep?.label ? { taskLabel: currentStep.label } : {}),
308
+ needsAttention: job.activityState === "needs_attention" || children.some((child) => child.needsAttention),
309
+ };
310
+ }
413
311
  return {
414
312
  id: job.asyncId,
415
- agents: children?.length ? children.map((child) => child.agent) : job.agents,
313
+ agents: job.agents,
416
314
  ...(currentStep?.label ? { taskLabel: currentStep.label } : {}),
417
- needsAttention: job.activityState === "needs_attention" || children?.some((child) => child.needsAttention),
315
+ needsAttention: job.activityState === "needs_attention",
418
316
  };
419
317
  });
420
318
  }
@@ -425,6 +323,7 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
425
323
  }
426
324
  const runtimeRegistry = getRuntimeRegistry();
427
325
  const builtinAgentAugmentations = requestBuiltinAgentAugmentations(pi);
326
+ setMainThinkingLevelSource(() => readMainThinkingLevel(() => pi.getThinkingLevel()));
428
327
 
429
328
  DIRS.results = ensureAccessibleDir(DIRS.results);
430
329
  DIRS.async = ensureAccessibleDir(DIRS.async);
@@ -438,25 +337,17 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
438
337
  cleanupOldChainDirs();
439
338
 
440
339
  const config = loadConfig();
441
- // Apply the process-wide exclusion TTL before any child launch can record a model failure.
442
- applyModelExclusionsConfig(config);
443
340
  const waitToolConfig = resolveWaitToolConfig(config.waitTool);
444
341
  const asyncByDefault = resolveAsyncByDefault(config);
445
342
  const fleetViewEnabled = config.fleetView !== false;
446
343
  const fleetViewPlacement = resolveFleetViewPlacement(config.fleetViewPlacement);
447
344
  const asyncWidgetEnabled = config.asyncWidget !== false;
345
+ const asyncWidgetCollapsed = config.asyncWidgetCollapsed === true;
448
346
  const summaryInlineToolDisplay = config.inlineToolDisplay === "summary";
449
347
  const tempArtifactsDir = getArtifactsDir(null);
450
348
  const artifactCleanupDays = config.artifactConfig?.cleanupDays ?? DEFAULT_ARTIFACT_CONFIG.cleanupDays;
451
349
  cleanupAllArtifactDirs(artifactCleanupDays);
452
- const resultIndexCleanupTimer = setTimeout(() => {
453
- try {
454
- cleanupResultIndexes(DIRS.results);
455
- } catch (error) {
456
- console.error("Failed to clean stale subagent result indexes:", error);
457
- }
458
- }, 30_000);
459
- resultIndexCleanupTimer.unref?.();
350
+ let resultIndexCleanupTimer: ReturnType<typeof setTimeout> | undefined;
460
351
 
461
352
  const state: SubagentState = {
462
353
  baseCwd: "",
@@ -502,20 +393,35 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
502
393
  }, run);
503
394
  };
504
395
 
396
+ // Every notice that wakes the parent goes through parentWake; the watchdog wakes only inside a run.
397
+ const parentWake = createParentWake(pi);
398
+ const wakingPi = { events: pi.events, sendMessage: parentWake.sendMessage };
505
399
  const supervisorChannel = createNativeSupervisorChannel(pi, state, {
506
- getCurrentOwnerStates: () => executor.getCurrentSupervisorOwnerStates(),
400
+ // Owner states are created only by scheduled execution, which loads the executor first.
401
+ getCurrentOwnerStates: () => executor?.getCurrentSupervisorOwnerStates() ?? [],
402
+ parentWake,
507
403
  });
508
- const waitSubscriptionManager = createWaitSubscriptionManager(pi, state);
404
+ const waitSubscriptionManager = createWaitSubscriptionManager(wakingPi, state);
509
405
  const mainWatchdog = registerMainWatchdog(pi);
510
406
  const resultDeliveryOwnership = createResultDeliveryOwnership(state);
511
- const completionNotifier = registerSubagentNotify(pi, state, { batchConfig: config.completionBatch, ownership: resultDeliveryOwnership });
407
+ const completionNotifier = registerSubagentNotify(wakingPi, state, { batchConfig: config.completionBatch, ownership: resultDeliveryOwnership });
408
+ // Ended async runs whose result has not reached the notifier yet.
409
+ const owedResultRunIds = new Set<string>();
410
+ // Tracked runs whose result was already delivered, so a later terminal
411
+ // transition (the tracker can see the end after the result) holds nothing.
412
+ const deliveredRunIds = new Set<string>();
413
+ const holdOwedResult = (job: AsyncJobState) => {
414
+ if (!job.parentWorkflowRunId && !deliveredRunIds.has(job.asyncId) && job.sessionId
415
+ && resultDeliveryOwnership.owns(job.sessionId, job.completionOwnerId)) owedResultRunIds.add(job.asyncId);
416
+ };
512
417
  let retainedNestedRouteTracker: ReturnType<typeof createRetainedNestedRouteTracker> | undefined;
513
418
  const fleetStatus = fleetViewEnabled
514
419
  ? new SubagentFleetStatus(state, async (itemKey) => {
515
420
  const ctx = withLastUiContext((current) => current);
516
421
  if (!ctx) return;
517
422
  try {
518
- await openSubagentFleet(ctx, state, { initialKey: itemKey, asyncDirRoot: DIRS.async, resultsDir: DIRS.results, fleetKeybindings: config.fleetKeybindings });
423
+ const { openSubagentFleet } = await import("../tui/fleet.ts");
424
+ await openSubagentFleet(ctx, state, { initialKey: itemKey, asyncDirRoot: DIRS.async, resultsDir: DIRS.results, fleetKeybindings: config.fleetKeybindings, inspectorPlugins: () => getInspectorPlugins(pi) });
519
425
  } catch (error) {
520
426
  if (isStaleExtensionContextError(error)) {
521
427
  if (state.lastUiContext === ctx) state.lastUiContext = null;
@@ -523,31 +429,36 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
523
429
  }
524
430
  throw error;
525
431
  }
526
- }, { placement: fleetViewPlacement })
432
+ }, { placement: fleetViewPlacement, onWorkflowCoverageChange: setInlineWorkflowCoverage })
527
433
  : undefined;
528
- let executorScheduled: ((id: string, params: SubagentParamsLike, signal: AbortSignal, ctx: ExtensionContext) => Promise<AgentToolResult<Details>>) | undefined;
529
434
  let goalTurnId = 0;
530
- let parentSessionEnvValue: string | null = null;
531
435
  let releaseHostSessionLiveness = () => {};
532
436
  const scheduledStoreRoot = config.scheduledRuns?.storeRoot === undefined ? undefined : resolveScheduledStoreRoot(config.scheduledRuns.storeRoot);
533
437
  const scheduledRunManager = createScheduledRunManager({
534
438
  config,
535
439
  storeRoot: scheduledStoreRoot,
536
- launch: (params, ctx, signal) => {
537
- if (!executorScheduled) {
538
- return Promise.resolve({
539
- content: [{ type: "text", text: "Scheduled subagent launch is unavailable (executor not ready)." }],
540
- isError: true,
541
- details: { mode: "management" as const, results: [] },
542
- });
543
- }
544
- return executorScheduled(randomUUID(), params, signal, ctx);
440
+ launch: async (params, ctx, signal) => {
441
+ await waitForAdvertisement();
442
+ return (await getExecutor()).executeScheduled(randomUUID(), params, signal, ctx);
545
443
  },
546
444
  resolveCapabilityCeiling: (sessionId) => resolveCurrentSubagentCapabilityCeiling(sessionId),
547
445
  });
548
446
  let refreshResultDelivery = () => {};
549
447
  let advertisedAgents: AgentConfig[] = [];
550
448
  let advertisedContext: Pick<ExtensionContext, "cwd" | "model"> | undefined;
449
+ let advertisementGeneration = 0;
450
+ let globalRoot: string | null = null;
451
+ let advertisementReady: Promise<void | { error: unknown }> = Promise.resolve();
452
+ let notifySessionChange = () => {};
453
+ let sessionChanged: Promise<void> = Promise.resolve();
454
+ const waitForAdvertisement = async () => {
455
+ let pending: typeof advertisementReady;
456
+ do {
457
+ pending = advertisementReady;
458
+ const result = await Promise.race([pending, sessionChanged]);
459
+ if (pending === advertisementReady && result) throw result.error;
460
+ } while (pending !== advertisementReady);
461
+ };
551
462
  const refreshAdvertisedAgents = () => {
552
463
  advertisedAgents = [];
553
464
  if (!advertisedContext) return;
@@ -555,7 +466,26 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
555
466
  advertisedAgents = discoverAgentsForRuntime(advertisedContext.cwd, "both", advertisedContext.model?.provider).agents
556
467
  .filter((agent) => agent.advertise === true);
557
468
  };
469
+ const beginAdvertisement = (ctx: ExtensionContext) => {
470
+ const generation = ++advertisementGeneration;
471
+ notifySessionChange();
472
+ sessionChanged = new Promise<void>((resolve) => { notifySessionChange = resolve; });
473
+ advertisedAgents = [];
474
+ advertisedContext = { cwd: ctx.cwd, model: ctx.model };
475
+ globalRoot = null;
476
+ advertisementReady = resolveGlobalNpmRoot().then((root) => {
477
+ if (generation !== advertisementGeneration) return;
478
+ globalRoot = root;
479
+ refreshAdvertisedAgents();
480
+ }).catch((error) => {
481
+ if (generation !== advertisementGeneration) return;
482
+ // Settle without an unhandled rejection if no turn follows session_start.
483
+ console.error("Failed to refresh advertised agents:", error);
484
+ return { error };
485
+ });
486
+ };
558
487
  const hasResultDeliveryDemand = () => {
488
+ if (owedResultRunIds.size > 0) return true;
559
489
  if ([...state.asyncJobs.values()].some((job) => job.status === "queued" || job.status === "running")) return true;
560
490
  if (state.foregroundControls.size > 0) return true;
561
491
  if (scheduledRunManager.observedCompletionRunIds().size > 0) return true;
@@ -566,8 +496,8 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
566
496
  ...discovered,
567
497
  agents: applyBuiltinAgentAugmentations(discovered.agents, builtinAgentAugmentations),
568
498
  });
569
- if (listRuntimeAgentConfigs(pi).length === 0) return augment(discoverAgents(cwd, scope, preferredModelProvider));
570
- const snapshot = discoverAgentSnapshot(cwd, scope, preferredModelProvider, { includeChains: false });
499
+ if (listRuntimeAgentConfigs(pi).length === 0) return augment(discoverAgents(cwd, scope, preferredModelProvider, { globalNpmRoot: globalRoot }));
500
+ const snapshot = discoverAgentSnapshot(cwd, scope, preferredModelProvider, { includeChains: false, globalNpmRoot: globalRoot });
571
501
  const discovered = augment(snapshot.effective);
572
502
  const all = snapshot.all;
573
503
  const configuredAgents: AgentConfig[] = [
@@ -576,7 +506,7 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
576
506
  ...all.user,
577
507
  ...all.project,
578
508
  ];
579
- const merged = mergeRuntimeAgents(pi, discovered, configuredAgents);
509
+ const merged = mergeRuntimeAgents(pi, discovered, configuredAgents, { cwd, scope, preferredModelProvider });
580
510
  if (discovered.maxThinking === undefined) return merged;
581
511
  return {
582
512
  ...merged,
@@ -585,7 +515,12 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
585
515
  };
586
516
  const { ensurePoller, refreshWidget, handleStarted, handleComplete, resetJobs, restoreActiveJobs, dispose: disposeAsyncJobTracker } = createAsyncJobTracker(pi, state, DIRS.async, {
587
517
  widgetEnabled: asyncWidgetEnabled,
588
- onJobTerminal: () => refreshResultDelivery(),
518
+ widgetCollapsed: asyncWidgetCollapsed,
519
+ onJobTerminal: (job) => {
520
+ holdOwedResult(job);
521
+ refreshResultDelivery();
522
+ },
523
+ onJobCleanup: (asyncId) => deliveredRunIds.delete(asyncId),
589
524
  supervisorRequestState: supervisorChannel.getSupervisorRequestState,
590
525
  });
591
526
  const resultWatcher = createResultWatcher(
@@ -596,6 +531,10 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
596
531
  {
597
532
  notifier: completionNotifier,
598
533
  ownership: resultDeliveryOwnership,
534
+ onResultDelivered: (runId) => {
535
+ owedResultRunIds.delete(runId);
536
+ if (state.asyncJobs.has(runId)) deliveredRunIds.add(runId);
537
+ },
599
538
  observeCompletion: (result) => scheduledRunManager.handleAsyncCompletion(result),
600
539
  observedCompletionRunIds: () => scheduledRunManager.observedCompletionRunIds(),
601
540
  hasDeliveryDemand: hasResultDeliveryDemand,
@@ -606,26 +545,43 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
606
545
  const { startResultWatcher, transitionResultDelivery, primeExistingResults, stopResultWatcher } = resultWatcher;
607
546
  refreshResultDelivery = resultWatcher.refreshResultDelivery;
608
547
  const asyncRetentionAbort = new AbortController();
609
- const asyncRetentionTimer = setTimeout(async () => {
610
- try {
611
- await cleanupAsyncRetention({
612
- asyncDirRoot: DIRS.async,
613
- resultsDir: DIRS.results,
614
- signal: asyncRetentionAbort.signal,
615
- protectedRunIds: new Set([
616
- ...state.asyncJobs.keys(),
617
- ...(state.workflowControllers?.keys() ?? []),
618
- ...scheduledRunManager.referencedAsyncRunIds(),
619
- ]),
620
- });
621
- } catch (error) {
622
- console.error("Failed to clean retained async subagent state:", error);
548
+ let asyncRetentionTimer: ReturnType<typeof setTimeout> | undefined;
549
+ const startSessionMaintenance = () => {
550
+ if (!resultIndexCleanupTimer) {
551
+ resultIndexCleanupTimer = setTimeout(() => {
552
+ try {
553
+ cleanupResultIndexes(DIRS.results);
554
+ } catch (error) {
555
+ console.error("Failed to clean stale subagent result indexes:", error);
556
+ }
557
+ }, 30_000);
558
+ resultIndexCleanupTimer.unref?.();
623
559
  }
624
- }, ASYNC_RETENTION_DELAY_MS);
625
- asyncRetentionTimer.unref?.();
560
+ waitSubscriptionManager.start();
561
+ if (!asyncRetentionTimer) {
562
+ asyncRetentionTimer = setTimeout(async () => {
563
+ try {
564
+ await cleanupAsyncRetention({
565
+ asyncDirRoot: DIRS.async,
566
+ resultsDir: DIRS.results,
567
+ signal: asyncRetentionAbort.signal,
568
+ protectedRunIds: new Set([
569
+ ...state.asyncJobs.keys(),
570
+ ...(state.workflowControllers?.keys() ?? []),
571
+ ...scheduledRunManager.referencedAsyncRunIds(),
572
+ ]),
573
+ });
574
+ } catch (error) {
575
+ console.error("Failed to clean retained async subagent state:", error);
576
+ }
577
+ }, ASYNC_RETENTION_DELAY_MS);
578
+ asyncRetentionTimer.unref?.();
579
+ }
580
+ };
626
581
 
627
- const executorDeps: Parameters<typeof createSubagentExecutor>[0] = {
582
+ const executorDeps: SubagentExecutorDeps = {
628
583
  pi,
584
+ parentWake,
629
585
  state,
630
586
  config,
631
587
  asyncByDefault,
@@ -637,6 +593,7 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
637
593
  getSubagentSessionRoot,
638
594
  expandTilde,
639
595
  discoverAgents: discoverAgentsForRuntime,
596
+ discoverAgentsAll: (cwd, provider) => discoverAgentsAll(cwd, provider, { globalNpmRoot: globalRoot }),
640
597
  onAgentsChanged: () => {
641
598
  try {
642
599
  refreshAdvertisedAgents();
@@ -650,8 +607,31 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
650
607
  refreshResultDelivery: () => refreshResultDelivery(),
651
608
  trackRetainedNestedRoute: undefined,
652
609
  };
653
- const executor = createSubagentExecutor(executorDeps);
654
- executorScheduled = executor.executeScheduled;
610
+ let executor: SubagentExecutor | undefined;
611
+ let executorPromise: Promise<SubagentExecutor> | undefined;
612
+ let executorModulePromise: Promise<SubagentExecutorModule> | undefined;
613
+ const loadExecutorModule = () => executorModulePromise ??= import("../runs/foreground/subagent-executor.ts");
614
+ const getExecutor = (): Promise<SubagentExecutor> => {
615
+ executorPromise ??= loadExecutorModule().then(({ createSubagentExecutor }) => {
616
+ executor = createSubagentExecutor(executorDeps);
617
+ return executor;
618
+ });
619
+ return executorPromise;
620
+ };
621
+ // Loading these on first use could happen days after startup, when pi-subagents may have
622
+ // changed on disk and the new files would import stale cached copies of modules loaded at
623
+ // startup. Load them shortly after a session starts instead, off Pi's startup path; child
624
+ // runtimes return before registration and never schedule this.
625
+ let modulePreloadTimer: ReturnType<typeof setTimeout> | undefined;
626
+ const scheduleModulePreload = () => {
627
+ if (executorModulePromise || modulePreloadTimer) return;
628
+ modulePreloadTimer = setTimeout(() => {
629
+ // Errors surface from the first call that needs the module.
630
+ loadExecutorModule().catch(() => {});
631
+ if (fleetViewEnabled) import("../tui/fleet.ts").catch(() => {});
632
+ }, MODULE_PRELOAD_DELAY_MS);
633
+ modulePreloadTimer.unref?.();
634
+ };
655
635
 
656
636
  pi.registerMessageRenderer<SupervisorRequestMessageDetails>(SUPERVISOR_REQUEST_MESSAGE_TYPE, renderSupervisorRequest);
657
637
  const registerEntryRenderer = (pi as unknown as {
@@ -664,7 +644,14 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
664
644
  pi.registerMessageRenderer<SlashMessageDetails>(SLASH_RESULT_TYPE, (message, options, theme) => {
665
645
  const details = resolveSlashMessageDetails(message.details);
666
646
  if (!details) return undefined;
667
- return createSlashResultComponent(details, options, theme, config.mainWindowRenderer, config.foregroundDetachShortcut);
647
+ return createSlashResultComponent(
648
+ details,
649
+ options,
650
+ theme,
651
+ config.mainWindowRenderer,
652
+ config.foregroundDetachShortcut,
653
+ () => state.lastUiContext?.ui.theme ?? theme,
654
+ );
668
655
  });
669
656
 
670
657
  pi.registerMessageRenderer<undefined>(SLASH_TEXT_RESULT_TYPE, (message, _options, _theme) => {
@@ -730,9 +717,13 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
730
717
  return new SubagentControlNoticeComponent({ ...details, noticeText: formatSubagentControlNotice(details, content) }, theme);
731
718
  });
732
719
 
720
+ const executeSubagentReady = async (id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((result: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => {
721
+ await waitForAdvertisement();
722
+ return (await getExecutor()).executePublic(id, params, signal, onUpdate, ctx);
723
+ };
733
724
  const executeSubagentCollapsed = (id: string, params: SubagentParamsLike, signal: AbortSignal, onUpdate: ((result: AgentToolResult<Details>) => void) | undefined, ctx: ExtensionContext) => {
734
725
  if (ctx.hasUI) ctx.ui.setToolsExpanded(false);
735
- return executor.executePublic(id, params, signal, onUpdate, ctx);
726
+ return executeSubagentReady(id, params, signal, onUpdate, ctx);
736
727
  };
737
728
 
738
729
  const slashBridge = registerSlashSubagentBridge({
@@ -747,9 +738,10 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
747
738
  getContext: () => state.lastUiContext,
748
739
  execute: (requestId, params, signal, ctx, onUpdate) =>
749
740
  executeSubagentCollapsed(requestId, params, signal, onUpdate, ctx),
750
- executeStructured: (requestId, params, signal, ctx, onUpdate) => {
741
+ executeStructured: async (requestId, params, signal, ctx, onUpdate) => {
751
742
  if (ctx.hasUI) ctx.ui.setToolsExpanded(false);
752
- return executor.executeDelegated(requestId, params, signal, onUpdate, ctx);
743
+ await waitForAdvertisement();
744
+ return (await getExecutor()).executeDelegated(requestId, params, signal, onUpdate, ctx);
753
745
  },
754
746
  });
755
747
 
@@ -791,28 +783,28 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
791
783
  },
792
784
  });
793
785
 
786
+ const disabledFeatures = resolveDisabledFeatureSurface(config);
794
787
  const rpcBridge = registerSubagentRpcBridge({
795
788
  events: pi.events,
796
789
  getContext: () => state.lastUiContext,
797
- execute: (id, params, signal, onUpdate, ctx) => executor.executePublic(id, params, signal, onUpdate, ctx),
790
+ execute: executeSubagentReady,
798
791
  state,
792
+ disabledFeatures,
799
793
  });
800
794
 
801
795
 
802
- const parameters = createSubagentParamsSchema();
796
+ const parameters = createSubagentParamsSchema(disabledFeatures);
803
797
  const tool: ToolDefinition<typeof parameters, Details> = {
804
798
  name: "subagent",
799
+ ...MODEL_ONLY_TOOL,
805
800
  label: "Subagent",
806
- description: buildSubagentToolDescription(config),
807
- ...buildSubagentToolPromptMetadata(config),
808
- ...{ discovery: {
809
- summary: "Delegate a task to one or more child agents, or run a workflow script",
810
- aliases: ["delegate task", "child agent", "parallel agents"],
811
- category: "agents",
812
- } },
801
+ description: buildSubagentToolDescription(config, { disabledFeatures }),
802
+ ...buildSubagentToolPromptMetadata(config, disabledFeatures),
813
803
  parameters,
814
804
 
815
805
  async execute(id, params, signal, onUpdate, ctx) {
806
+ const removedField = removedModelWorkflowFieldError(params);
807
+ if (removedField) throw new Error(removedField);
816
808
  return finalizeToolResult(await executeSubagentCollapsed(id, params as SubagentParamsLike, signal ?? new AbortController().signal, onUpdate, ctx));
817
809
  },
818
810
 
@@ -826,15 +818,9 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
826
818
  0, 0,
827
819
  );
828
820
  }
829
- if (args.workflowScript)
821
+ if (args.workflow !== undefined)
830
822
  return new Text(
831
- `${title}${gap}${formatWorkflowManifest(args.workflowScript, args.async, false, args.preflight)}`,
832
- 0,
833
- 0,
834
- );
835
- if (args.workflowScriptPath)
836
- return new Text(
837
- `${title}${gap}${theme.fg("accent", args.workflowScriptPath)}${args.async === true ? `${gap}${theme.fg("warning", "[async]")}` : ""}${args.preflight !== undefined ? `${gap}${theme.fg("dim", formatWorkflowPreflightCall(args.preflight))}` : ""}`,
823
+ `${title}${gap}${theme.fg("accent", args.workflow === true || args.workflow === "true" ? "workflow (reply block)" : `workflow ${String(args.workflow)}`)}${args.async === true ? `${gap}${theme.fg("warning", "[async]")}` : ""}${args.preflight !== undefined ? `${gap}${theme.fg("dim", formatWorkflowPreflightCall(args.preflight))}` : ""}`,
838
824
  0,
839
825
  0,
840
826
  );
@@ -858,42 +844,52 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
858
844
 
859
845
  pi.registerTool(tool);
860
846
 
861
- pi.on("before_agent_start", (event, ctx) => {
862
- const selectedTools = event.systemPromptOptions.selectedTools ?? pi.getActiveTools();
847
+ pi.on("before_agent_start", async (event, ctx) => {
848
+ await waitForAdvertisement();
849
+ if (!event.systemPromptOptions.selectedTools.includes("subagent")) return;
863
850
  const sessionId = state.currentSessionId ?? resolveCurrentSessionId(ctx.sessionManager);
864
- const advertisedPrompt = selectedTools.includes("subagent")
865
- ? buildAdvertisedAgentPrompt(advertisedAgents, resolveCurrentSubagentCapabilityCeiling(sessionId))
866
- : undefined;
867
- const systemPrompt = appendAdvertisedAgentPrompt(event.systemPrompt, advertisedPrompt);
868
- if (systemPrompt !== event.systemPrompt) return { systemPrompt };
851
+ // Structured sections let Pi append a transcript delta instead of replacing the
852
+ // cached system prompt. Set the section on every turn it applies: Pi rebuilds the
853
+ // options each turn, and an unset turn records a removal.
854
+ const catalog = buildAdvertisedAgentCatalog(advertisedAgents, resolveCurrentSubagentCapabilityCeiling(sessionId));
855
+ if (catalog) event.systemPromptOptions.sections.advertised_subagents = catalog;
869
856
  });
870
857
 
871
- registerWaitTool(pi, state, waitToolConfig.enabled, waitSubscriptionManager, waitToolConfig.defaultTimeoutMs);
858
+ registerWaitTool(pi, state, waitToolConfig.enabled, waitSubscriptionManager, waitToolConfig.defaultTimeoutMs, undefined, supervisorChannel.hasPendingRequests);
872
859
 
873
860
  pi.on("agent_end", async (_event, ctx) => {
874
- if (!ctx.hasUI) await drainOutstandingWork({ state, events: pi.events });
875
- const ownerSessionId = state.currentSessionId;
876
- if (!ownerSessionId) return;
877
- goalTurnId += 1;
878
861
  try {
879
- const location = resolveMissionStoreLocation({ projectRoot: state.baseCwd, ...(config.missions ? { config: config.missions } : {}) });
880
- const retainedChildren = listRetainedChildren(DIRS.async, ownerSessionId);
881
- for (const notice of collectGoalContinuationNotices({ location, ownerSessionId, retainedChildren, turnId: goalTurnId })) {
882
- handleSubagentControlNotice({
883
- pi,
884
- state,
885
- visibleControlNotices: new Set(),
886
- details: { source: "goal", event: notice.event, noticeText: notice.message },
887
- });
862
+ // A headless host may dispose the session as soon as this turn settles, so hand
863
+ // finished results to Pi now; Pi runs the queued completion turn after agent_end.
864
+ // A failed drain rejects without this step so its deadline stays exact.
865
+ if (!ctx.hasUI) await drainOutstandingWork({ state, events: pi.events, hasPendingSupervisorRequest: supervisorChannel.hasPendingRequests }).then(resultWatcher.deliverPendingResults);
866
+ } finally {
867
+ // Deliver notices after a failed drain without suppressing its rejection.
868
+ const ownerSessionId = state.currentSessionId;
869
+ if (ownerSessionId) {
870
+ goalTurnId += 1;
871
+ try {
872
+ const location = resolveMissionStoreLocation({ projectRoot: state.baseCwd, ...(config.missions ? { config: config.missions } : {}) });
873
+ const retainedChildren = listRetainedChildren(DIRS.async, ownerSessionId);
874
+ for (const notice of collectGoalContinuationNotices({ location, ownerSessionId, retainedChildren, turnId: goalTurnId })) {
875
+ handleSubagentControlNotice({
876
+ pi: parentWake,
877
+ state,
878
+ visibleControlNotices: new Set(),
879
+ details: { source: "goal", event: notice.event, noticeText: notice.message },
880
+ });
881
+ }
882
+ } catch (error) {
883
+ console.error("Failed to evaluate goal missions:", error);
884
+ }
888
885
  }
889
- } catch (error) {
890
- console.error("Failed to evaluate goal missions:", error);
891
886
  }
892
887
  });
893
888
 
894
889
  const disposeSlashCommands = registerSlashCommands(pi, state, {
895
890
  fleetKeybindings: config.fleetKeybindings,
896
891
  foregroundDetachShortcut: config.foregroundDetachShortcut,
892
+ workflowScriptsDisabled: disabledFeatures.features.has("workflow-scripts"),
897
893
  });
898
894
 
899
895
  let visibleControlNotices = new Set<string>();
@@ -908,14 +904,14 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
908
904
  });
909
905
  const controlEventHandler = (payload: unknown) => {
910
906
  handleSubagentControlNotice({
911
- pi,
907
+ pi: parentWake,
912
908
  state,
913
909
  visibleControlNotices,
914
910
  details: payload as SubagentControlMessageDetails,
915
911
  });
916
912
  };
917
913
  const steeringNoticeHandler = (payload: unknown) => {
918
- handleSubagentSteeringNotice({ pi, state, details: payload as SubagentSteeringMessageDetails });
914
+ handleSubagentSteeringNotice({ pi: parentWake, state, details: payload as SubagentSteeringMessageDetails });
919
915
  };
920
916
  const asyncStartedHandler = (payload: unknown) => {
921
917
  handleStarted(payload);
@@ -925,6 +921,11 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
925
921
  };
926
922
  const asyncCompleteHandler = (payload: unknown) => {
927
923
  handleComplete(payload);
924
+ // Detached-workflow reconciliation publishes the result, then ends the job
925
+ // with this event; the next status refresh sees it already terminal.
926
+ const job = state.asyncJobs.get((payload as { id?: string } | null)?.id ?? "");
927
+ if (job && job.status !== "queued" && job.status !== "running"
928
+ && fs.existsSync(resultFilePath(DIRS.results, job.asyncId))) holdOwedResult(job);
928
929
  refreshResultDelivery();
929
930
  refreshActiveAsyncCapacity();
930
931
  scheduledRunManager.handleAsyncCompletion(payload);
@@ -932,6 +933,7 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
932
933
  };
933
934
  const eventUnsubscribes = [
934
935
  registerRuntimeAgentEventListener(pi),
936
+ registerInspectorEventListener(pi),
935
937
  pi.events.on(SUBAGENT_ASYNC_STARTED_EVENT, asyncStartedHandler),
936
938
  pi.events.on(SUBAGENT_ASYNC_COMPLETE_EVENT, asyncCompleteHandler),
937
939
  pi.events.on(SUBAGENT_PROCESS_TERMINAL_EVENT, () => {
@@ -1006,6 +1008,8 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1006
1008
  state.currentSessionId = resolveCurrentSessionId(ctx.sessionManager);
1007
1009
  state.supervisorOwnerSessionId = ctx.sessionManager.getSessionId() || null;
1008
1010
  transitionResultDelivery();
1011
+ owedResultRunIds.clear();
1012
+ deliveredRunIds.clear();
1009
1013
  state.parentSessionFile = ctx.sessionManager.getSessionFile();
1010
1014
  state.trustedSessionFileRoot = state.parentSessionFile ? path.join(getAgentDir(), "sessions") : undefined;
1011
1015
  state.trustedSessionRoots = [...new Set([
@@ -1021,17 +1025,10 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1021
1025
  };
1022
1026
  const projectPaneOwnerRoot = path.resolve(ctx.cwd);
1023
1027
  restoreHerdrProjectPaneSnapshots(state, [...new Set([...(state.herdrProjectPanes?.keys() ?? []), ...listHerdrProjectPaneRoots(projectPaneOwnerRoot), projectPaneOwnerRoot])]);
1024
- // Set SELESAI_SUBAGENT_PARENT_SESSION for permission-system forwarding.
1025
- // Only set in the root session (the interactive UI session), not in a
1026
- // child host: the runner process inherits the parent's value through
1027
- // its environment at spawn time and must not overwrite it with a child
1028
- // session's identity.
1028
+ // Root hosts may contain independent sessions, so a process-global parent
1029
+ // identity is unsafe. Dedicated child runners retain their launch-owned value.
1029
1030
  if (!process.env[SUBAGENT_CHILD_ENV]) {
1030
- const sessionId = ctx.sessionManager.getSessionId();
1031
- if (sessionId) {
1032
- process.env[SUBAGENT_PARENT_SESSION_ENV] = sessionId;
1033
- parentSessionEnvValue = sessionId;
1034
- }
1031
+ delete process.env[SUBAGENT_PARENT_SESSION_ENV];
1035
1032
  }
1036
1033
  state.lastUiContext = ctx;
1037
1034
  let phaseStartedAt = Date.now();
@@ -1079,19 +1076,22 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1079
1076
  cleanup() {
1080
1077
  if (runtimeCleaned) return;
1081
1078
  runtimeCleaned = true;
1082
- const shuttingDownParentSession = parentSessionEnvValue;
1083
1079
  releaseHostSessionLiveness();
1084
1080
  releaseHostSessionLiveness = () => {};
1085
1081
  // Workflow continuations retain their launch context; abort them before
1086
1082
  // teardown so a reload cannot launch through a stale context.
1087
1083
  for (const controller of state.workflowControllers?.values() ?? []) {
1088
- if (!controller.signal.aborted) controller.abort(new Error("Workflow stopped because the extension session was replaced or reloaded."));
1084
+ if (!controller.signal.aborted) controller.abort(runtimeReplacedAbortReason());
1089
1085
  }
1090
1086
  state.workflowControllers?.clear();
1091
1087
  state.workflowChildStops?.clear();
1092
1088
  clearRuntimeAgentsForPi(pi);
1093
- clearTimeout(resultIndexCleanupTimer);
1094
- clearTimeout(asyncRetentionTimer);
1089
+ if (resultIndexCleanupTimer) clearTimeout(resultIndexCleanupTimer);
1090
+ resultIndexCleanupTimer = undefined;
1091
+ if (asyncRetentionTimer) clearTimeout(asyncRetentionTimer);
1092
+ asyncRetentionTimer = undefined;
1093
+ if (modulePreloadTimer) clearTimeout(modulePreloadTimer);
1094
+ modulePreloadTimer = undefined;
1095
1095
  asyncRetentionAbort.abort();
1096
1096
  stopResultWatcher();
1097
1097
  resultDeliveryOwnership.clear();
@@ -1125,10 +1125,6 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1125
1125
  state.supervisorOwnerSessionId = null;
1126
1126
  state.statusProjectionSessionId = null;
1127
1127
  state.parentSessionFile = null;
1128
- parentSessionEnvValue = null;
1129
- if (shuttingDownParentSession && process.env[SUBAGENT_PARENT_SESSION_ENV] === shuttingDownParentSession) {
1130
- delete process.env[SUBAGENT_PARENT_SESSION_ENV];
1131
- }
1132
1128
  if (runtimeEntry.sessionManager && runtimeRegistry.bySessionManager.get(runtimeEntry.sessionManager) === runtimeEntry) {
1133
1129
  runtimeRegistry.bySessionManager.delete(runtimeEntry.sessionManager);
1134
1130
  }
@@ -1173,10 +1169,13 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1173
1169
  };
1174
1170
 
1175
1171
  pi.on("agent_start", () => {
1172
+ parentWake.agentStarted();
1176
1173
  resumeWidgetsAfterCompaction();
1177
1174
  herdrStatusBridge.agentStarted();
1178
1175
  });
1179
1176
 
1177
+ pi.on("message_start", (event) => completionNotifier.messageStarted(event.message));
1178
+
1180
1179
  pi.on("agent_settled", () => {
1181
1180
  resumeWidgetsAfterCompaction();
1182
1181
  });
@@ -1185,10 +1184,11 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1185
1184
  if (event.reason !== "manual") suspendWidgetsForCompaction();
1186
1185
  });
1187
1186
 
1188
- pi.on("session_compact", () => {
1187
+ pi.on("session_compact", (event) => {
1188
+ if (event.reason !== "manual") return;
1189
1189
  const hasActiveAsyncWork = [...state.asyncJobs.values()].some((job) => job.status === "queued" || job.status === "running");
1190
1190
  if (!hasActiveAsyncWork || !withLastUiContext(() => true)) return;
1191
- pi.sendMessage(
1191
+ parentWake.sendMessage(
1192
1192
  {
1193
1193
  customType: "subagent-compaction-resume",
1194
1194
  content: "Compaction is complete. Resume the parent task now; background subagent results will arrive separately when ready.",
@@ -1199,7 +1199,11 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1199
1199
  });
1200
1200
 
1201
1201
  pi.on("session_start", (event, ctx) => {
1202
+ parentWake.bindSession(ctx);
1203
+ completionNotifier.bindSession(ctx.sessionManager);
1202
1204
  installRuntime(ctx);
1205
+ startSessionMaintenance();
1206
+ scheduleModulePreload();
1203
1207
  const recovering = event.reason === "startup" || event.reason === "reload" || event.reason === "resume";
1204
1208
  resetSessionState(ctx, recovering, event.previousSessionFile);
1205
1209
  releaseHostSessionLiveness();
@@ -1209,7 +1213,7 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1209
1213
  ? registerPiWebSessionLiveness({
1210
1214
  sessionId,
1211
1215
  ...(sessionFile ? { sessionFile } : {}),
1212
- isActive: () => hasLiveSubagentWork(state) || completionNotifier.hasPendingDelivery(),
1216
+ isActive: () => owedResultRunIds.size > 0 || hasLiveSubagentWork(state) || completionNotifier.hasPendingDelivery() || parentWake.isPending(),
1213
1217
  })
1214
1218
  : { registered: false, release: () => {} };
1215
1219
  releaseHostSessionLiveness = liveness.release;
@@ -1226,7 +1230,9 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1226
1230
  supervisorChannel.activateTransport();
1227
1231
  });
1228
1232
 
1229
- pi.on("session_shutdown", async () => {
1233
+ pi.on("session_shutdown", async (event) => {
1234
+ completionNotifier.sessionShutdown(event?.reason);
1235
+ parentWake.sessionShutdown(event?.reason);
1230
1236
  runtimeEntry.cleanup();
1231
1237
  try {
1232
1238
  await disposeChildSessions();
@@ -1236,8 +1242,14 @@ export default function registerSubagentExtension(pi: ExtensionAPI): void {
1236
1242
  await herdrStatusBridge.flush();
1237
1243
  });
1238
1244
 
1239
- pi.on("session_start", (_event, ctx) => {
1240
- advertisedContext = { cwd: ctx.cwd, model: ctx.model };
1241
- refreshAdvertisedAgents();
1245
+ // Child processes and Herdr panes never load this module; in-process children have no UI.
1246
+ pi.on("session_start", (_event, ctx) => beginAdvertisement(ctx));
1247
+
1248
+ registerSubagentToolActivation(pi, {
1249
+ mode: config.toolActivation,
1250
+ advertisedPrompt: async () => {
1251
+ await waitForAdvertisement();
1252
+ return buildAdvertisedAgentPrompt(advertisedAgents, resolveCurrentSubagentCapabilityCeiling(state.currentSessionId ?? undefined));
1253
+ },
1242
1254
  });
1243
1255
  }