@selesai/code 0.13.3 → 0.13.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/cli/credential-print.js +4 -4
  3. package/dist/cli.js +0 -0
  4. package/dist/core/compaction/utils.js +2 -2
  5. package/dist/core/export-html/template.css +1066 -1066
  6. package/dist/core/export-html/template.html +55 -55
  7. package/dist/core/export-html/template.js +1864 -1864
  8. package/dist/core/export-html/vendor/highlight.min.js +1212 -1212
  9. package/dist/core/export-html/vendor/marked.min.js +78 -78
  10. package/dist/core/messages.js +7 -7
  11. package/dist/defaults/models.json +17 -1
  12. package/dist/extensions/context-compaction-reminder.test.ts +82 -82
  13. package/dist/extensions/context-compaction-reminder.ts +28 -28
  14. package/dist/extensions/cost-reconcile.test.ts +24 -5
  15. package/dist/extensions/cost-reconcile.ts +14 -7
  16. package/dist/extensions/pi-hermes-memory/scripts/check-min-sdk.mjs +0 -0
  17. package/dist/extensions/pi-hermes-memory/tests/run-all.sh +0 -0
  18. package/dist/extensions/pi-intercom/CHANGELOG.md +13 -0
  19. package/dist/extensions/pi-intercom/LICENSE +21 -21
  20. package/dist/extensions/pi-intercom/README.md +4 -5
  21. package/dist/extensions/pi-intercom/broker/client.test.ts +83 -83
  22. package/dist/extensions/pi-intercom/broker/framing.test.ts +114 -114
  23. package/dist/extensions/pi-intercom/broker/paths.ts +134 -134
  24. package/dist/extensions/pi-intercom/broker/runtime-claim.test.ts +34 -34
  25. package/dist/extensions/pi-intercom/broker/runtime-claim.ts +21 -21
  26. package/dist/extensions/pi-intercom/config.test.ts +3 -31
  27. package/dist/extensions/pi-intercom/config.ts +0 -15
  28. package/dist/extensions/pi-intercom/cwd.test.ts +40 -40
  29. package/dist/extensions/pi-intercom/cwd.ts +31 -31
  30. package/dist/extensions/pi-intercom/format-context.test.ts +31 -31
  31. package/dist/extensions/pi-intercom/format-context.ts +32 -32
  32. package/dist/extensions/pi-intercom/index.ts +9 -46
  33. package/dist/extensions/pi-intercom/intercom.integration.test.ts +49 -57
  34. package/dist/extensions/pi-intercom/package.json +1 -1
  35. package/dist/extensions/pi-intercom/reply-tracker.test.ts +20 -0
  36. package/dist/extensions/pi-intercom/reply-tracker.ts +8 -0
  37. package/dist/extensions/pi-intercom/test/overlay-width.test.ts +66 -66
  38. package/dist/extensions/pi-intercom/ui/compose.ts +143 -143
  39. package/dist/extensions/pi-intercom/ui/session-list.ts +166 -166
  40. package/dist/extensions/pi-subagents/CHANGELOG.md +27 -0
  41. package/dist/extensions/pi-subagents/docs/tool-reference.md +4 -1
  42. package/dist/extensions/pi-subagents/docs/workflows.md +2 -2
  43. package/dist/extensions/pi-subagents/install.mjs +0 -0
  44. package/dist/extensions/pi-subagents/package-lock.json +2 -2
  45. package/dist/extensions/pi-subagents/package.json +1 -1
  46. package/dist/extensions/pi-subagents/skills/council-mode/SKILL.md +48 -243
  47. package/dist/extensions/pi-subagents/skills/council-mode/references/pass-contracts.md +150 -0
  48. package/dist/extensions/pi-subagents/skills/pi-subagents/SKILL.md +87 -37
  49. package/dist/extensions/pi-subagents/skills/pi-subagents/references/constraints-and-recipes.md +29 -233
  50. package/dist/extensions/pi-subagents/skills/pi-subagents/references/execution-controls.md +49 -8
  51. package/dist/extensions/pi-subagents/skills/pi-subagents/references/management-authoring-rpc.md +2 -2
  52. package/dist/extensions/pi-subagents/skills/pi-subagents/references/multi-lane-orchestration.md +13 -1
  53. package/dist/extensions/pi-subagents/skills/pi-subagents/references/prompting-and-roles.md +34 -27
  54. package/dist/extensions/pi-subagents/skills/pi-subagents/references/review-and-validation.md +73 -0
  55. package/dist/extensions/pi-subagents/src/agents/agent-management.ts +157 -28
  56. package/dist/extensions/pi-subagents/src/api/shared-types.ts +2 -0
  57. package/dist/extensions/pi-subagents/src/extension/public-execution.ts +1 -0
  58. package/dist/extensions/pi-subagents/src/extension/schemas.ts +1 -0
  59. package/dist/extensions/pi-subagents/src/extension/tool-description.ts +4 -1
  60. package/dist/extensions/pi-subagents/src/runs/background/async-execution.ts +2 -2
  61. package/dist/extensions/pi-subagents/src/runs/background/async-job-tracker.ts +3 -0
  62. package/dist/extensions/pi-subagents/src/runs/background/async-status.ts +45 -2
  63. package/dist/extensions/pi-subagents/src/runs/background/control-channel.ts +3 -2
  64. package/dist/extensions/pi-subagents/src/runs/background/run-status.ts +13 -2
  65. package/dist/extensions/pi-subagents/src/runs/background/subagent-runner.ts +5 -1
  66. package/dist/extensions/pi-subagents/src/runs/background/subagent-wait.ts +10 -2
  67. package/dist/extensions/pi-subagents/src/runs/background/wait-completions.ts +3 -0
  68. package/dist/extensions/pi-subagents/src/runs/foreground/execution.ts +11 -2
  69. package/dist/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts +98 -1
  70. package/dist/extensions/pi-subagents/src/runs/shared/async-status-projection.ts +138 -4
  71. package/dist/extensions/pi-subagents/src/runs/shared/background-process-options.ts +9 -0
  72. package/dist/extensions/pi-subagents/src/runs/shared/mcp-direct-tool-grant.ts +2 -5
  73. package/dist/extensions/pi-subagents/src/runs/shared/mutation-evidence.ts +52 -3
  74. package/dist/extensions/pi-subagents/src/runs/shared/pi-args.ts +47 -1
  75. package/dist/extensions/pi-subagents/src/runs/shared/single-output.ts +45 -18
  76. package/dist/extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.ts +21 -2
  77. package/dist/extensions/pi-subagents/src/runs/shared/workflow-graph.ts +15 -0
  78. package/dist/extensions/pi-subagents/src/shared/types.ts +34 -1
  79. package/dist/extensions/pi-subagents/src/tui/fleet-status.ts +11 -3
  80. package/dist/extensions/pi-subagents/src/tui/render-helpers.ts +31 -0
  81. package/dist/extensions/pi-subagents/src/tui/render.ts +597 -112
  82. package/dist/extensions/pi-subagents/src/watchdog/change-signature.ts +40 -1
  83. package/dist/extensions/pi-subagents/src/workflows/host-command.ts +6 -1
  84. package/dist/extensions/pi-subagents/src/workflows/scripted-workflow.ts +53 -2
  85. package/dist/extensions/pi-subagents/test/integration/async-execution.test.ts +55 -6
  86. package/dist/extensions/pi-subagents/test/integration/async-status.test.ts +111 -1
  87. package/dist/extensions/pi-subagents/test/integration/render-fork-badge.test.ts +206 -38
  88. package/dist/extensions/pi-subagents/test/integration/render-widget.test.ts +522 -31
  89. package/dist/extensions/pi-subagents/test/integration/single-execution.test.ts +123 -0
  90. package/dist/extensions/pi-subagents/test/unit/agent-management.test.ts +48 -0
  91. package/dist/extensions/pi-subagents/test/unit/async-status-projection.test.ts +57 -1
  92. package/dist/extensions/pi-subagents/test/unit/background-process-options.test.ts +17 -0
  93. package/dist/extensions/pi-subagents/test/unit/external-cli-runner.test.ts +1 -1
  94. package/dist/extensions/pi-subagents/test/unit/fleet-status.test.ts +44 -4
  95. package/dist/extensions/pi-subagents/test/unit/fork-cache-key.test.ts +91 -0
  96. package/dist/extensions/pi-subagents/test/unit/host-command.test.ts +1 -0
  97. package/dist/extensions/pi-subagents/test/unit/index-child-registration.test.ts +0 -1
  98. package/dist/extensions/pi-subagents/test/unit/mcp-direct-tool-grant.test.ts +20 -3
  99. package/dist/extensions/pi-subagents/test/unit/mutation-evidence.test.ts +27 -0
  100. package/dist/extensions/pi-subagents/test/unit/pi-args.test.ts +93 -17
  101. package/dist/extensions/pi-subagents/test/unit/public-execution.test.ts +1 -0
  102. package/dist/extensions/pi-subagents/test/unit/render-helpers.test.ts +103 -26
  103. package/dist/extensions/pi-subagents/test/unit/run-status.test.ts +58 -0
  104. package/dist/extensions/pi-subagents/test/unit/schemas.test.ts +22 -2
  105. package/dist/extensions/pi-subagents/test/unit/scripted-workflow.test.ts +21 -0
  106. package/dist/extensions/pi-subagents/test/unit/single-output.test.ts +13 -0
  107. package/dist/extensions/pi-subagents/test/unit/subagent-wait.test.ts +54 -0
  108. package/dist/extensions/pi-subagents/test/unit/tool-description.test.ts +2 -0
  109. package/dist/extensions/pi-subagents/test/unit/wait-completions.test.ts +32 -0
  110. package/dist/extensions/pi-subagents/test/unit/watchdog-change-signature.test.ts +48 -1
  111. package/dist/extensions/pi-subagents/test/unit/widget-nested-render.test.ts +21 -6
  112. package/dist/extensions/pi-subagents/test/unit/windows-hide-spawn.test.ts +11 -0
  113. package/dist/extensions/pi-web-agent/CHANGELOG.md +410 -0
  114. package/dist/extensions/pi-web-agent/README.md +131 -0
  115. package/dist/extensions/pi-web-agent/package.json +4 -2
  116. package/dist/extensions/pi-web-agent/src/backends/config.ts +62 -5
  117. package/dist/extensions/pi-web-agent/src/backends/doctor.ts +136 -0
  118. package/dist/extensions/pi-web-agent/src/backends/factory.ts +96 -6
  119. package/dist/extensions/pi-web-agent/src/backends/settings-reader.ts +25 -25
  120. package/dist/extensions/pi-web-agent/src/cache/ttl-cache.ts +28 -28
  121. package/dist/extensions/pi-web-agent/src/changelog-notice.ts +136 -136
  122. package/dist/extensions/pi-web-agent/src/commands/web-agent-config.ts +183 -47
  123. package/dist/extensions/pi-web-agent/src/extension.ts +62 -25
  124. package/dist/extensions/pi-web-agent/src/extract/readability.ts +19 -11
  125. package/dist/extensions/pi-web-agent/src/fetch/browser-resolution.ts +199 -199
  126. package/dist/extensions/pi-web-agent/src/fetch/firecrawl-fetch.ts +100 -100
  127. package/dist/extensions/pi-web-agent/src/fetch/headless-fetch.ts +117 -117
  128. package/dist/extensions/pi-web-agent/src/fetch/http-fetch.ts +67 -67
  129. package/dist/extensions/pi-web-agent/src/orchestration/answer-synthesizer.ts +60 -60
  130. package/dist/extensions/pi-web-agent/src/orchestration/candidate-selector.ts +5 -4
  131. package/dist/extensions/pi-web-agent/src/orchestration/direct-url.ts +2 -25
  132. package/dist/extensions/pi-web-agent/src/orchestration/evidence-quality.ts +5 -2
  133. package/dist/extensions/pi-web-agent/src/orchestration/evidence-ranker.ts +2 -0
  134. package/dist/extensions/pi-web-agent/src/orchestration/index.ts +28 -28
  135. package/dist/extensions/pi-web-agent/src/orchestration/query-planner.ts +47 -47
  136. package/dist/extensions/pi-web-agent/src/orchestration/research-orchestrator.ts +72 -7
  137. package/dist/extensions/pi-web-agent/src/orchestration/research-types.ts +8 -1
  138. package/dist/extensions/pi-web-agent/src/orchestration/research-worker.ts +28 -3
  139. package/dist/extensions/pi-web-agent/src/orchestration/source-profile.ts +4 -0
  140. package/dist/extensions/pi-web-agent/src/orchestration/stop-decider.ts +81 -81
  141. package/dist/extensions/pi-web-agent/src/orchestration/url.ts +35 -0
  142. package/dist/extensions/pi-web-agent/src/presentation/config-store.ts +210 -210
  143. package/dist/extensions/pi-web-agent/src/presentation/config.ts +75 -75
  144. package/dist/extensions/pi-web-agent/src/presentation/explore-presentation.ts +18 -6
  145. package/dist/extensions/pi-web-agent/src/presentation/fetch-presentation.ts +54 -54
  146. package/dist/extensions/pi-web-agent/src/presentation/search-presentation.ts +14 -2
  147. package/dist/extensions/pi-web-agent/src/presentation/select-view.ts +20 -20
  148. package/dist/extensions/pi-web-agent/src/presentation/types.ts +63 -63
  149. package/dist/extensions/pi-web-agent/src/readers/github-reader.ts +150 -0
  150. package/dist/extensions/pi-web-agent/src/readers/limits.ts +3 -0
  151. package/dist/extensions/pi-web-agent/src/readers/pdf-reader.ts +87 -0
  152. package/dist/extensions/pi-web-agent/src/readers/resolver.ts +25 -0
  153. package/dist/extensions/pi-web-agent/src/readers/types.ts +11 -0
  154. package/dist/extensions/pi-web-agent/src/readers/youtube-reader.ts +79 -0
  155. package/dist/extensions/pi-web-agent/src/search/brave.ts +114 -114
  156. package/dist/extensions/pi-web-agent/src/search/duckduckgo.ts +32 -5
  157. package/dist/extensions/pi-web-agent/src/search/exa.ts +109 -0
  158. package/dist/extensions/pi-web-agent/src/search/fanout.ts +154 -0
  159. package/dist/extensions/pi-web-agent/src/search/searxng.ts +96 -96
  160. package/dist/extensions/pi-web-agent/src/search/tavily.ts +113 -0
  161. package/dist/extensions/pi-web-agent/src/search/youcom.ts +109 -0
  162. package/dist/extensions/pi-web-agent/src/tools/web-explore.ts +71 -71
  163. package/dist/extensions/pi-web-agent/src/tools/web-fetch-headless.ts +31 -31
  164. package/dist/extensions/pi-web-agent/src/tools/web-fetch.ts +31 -31
  165. package/dist/extensions/pi-web-agent/src/tools/web-search.ts +22 -9
  166. package/dist/extensions/pi-web-agent/src/types.ts +19 -4
  167. package/dist/extensions/pi-zentui/extensions/zentui/format.ts +7 -1
  168. package/dist/extensions/ponytail/package.json +8 -8
  169. package/dist/extensions/question/constants.ts +30 -30
  170. package/dist/extensions/question/helpers.ts +58 -58
  171. package/dist/extensions/question/navigation.ts +14 -14
  172. package/dist/extensions/question/package.json +19 -19
  173. package/dist/extensions/question/selection-mode.ts +46 -46
  174. package/dist/extensions/question/shortcuts.ts +44 -44
  175. package/dist/extensions/question/types.ts +132 -132
  176. package/dist/extensions/test-resolve-hook-impl.mjs +6 -6
  177. package/dist/extensions/test-resolve-hook.mjs +6 -6
  178. package/dist/extensions/web-agent-onboarding.ts +222 -222
  179. package/dist/package-manager-cli.js +71 -71
  180. package/dist/rpc-entry.js +0 -0
  181. package/dist/skills/improve-codebase/REFERENCE.md +78 -78
  182. package/docs/compaction.md +396 -396
  183. package/docs/containerization.md +111 -111
  184. package/docs/development.md +71 -71
  185. package/docs/docs.json +164 -164
  186. package/docs/environment-variables.md +86 -86
  187. package/docs/index.md +83 -83
  188. package/docs/json.md +82 -82
  189. package/docs/models.md +502 -502
  190. package/docs/packages.md +227 -227
  191. package/docs/plans/subagent-delegation/phase-0-correctness.md +264 -264
  192. package/docs/plans/subagent-delegation/phase-1-behavioral-contract.md +485 -485
  193. package/docs/plans/subagent-delegation/phase-2-context-controls.md +281 -281
  194. package/docs/plans/subagent-delegation/phase-3-advisory-routing.md +361 -361
  195. package/docs/plans/subagent-delegation/phase-4-optional-enforcement.md +380 -380
  196. package/docs/prompt-templates.md +95 -95
  197. package/docs/providers.md +293 -293
  198. package/docs/security.md +59 -59
  199. package/docs/session-format.md +414 -414
  200. package/docs/sessions.md +145 -145
  201. package/docs/shared-host-extensions.md +109 -109
  202. package/docs/shell-aliases.md +13 -13
  203. package/docs/skills.md +231 -231
  204. package/docs/terminal-setup.md +142 -142
  205. package/docs/termux.md +127 -127
  206. package/docs/themes.md +295 -295
  207. package/docs/tmux.md +63 -63
  208. package/docs/tui.md +927 -927
  209. package/docs/windows.md +17 -17
  210. package/examples/README.md +25 -25
  211. package/examples/extensions/README.md +211 -211
  212. package/examples/extensions/auto-commit-on-exit.ts +49 -49
  213. package/examples/extensions/bash-spawn-hook.ts +30 -30
  214. package/examples/extensions/bookmark.ts +50 -50
  215. package/examples/extensions/border-status-editor.ts +150 -150
  216. package/examples/extensions/built-in-tool-renderer.ts +249 -249
  217. package/examples/extensions/claude-rules.ts +86 -86
  218. package/examples/extensions/commands.ts +72 -72
  219. package/examples/extensions/confirm-destructive.ts +59 -59
  220. package/examples/extensions/custom-compaction.ts +130 -130
  221. package/examples/extensions/custom-footer.ts +64 -64
  222. package/examples/extensions/custom-header.ts +73 -73
  223. package/examples/extensions/custom-provider-anthropic/index.ts +610 -610
  224. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -24
  225. package/examples/extensions/custom-provider-anthropic/package.json +19 -19
  226. package/examples/extensions/custom-provider-gitlab-duo/index.ts +404 -404
  227. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -16
  228. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -82
  229. package/examples/extensions/dirty-repo-guard.ts +56 -56
  230. package/examples/extensions/doom-overlay/README.md +46 -46
  231. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -21
  232. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  233. package/examples/extensions/doom-overlay/doom/build.sh +152 -152
  234. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -72
  235. package/examples/extensions/doom-overlay/doom-component.ts +132 -132
  236. package/examples/extensions/doom-overlay/doom-engine.ts +173 -173
  237. package/examples/extensions/doom-overlay/doom-keys.ts +104 -104
  238. package/examples/extensions/doom-overlay/index.ts +74 -74
  239. package/examples/extensions/doom-overlay/wad-finder.ts +51 -51
  240. package/examples/extensions/dynamic-resources/SKILL.md +8 -8
  241. package/examples/extensions/dynamic-resources/dynamic.json +79 -79
  242. package/examples/extensions/dynamic-resources/dynamic.md +5 -5
  243. package/examples/extensions/dynamic-resources/index.ts +15 -15
  244. package/examples/extensions/dynamic-tools.ts +74 -74
  245. package/examples/extensions/event-bus.ts +43 -43
  246. package/examples/extensions/file-trigger.ts +41 -41
  247. package/examples/extensions/git-checkpoint.ts +53 -53
  248. package/examples/extensions/git-merge-and-resolve.ts +115 -115
  249. package/examples/extensions/github-issue-autocomplete.ts +185 -185
  250. package/examples/extensions/gondolin/index.ts +531 -531
  251. package/examples/extensions/gondolin/package-lock.json +185 -185
  252. package/examples/extensions/gondolin/package.json +19 -19
  253. package/examples/extensions/handoff.ts +199 -199
  254. package/examples/extensions/hello.ts +26 -26
  255. package/examples/extensions/hidden-thinking-label.ts +53 -53
  256. package/examples/extensions/inline-bash.ts +94 -94
  257. package/examples/extensions/input-transform-streaming.ts +39 -39
  258. package/examples/extensions/input-transform.ts +43 -43
  259. package/examples/extensions/interactive-shell.ts +196 -196
  260. package/examples/extensions/mac-system-theme.ts +47 -47
  261. package/examples/extensions/message-renderer.ts +59 -59
  262. package/examples/extensions/minimal-mode.ts +426 -426
  263. package/examples/extensions/modal-editor.ts +85 -85
  264. package/examples/extensions/model-status.ts +31 -31
  265. package/examples/extensions/notify.ts +55 -55
  266. package/examples/extensions/overlay-qa-tests.ts +1450 -1450
  267. package/examples/extensions/overlay-test.ts +153 -153
  268. package/examples/extensions/permission-gate.ts +34 -34
  269. package/examples/extensions/pirate.ts +47 -47
  270. package/examples/extensions/plan-mode/README.md +66 -66
  271. package/examples/extensions/plan-mode/index.ts +390 -390
  272. package/examples/extensions/plan-mode/utils.ts +168 -168
  273. package/examples/extensions/preset.ts +436 -436
  274. package/examples/extensions/project-trust.ts +64 -64
  275. package/examples/extensions/prompt-customizer.ts +97 -97
  276. package/examples/extensions/protected-paths.ts +30 -30
  277. package/examples/extensions/provider-payload.ts +18 -18
  278. package/examples/extensions/qna.ts +122 -122
  279. package/examples/extensions/question.ts +285 -285
  280. package/examples/extensions/questionnaire.ts +448 -448
  281. package/examples/extensions/rainbow-editor.ts +88 -88
  282. package/examples/extensions/reload-runtime.ts +37 -37
  283. package/examples/extensions/rpc-demo.ts +118 -118
  284. package/examples/extensions/sandbox/index.ts +321 -321
  285. package/examples/extensions/sandbox/package-lock.json +92 -92
  286. package/examples/extensions/sandbox/package.json +19 -19
  287. package/examples/extensions/send-user-message.ts +97 -97
  288. package/examples/extensions/session-name.ts +27 -27
  289. package/examples/extensions/shutdown-command.ts +63 -63
  290. package/examples/extensions/snake.ts +343 -343
  291. package/examples/extensions/space-invaders.ts +560 -560
  292. package/examples/extensions/ssh.ts +220 -220
  293. package/examples/extensions/status-line.ts +32 -32
  294. package/examples/extensions/structured-output.ts +65 -65
  295. package/examples/extensions/subagent/README.md +175 -175
  296. package/examples/extensions/subagent/agents/planner.md +37 -37
  297. package/examples/extensions/subagent/agents/reviewer.md +35 -35
  298. package/examples/extensions/subagent/agents/scout.md +50 -50
  299. package/examples/extensions/subagent/agents/worker.md +24 -24
  300. package/examples/extensions/subagent/agents.ts +126 -126
  301. package/examples/extensions/subagent/index.ts +1015 -1015
  302. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -10
  303. package/examples/extensions/subagent/prompts/implement.md +10 -10
  304. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -9
  305. package/examples/extensions/summarize.ts +209 -209
  306. package/examples/extensions/system-prompt-header.ts +17 -17
  307. package/examples/extensions/tic-tac-toe.ts +1008 -1008
  308. package/examples/extensions/timed-confirm.ts +70 -70
  309. package/examples/extensions/titlebar-spinner.ts +58 -58
  310. package/examples/extensions/todo.ts +297 -297
  311. package/examples/extensions/tool-override.ts +144 -144
  312. package/examples/extensions/tools.ts +146 -146
  313. package/examples/extensions/trigger-compact.ts +50 -50
  314. package/examples/extensions/truncated-tool.ts +195 -195
  315. package/examples/extensions/widget-placement.ts +9 -9
  316. package/examples/extensions/with-deps/index.ts +32 -32
  317. package/examples/extensions/with-deps/package-lock.json +31 -31
  318. package/examples/extensions/with-deps/package.json +22 -22
  319. package/examples/extensions/working-indicator.ts +123 -123
  320. package/examples/extensions/working-message-test.ts +25 -25
  321. package/examples/rpc-extension-ui.ts +632 -632
  322. package/examples/sdk/01-minimal.ts +26 -26
  323. package/examples/sdk/02-custom-model.ts +53 -53
  324. package/examples/sdk/03-custom-prompt.ts +75 -75
  325. package/examples/sdk/04-skills.ts +55 -55
  326. package/examples/sdk/05-tools.ts +48 -48
  327. package/examples/sdk/06-extensions.ts +99 -99
  328. package/examples/sdk/07-context-files.ts +47 -47
  329. package/examples/sdk/08-prompt-templates.ts +51 -51
  330. package/examples/sdk/09-api-keys-and-oauth.ts +52 -52
  331. package/examples/sdk/10-settings.ts +53 -53
  332. package/examples/sdk/11-sessions.ts +52 -52
  333. package/examples/sdk/12-full-control.ts +79 -79
  334. package/examples/sdk/13-session-runtime.ts +67 -67
  335. package/examples/sdk/README.md +144 -144
  336. package/package.json +3 -2
  337. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/cli.d.ts +0 -3
  338. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/register-bedrock.d.ts +0 -2
  339. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/bun/restore-sandbox-env.d.ts +0 -17
  340. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/args.d.ts +0 -57
  341. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/config-selector.d.ts +0 -16
  342. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/file-processor.d.ts +0 -15
  343. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/initial-message.d.ts +0 -18
  344. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/list-models.d.ts +0 -9
  345. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/project-trust.d.ts +0 -10
  346. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/session-picker.d.ts +0 -10
  347. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli/startup-ui.d.ts +0 -20
  348. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/cli.d.ts +0 -3
  349. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/config.d.ts +0 -96
  350. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-runtime.d.ts +0 -119
  351. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session-services.d.ts +0 -85
  352. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/agent-session.d.ts +0 -620
  353. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-guidance.d.ts +0 -5
  354. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/auth-storage.d.ts +0 -56
  355. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/bash-executor.d.ts +0 -32
  356. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/cache-stats.d.ts +0 -49
  357. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/branch-summarization.d.ts +0 -93
  358. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/compaction.d.ts +0 -128
  359. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/index.d.ts +0 -7
  360. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/compaction/utils.d.ts +0 -38
  361. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/defaults.d.ts +0 -3
  362. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/diagnostics.d.ts +0 -15
  363. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/event-bus.d.ts +0 -9
  364. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/exec.d.ts +0 -29
  365. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/experimental.d.ts +0 -2
  366. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/ansi-to-html.d.ts +0 -22
  367. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/index.d.ts +0 -37
  368. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/export-html/tool-renderer.d.ts +0 -34
  369. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/index.d.ts +0 -12
  370. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/loader.d.ts +0 -23
  371. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/runner.d.ts +0 -171
  372. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/types.d.ts +0 -1261
  373. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/extensions/wrapper.d.ts +0 -20
  374. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/footer-data-provider.d.ts +0 -54
  375. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/http-dispatcher.d.ts +0 -22
  376. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/index.d.ts +0 -13
  377. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/keybindings.d.ts +0 -358
  378. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/messages.d.ts +0 -77
  379. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-config.d.ts +0 -512
  380. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-registry.d.ts +0 -43
  381. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-resolver.d.ts +0 -121
  382. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/model-runtime.d.ts +0 -82
  383. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/models-store.d.ts +0 -17
  384. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/output-guard.d.ts +0 -7
  385. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/package-manager.d.ts +0 -210
  386. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/project-trust.d.ts +0 -15
  387. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/prompt-templates.d.ts +0 -54
  388. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-attribution.d.ts +0 -4
  389. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/provider-composer.d.ts +0 -55
  390. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/radius.d.ts +0 -2
  391. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/remote-catalog-provider.d.ts +0 -5
  392. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resolve-config-value.d.ts +0 -30
  393. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/resource-loader.d.ts +0 -206
  394. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/runtime-credentials.d.ts +0 -15
  395. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/sdk.d.ts +0 -106
  396. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-cwd.d.ts +0 -19
  397. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/session-manager.d.ts +0 -356
  398. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/settings-manager.d.ts +0 -297
  399. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/skills.d.ts +0 -60
  400. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/slash-commands.d.ts +0 -15
  401. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/source-info.d.ts +0 -18
  402. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/system-prompt.d.ts +0 -28
  403. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/telemetry.d.ts +0 -3
  404. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/timings.d.ts +0 -10
  405. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/bash.d.ts +0 -68
  406. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit-diff.d.ts +0 -106
  407. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/edit.d.ts +0 -51
  408. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/file-mutation-queue.d.ts +0 -6
  409. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/find.d.ts +0 -35
  410. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/grep.d.ts +0 -37
  411. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/index.d.ts +0 -40
  412. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/ls.d.ts +0 -37
  413. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/output-accumulator.d.ts +0 -52
  414. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/path-utils.d.ts +0 -10
  415. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/read.d.ts +0 -35
  416. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/render-utils.d.ts +0 -24
  417. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  418. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/truncate.d.ts +0 -70
  419. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/tools/write.d.ts +0 -26
  420. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/trust-manager.d.ts +0 -36
  421. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/core/usage-totals.d.ts +0 -19
  422. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/index.d.ts +0 -3
  423. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/client.d.ts +0 -61
  424. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/huggingface.d.ts +0 -23
  425. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/index.d.ts +0 -3
  426. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/provider.d.ts +0 -10
  427. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/extensions/llama/ui.d.ts +0 -42
  428. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/index.d.ts +0 -35
  429. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/main.d.ts +0 -12
  430. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/migrations.d.ts +0 -33
  431. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/index.d.ts +0 -9
  432. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/armin.d.ts +0 -34
  433. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/assistant-message.d.ts +0 -22
  434. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  435. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  436. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  437. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  438. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/config-selector.d.ts +0 -102
  439. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  440. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  441. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-entry.d.ts +0 -19
  442. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/custom-message.d.ts +0 -20
  443. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  444. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/diff.d.ts +0 -12
  445. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  446. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  447. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-editor.d.ts +0 -22
  448. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-input.d.ts +0 -23
  449. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/extension-selector.d.ts +0 -26
  450. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/first-time-setup.d.ts +0 -25
  451. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/footer.d.ts +0 -32
  452. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/index.d.ts +0 -34
  453. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/keybinding-hints.d.ts +0 -13
  454. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/login-dialog.d.ts +0 -52
  455. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/model-selector.d.ts +0 -54
  456. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/oauth-selector.d.ts +0 -33
  457. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  458. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  459. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/session-selector.d.ts +0 -95
  460. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/settings-selector.d.ts +0 -77
  461. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  462. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  463. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/status-indicator.d.ts +0 -28
  464. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  465. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  466. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  467. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/tree-selector.d.ts +0 -94
  468. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/trust-selector.d.ts +0 -23
  469. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  470. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/user-message.d.ts +0 -14
  471. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  472. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/interactive-mode.d.ts +0 -394
  473. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/model-search.d.ts +0 -12
  474. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme-controller.d.ts +0 -29
  475. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/interactive/theme/theme.d.ts +0 -120
  476. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/print-mode.d.ts +0 -28
  477. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/jsonl.d.ts +0 -17
  478. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-client.d.ts +0 -246
  479. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-mode.d.ts +0 -20
  480. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/modes/rpc/rpc-types.d.ts +0 -457
  481. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/package-manager-cli.d.ts +0 -8
  482. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/rpc-entry.d.ts +0 -3
  483. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/ansi.d.ts +0 -2
  484. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/changelog.d.ts +0 -22
  485. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/child-process.d.ts +0 -18
  486. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-image.d.ts +0 -11
  487. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard-native.d.ts +0 -11
  488. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/clipboard.d.ts +0 -4
  489. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/deprecation.d.ts +0 -4
  490. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/exif-orientation.d.ts +0 -5
  491. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/frontmatter.d.ts +0 -8
  492. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/fs-watch.d.ts +0 -5
  493. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/git.d.ts +0 -26
  494. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/html.d.ts +0 -7
  495. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-convert.d.ts +0 -10
  496. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-process.d.ts +0 -18
  497. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-core.d.ts +0 -30
  498. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize-worker.d.ts +0 -2
  499. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/image-resize.d.ts +0 -16
  500. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/json.d.ts +0 -3
  501. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/mime.d.ts +0 -3
  502. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/open-browser.d.ts +0 -9
  503. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/paths.d.ts +0 -31
  504. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/photon.d.ts +0 -21
  505. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/pi-user-agent.d.ts +0 -2
  506. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/shell.d.ts +0 -31
  507. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/sleep.d.ts +0 -5
  508. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/syntax-highlight.d.ts +0 -12
  509. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/tools-manager.d.ts +0 -3
  510. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/version-check.d.ts +0 -15
  511. package/dist/extensions/pi-subagents/test/fixtures/pi-coding-agent-shim/dist/utils/windows-self-update.d.ts +0 -3
@@ -1,362 +1,362 @@
1
- # Phase 3 Plan — Optional Task-Aware Advisory Routing
2
-
3
- ## Decision
4
-
5
- Use **`subagent({ action: "list", task?, agentScope? })`** as the only Phase 3 advisory surface.
6
-
7
- It is the smallest robust design because `task` and `action:"list"` already exist in `SubagentParams`, list already discovers the effective runnable agent set, and it already emits advisory text. This adds no launch path, RPC method, preflight-contract field, persistence, metadata schema, or new action.
8
-
9
- ### Alternatives rejected
10
-
11
- | Option | Decision | Reason |
12
- |---|---|---|
13
- | Extend `action:"list"` with optional `task` | **Select** | Existing schema/action/output surface; model already instructed to call list; no API-version changes. |
14
- | Add `action:"recommend"` or `action:"route"` | Reject | Adds action registry, dispatch, child-safe policy, docs, and a second advisory surface without a functional benefit. |
15
- | Add generic role aliases such as `writer`/`reviewer` as runnable aliases | Reject | Would alter `resolveAgentName` ambiguity/precedence behavior and can collide with user/package aliases. Existing `acceptanceRole` plus established name heuristics are sufficient. |
16
- | Add recommendation to launch preflight/RPC | Reject | Would require public contract/protocol version changes and digest compatibility work for advisory-only behavior. |
17
-
18
- ## Public behavior and API
19
-
20
- ### Supported call
21
-
22
- ```ts
23
- subagent({
24
- action: "list",
25
- task: "Inspect the authentication flow and report findings only.",
26
- agentScope: "both", // optional; existing behavior
27
- })
28
- ```
29
-
30
- - `task` remains optional.
31
- - With no task, or a whitespace-only task, preserve current list output and behavior.
32
- - With a non-empty task, append a text-only advisory section after the existing agents/chains/proactive-skill/diagnostic sections.
33
- - The caller must make a separate explicit execution call to launch anything:
34
-
35
- ```ts
36
- subagent({ agent: "architect", task: "..." })
37
- ```
38
-
39
- ### Output shape
40
-
41
- Keep the existing management result shape unchanged:
42
-
43
- ```ts
44
- {
45
- content: [{ type: "text", text: "<existing list text plus optional advisory>" }],
46
- isError: false,
47
- details: { mode: "management", results: [] }
48
- }
49
- ```
50
-
51
- Do **not** add a `recommendations` field to `Details`, a result-content JSON schema, telemetry payload, or launch contract.
52
-
53
- For a safe recommendation, append exactly this conceptual structure:
54
-
55
- ```text
56
- Task-aware advisory routing:
57
- - Intent: implementation | read-only
58
- - Recommended: <canonical runtime agent name> (<source>)
59
- - Reason: <declared/inferred role and safety basis>
60
- - Advisory only: no subagent was launched. To proceed, explicitly call subagent with this canonical agent name and the task.
61
- ```
62
-
63
- For unclear intent or no safe candidate:
64
-
65
- ```text
66
- Task-aware advisory routing:
67
- - Intent: unknown | implementation | read-only
68
- - Recommendation: none
69
- - Next: <clarification or configuration/capability explanation>
70
- - Advisory only: no subagent was launched.
71
- ```
72
-
73
- Never echo the complete task in the response; this avoids enlarging output and reflecting untrusted text.
74
-
75
- ## Eligibility and deterministic routing algorithm
76
-
77
- Create a pure recommender that receives the already discovered effective agents and current capability ceiling. It must not read files, mutate discovery results, resolve aliases, modify params, or launch agents.
78
-
79
- 1. **Normalize task**
80
- - `task.trim() === ""` means no advisory section.
81
- - Otherwise classify the task with `classifyTaskMutationIntent("builder", task)`.
82
- - This deliberately uses the existing broad writer grammar as a task-level signal:
83
- - `implementation`
84
- - `read-only`
85
- - `unknown`
86
-
87
- 2. **Use only effective executable candidates**
88
- - Start from the same `scopedAgents` produced by:
89
- `mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package)`.
90
- - Exclude `agent.disabled === true`.
91
- - Exclude agents denied by `isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling)`.
92
- - This preserves project > user > package > builtin collision resolution already performed by discovery/selection.
93
- - Do not consider chains in Phase 3.
94
- - Do not inspect or route individual chain steps/templates.
95
-
96
- 3. **Determine candidate role without adding aliases or metadata**
97
- - Reuse the existing `acceptanceRole` field where set:
98
- - `"writer"` is a writer candidate.
99
- - `"read-only"` is a read-only candidate.
100
- - When it is unset, reuse the existing acceptance name heuristics:
101
- - names matching `builder` are writer candidates;
102
- - names matching `architect|commentator|explorer|recapper|researcher|analyst` are read-only candidates.
103
- - Refactor this shared heuristic into one exported helper so advisory routing and acceptance inference cannot drift.
104
- - Alias values are never used as role signals. They remain input-only name resolution sugar.
105
-
106
- 4. **Apply conservative write safety**
107
- - Reuse `agentHasWriteTools` from `src/agents/agent-memory.ts`.
108
- - For an `implementation` task, retain only writer-role candidates with write capability.
109
- - If `capabilityCeiling.allowedTools` is present, retain a writer only when its allowlist includes at least one recognized writer tool: `edit`, `write`, or `bash`.
110
- - For a `read-only` task, retain only read-only-role candidates for which `agentHasWriteTools(agent) === false`.
111
- - This is intentionally conservative: an agent with unset tools or `bash` is not recommended as the safe read-only choice.
112
- - Do not claim that arbitrary MCP/custom tools are provably non-mutating; actual launch preflight remains authoritative.
113
-
114
- 5. **Select or recover**
115
- - For `unknown`, return no recommendation and request clarification: whether the task is read-only analysis/review or implementation allowed to edit files.
116
- - For a known intent with zero safe candidates, return no recommendation and explain the missing role/capability condition. Point to the executable/restricted sections already emitted by list.
117
- - Sort valid candidates deterministically:
118
- 1. source precedence: `project`, `user`, `package`, `builtin`;
119
- 2. explicit `acceptanceRole` before inferred name heuristic;
120
- 3. canonical runtime `agent.name` ascending with a fixed lexical comparator.
121
- - Recommend `agent.name` only—the canonical runtime name accepted by execution. Never output an alias as the launch target.
122
-
123
- 6. **Preserve user control**
124
- - Do not write to `params.agent`.
125
- - Do not touch `canonicalizeExecutionParams`.
126
- - Do not invoke `resolveAgentName` for a generic role.
127
- - An explicit later execution request remains authoritative, including existing canonical-name/alias handling and its ambiguity errors.
128
- - Existing preflight and execution checks remain the final enforcement point for agent/tool restrictions.
129
-
130
- ## Implementation tasks
131
-
132
- ### Task 1 — Centralize the existing role heuristic
133
-
134
- **Discovery**
135
- - Inspect `src/extensions/pi-subagents/src/runs/shared/task-intent.ts`.
136
- - Inspect `src/extensions/pi-subagents/src/runs/shared/acceptance.ts:76-134`.
137
- - Confirm the current reviewer-name and builder-name regex behavior before changing it.
138
-
139
- **Files**
140
- - Modify `src/extensions/pi-subagents/src/runs/shared/task-intent.ts`.
141
- - Modify `src/extensions/pi-subagents/src/runs/shared/acceptance.ts`.
142
- - Update `src/extensions/pi-subagents/test/unit/task-intent.test.ts`.
143
- - Existing `test/unit/acceptance.test.ts` is the regression suite; only alter it if current behavior needs an explicit regression assertion.
144
-
145
- **Change**
146
- - Add and export a narrow helper such as:
147
- ```ts
148
- resolveAgentRoutingRole(
149
- agentName: string,
150
- acceptanceRole?: AcceptanceRole,
151
- ): "writer" | "read-only" | undefined
152
- ```
153
- - Preserve current acceptance semantics exactly:
154
- - declared `acceptanceRole` wins;
155
- - otherwise builder-name heuristic means writer;
156
- - otherwise existing reviewer-name heuristic means read-only;
157
- - otherwise undefined.
158
- - Refactor `inferLevel` to use this helper in place of its duplicated `readOnlyAgent`/builder-name checks.
159
- - Do not change task mutation grammar, acceptance levels, evidence requirements, or `acceptanceRole` schema.
160
-
161
- **Verification**
162
- - Declared writer/read-only roles still override name inference.
163
- - `builder` remains a writer and `commentator` remains reviewer-style.
164
- - Existing acceptance tests retain their current levels/reasons.
165
-
166
- ### Task 2 — Add the pure advisory recommender
167
-
168
- **Discovery**
169
- - Inspect:
170
- - `src/extensions/pi-subagents/src/agents/proactive-skills.ts` for pure-function/formatter conventions.
171
- - `src/extensions/pi-subagents/src/agents/agent-memory.ts:33-39` for `agentHasWriteTools`.
172
- - `src/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts:300-315` for allowlist checks.
173
- - `src/extensions/pi-subagents/src/agents/agent-selection.ts` for effective-set precedence.
174
- - Do not add frontmatter fields, settings fields, tags, or role aliases.
175
-
176
- **Files**
177
- - Add `src/extensions/pi-subagents/src/agents/task-aware-routing.ts`.
178
- - Add `src/extensions/pi-subagents/test/unit/task-aware-routing.test.ts`.
179
-
180
- **Change**
181
- - Export a small typed pure API, for example:
182
- - `recommendTaskAwareAgent({ task, agents, capabilityCeiling })`
183
- - `formatTaskAwareAgentRecommendation(recommendation)`
184
- - Keep returned data internal to the extension; do not add it to public `Details`.
185
- - Implement the algorithm above, including:
186
- - empty-task no-op;
187
- - task intent;
188
- - disabled and capability-agent filtering;
189
- - conservative role/write-tool matching;
190
- - capability `allowedTools` writer check;
191
- - deterministic ordering;
192
- - unknown/no-candidate recovery text.
193
- - Include source, canonical agent name, role basis (`declared` or `inferred`), and reason in the returned recommendation object so formatting never reimplements selection logic.
194
- - Do not access aliases, chains, filesystem discovery, executor APIs, RPC, preflight, telemetry, or user settings in this module.
195
-
196
- **Verification**
197
- - Implementation task recommends a canonical writer, never a reviewer.
198
- - Read-only task recommends a role-compatible agent without known write tools, never a writer.
199
- - Unknown intent yields no recommendation and a clarification message.
200
- - Disabled agents and agents outside `allowedAgents` cannot be selected.
201
- - A ceiling without `edit`, `write`, or `bash` prevents a writer recommendation.
202
- - A project candidate outranks an otherwise-equivalent user/package/builtin candidate.
203
- - Equal candidates sort by canonical name.
204
- - An alias such as `developer` is never output as the recommended launch name.
205
-
206
- ### Task 3 — Attach advice only to list management output
207
-
208
- **Discovery**
209
- - Inspect `handleList` in `src/extensions/pi-subagents/src/agents/agent-management.ts:675-714`.
210
- - Inspect management dispatch at `handleManagementAction`.
211
- - Inspect the executor management dispatch at `subagent-executor.ts:4064-4083` to confirm no execution path needs modification.
212
-
213
- **Files**
214
- - Modify `src/extensions/pi-subagents/src/agents/agent-management.ts`.
215
- - Modify `src/extensions/pi-subagents/src/extension/schemas.ts`.
216
- - Update `src/extensions/pi-subagents/test/unit/agent-management.test.ts`.
217
- - Update `src/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts`.
218
- - Update `src/extensions/pi-subagents/test/unit/schemas.test.ts`.
219
- - Update `src/extensions/pi-subagents/test/unit/index-child-registration.test.ts`.
220
-
221
- **Change**
222
- - Extend internal `ManagementParams` with `task?: string`.
223
- - In `handleList`, reuse its already computed `agents` array, `capabilityCeiling`, and scope-specific effective discovery.
224
- - When `params.task?.trim()` is non-empty, call the new pure recommender and append its formatter lines after proactive-skill suggestions and before chain diagnostics.
225
- - Leave no-task list output structurally unchanged.
226
- - Update the top-level `task` schema description to state that it is a single-execution task **or an optional advisory intent for `action:"list"`; it never launches work in management mode**.
227
- - Keep `action` as a free string schema; do not add an action enum.
228
- - Keep `SUBAGENT_ACTIONS`, `ManagementAction`, mutating-action gates, and executor dispatch unchanged.
229
-
230
- **Verification**
231
- - `handleManagementAction("list", { task: "Implement the fix" }, ctx)` returns management details with `results: []`, no error, and an advisory recommendation.
232
- - `handleManagementAction("list", { task: "Review only; do not edit files" }, ctx)` emits a read-only recommendation.
233
- - `handleManagementAction("list", { task: "Look into this" }, ctx)` emits no agent name recommendation and asks for intent clarification.
234
- - `handleManagementAction("list", {}, ctx)` retains current executable/restricted/chains/proactive output.
235
- - Existing restricted-agent list behavior remains; a restricted builder must not be recommended.
236
- - The fanout-child registration test calls list with a task and confirms it remains a permitted read-only management action.
237
-
238
- ### Task 4 — Document explicit-only use
239
-
240
- **Discovery**
241
- - Inspect both built-in descriptions in `src/extensions/pi-subagents/src/extension/tool-description.ts`.
242
- - Inspect management examples and parameter reference in `src/extensions/pi-subagents/README.md:1377-1442`.
243
-
244
- **Files**
245
- - Modify `src/extensions/pi-subagents/src/extension/tool-description.ts`.
246
- - Modify `src/extensions/pi-subagents/README.md`.
247
- - Update `src/extensions/pi-subagents/test/unit/tool-description.test.ts`.
248
-
249
- **Change**
250
- - In full and compact descriptions:
251
- - show `{ action: "list", task: "..." }` as optional advice;
252
- - state that it only recommends and never launches;
253
- - state the caller must explicitly execute the returned canonical agent.
254
- - Adjust “management action fields” wording so list’s optional task is documented as the sole exception.
255
- - Add a README management example and revise the `task` parameter reference.
256
- - Do not change custom-description loading behavior; mandatory safety guidance naturally remains appended to custom descriptions.
257
-
258
- **Verification**
259
- - Full and compact descriptions both mention task-aware list advice and explicit launch.
260
- - Existing safety guidance, proactive-skill text, and no-hardcoded-builtin-name assertions remain valid.
261
- - README does not imply automatic routing or execution.
262
-
263
- ## Compatibility and dependency impact
264
-
265
- - No dependency changes.
266
- - No new config/settings schema.
267
- - No agent frontmatter changes.
268
- - No new aliases.
269
- - No new tool action.
270
- - No RPC version bump.
271
- - No preflight contract version/digest change.
272
- - No delegation API version change.
273
- - No telemetry: the extension has no matching event/metric convention for advisory list reads, and telemetry would add privacy and API surface without an execution decision.
274
-
275
- ## Commands
276
-
277
- Run from `src/extensions/pi-subagents`:
278
-
279
- ```bash
280
- node --experimental-strip-types --test \
281
- test/unit/task-intent.test.ts \
282
- test/unit/acceptance.test.ts \
283
- test/unit/task-aware-routing.test.ts \
284
- test/unit/agent-management.test.ts \
285
- test/unit/capability-ceiling-agent-allowlist.test.ts \
286
- test/unit/schemas.test.ts \
287
- test/unit/tool-description.test.ts \
288
- test/unit/index-child-registration.test.ts
289
- npm run test:unit
290
- npm run test:integration
291
- npm run test:all
292
- ```
293
-
294
- ## Acceptance criteria
295
-
296
- 1. `action:"list"` accepts optional `task` advice without creating a new action or schema object.
297
- 2. Recommendations use only the dynamically discovered, effective, enabled, capability-allowed set.
298
- 3. Project/user/package/builtin precedence, canonical names, and existing alias resolution remain intact.
299
- 4. A read-only task is never recommended to a known writer; an implementation task is never recommended to a read-only agent.
300
- 5. Unknown intent and missing safe candidates produce recovery guidance, not guesses.
301
- 6. List advice never launches, schedules, persists, mutates params, or changes executor agent selection.
302
- 7. Existing list, acceptance, capability-ceiling, and child-safe management behavior pass regression tests.
303
- 8. No metadata/tag schema, dependency, protocol, telemetry, or contract version is added.
304
-
305
- ## Risks and rollback
306
-
307
- - **Heuristic limitation:** task wording and name-based roles remain heuristic. Mitigation: no recommendation for unknown intent and existing `acceptanceRole` is preferred when configured.
308
- - **Tool limitation:** `agentHasWriteTools` only recognizes core write tools; custom/MCP tools cannot be proven read-only. Mitigation: conservative filtering and explicit-launch/preflight enforcement.
309
- - **Usability limitation:** a restrictive `allowedTools` ceiling can yield no writer recommendation. This is safer than recommending a writer that cannot write.
310
- - **Rollback:** remove the `handleList` call/formatting and new routing module; leave the shared role-helper refactor only if acceptance behavior is verified identical. No stored data, API version, or migration requires cleanup.
311
-
312
- ## Review findings
313
-
314
- - **No blocker** — `src/extensions/pi-subagents/src/agents/agent-management.ts:675-714` already owns advisory list output and receives the effective executable/capability-filtered agent set.
315
- - **No blocker** — `src/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts:4078-4083` routes management actions without invoking execution; leaving it unchanged preserves explicit-only launch behavior.
316
- - **Finding (medium)** — `src/extensions/pi-subagents/src/runs/shared/acceptance.ts:89-101` duplicates role-name heuristics that a recommender would otherwise need to copy. Centralize the existing heuristic before using it for routing to prevent behavior drift.
317
- - **Finding (medium)** — `src/extensions/pi-subagents/src/agents/agent-memory.ts:33-39` treats unset tools as write-capable and treats `bash` as write-capable. Advisory routing must retain this conservative interpretation for read-only recommendations.
318
-
319
- ```acceptance-report
320
- {
321
- "criteriaSatisfied": [
322
- {
323
- "id": "criterion-1",
324
- "status": "satisfied",
325
- "evidence": "Verified concrete Phase 3 ownership and constraints in src/extensions/pi-subagents/src/agents/agent-management.ts:675-714, agents/agent-selection.ts, agents/agents.ts:477-510, runs/shared/task-intent.ts, runs/shared/acceptance.ts:76-134, runs/shared/capability-ceiling.ts:300-315, extension/schemas.ts:263-349, extension/tool-description.ts, and targeted unit tests."
326
- }
327
- ],
328
- "changedFiles": [],
329
- "testsAddedOrUpdated": [],
330
- "commandsRun": [
331
- {
332
- "command": "Targeted read/grep inspection of Phase 3 source and tests",
333
- "result": "passed",
334
- "summary": "Verified list discovery, precedence, alias handling, capability ceilings, task-intent/acceptance heuristics, tool safety helper, schema, descriptions, and test seams."
335
- },
336
- {
337
- "command": "npm run test:unit",
338
- "result": "not-run",
339
- "summary": "Planning-only task; no implementation was made."
340
- }
341
- ],
342
- "validationOutput": [
343
- "No code changes were made.",
344
- "Selected extension of action:'list' with optional task because it avoids action, RPC, preflight-contract, digest, metadata, and dependency changes."
345
- ],
346
- "residualRisks": [
347
- "Task and name-role classification is heuristic; unknown intent must remain non-recommending.",
348
- "The existing core write-tool classifier cannot prove arbitrary MCP/custom tools are non-mutating.",
349
- "A restrictive allowedTools ceiling can intentionally result in no writer recommendation."
350
- ],
351
- "noStagedFiles": true,
352
- "diffSummary": "No diff; implementation-ready Phase 3 plan only.",
353
- "reviewFindings": [
354
- "no blocker: agent-management.ts:675-714 is the existing advisory list owner.",
355
- "medium: acceptance.ts:89-101 duplicates role heuristics; centralize the existing rule before advisory routing uses it.",
356
- "medium: agent-memory.ts:33-39 provides a conservative core-tool write signal and should be reused rather than reimplemented."
357
- ],
358
- "manualNotes": "Phase 3 deliberately remains advisory-only. No automatic execution, generic role aliases, telemetry, metadata schema, RPC/preflight surface, or contract-version changes are planned."
359
- }
360
- ```
361
-
1
+ # Phase 3 Plan — Optional Task-Aware Advisory Routing
2
+
3
+ ## Decision
4
+
5
+ Use **`subagent({ action: "list", task?, agentScope? })`** as the only Phase 3 advisory surface.
6
+
7
+ It is the smallest robust design because `task` and `action:"list"` already exist in `SubagentParams`, list already discovers the effective runnable agent set, and it already emits advisory text. This adds no launch path, RPC method, preflight-contract field, persistence, metadata schema, or new action.
8
+
9
+ ### Alternatives rejected
10
+
11
+ | Option | Decision | Reason |
12
+ |---|---|---|
13
+ | Extend `action:"list"` with optional `task` | **Select** | Existing schema/action/output surface; model already instructed to call list; no API-version changes. |
14
+ | Add `action:"recommend"` or `action:"route"` | Reject | Adds action registry, dispatch, child-safe policy, docs, and a second advisory surface without a functional benefit. |
15
+ | Add generic role aliases such as `writer`/`reviewer` as runnable aliases | Reject | Would alter `resolveAgentName` ambiguity/precedence behavior and can collide with user/package aliases. Existing `acceptanceRole` plus established name heuristics are sufficient. |
16
+ | Add recommendation to launch preflight/RPC | Reject | Would require public contract/protocol version changes and digest compatibility work for advisory-only behavior. |
17
+
18
+ ## Public behavior and API
19
+
20
+ ### Supported call
21
+
22
+ ```ts
23
+ subagent({
24
+ action: "list",
25
+ task: "Inspect the authentication flow and report findings only.",
26
+ agentScope: "both", // optional; existing behavior
27
+ })
28
+ ```
29
+
30
+ - `task` remains optional.
31
+ - With no task, or a whitespace-only task, preserve current list output and behavior.
32
+ - With a non-empty task, append a text-only advisory section after the existing agents/chains/proactive-skill/diagnostic sections.
33
+ - The caller must make a separate explicit execution call to launch anything:
34
+
35
+ ```ts
36
+ subagent({ agent: "architect", task: "..." })
37
+ ```
38
+
39
+ ### Output shape
40
+
41
+ Keep the existing management result shape unchanged:
42
+
43
+ ```ts
44
+ {
45
+ content: [{ type: "text", text: "<existing list text plus optional advisory>" }],
46
+ isError: false,
47
+ details: { mode: "management", results: [] }
48
+ }
49
+ ```
50
+
51
+ Do **not** add a `recommendations` field to `Details`, a result-content JSON schema, telemetry payload, or launch contract.
52
+
53
+ For a safe recommendation, append exactly this conceptual structure:
54
+
55
+ ```text
56
+ Task-aware advisory routing:
57
+ - Intent: implementation | read-only
58
+ - Recommended: <canonical runtime agent name> (<source>)
59
+ - Reason: <declared/inferred role and safety basis>
60
+ - Advisory only: no subagent was launched. To proceed, explicitly call subagent with this canonical agent name and the task.
61
+ ```
62
+
63
+ For unclear intent or no safe candidate:
64
+
65
+ ```text
66
+ Task-aware advisory routing:
67
+ - Intent: unknown | implementation | read-only
68
+ - Recommendation: none
69
+ - Next: <clarification or configuration/capability explanation>
70
+ - Advisory only: no subagent was launched.
71
+ ```
72
+
73
+ Never echo the complete task in the response; this avoids enlarging output and reflecting untrusted text.
74
+
75
+ ## Eligibility and deterministic routing algorithm
76
+
77
+ Create a pure recommender that receives the already discovered effective agents and current capability ceiling. It must not read files, mutate discovery results, resolve aliases, modify params, or launch agents.
78
+
79
+ 1. **Normalize task**
80
+ - `task.trim() === ""` means no advisory section.
81
+ - Otherwise classify the task with `classifyTaskMutationIntent("builder", task)`.
82
+ - This deliberately uses the existing broad writer grammar as a task-level signal:
83
+ - `implementation`
84
+ - `read-only`
85
+ - `unknown`
86
+
87
+ 2. **Use only effective executable candidates**
88
+ - Start from the same `scopedAgents` produced by:
89
+ `mergeAgentsForScope(scope, d.user, d.project, d.builtin, d.package)`.
90
+ - Exclude `agent.disabled === true`.
91
+ - Exclude agents denied by `isAgentAllowedByCapabilityCeiling(agent.name, capabilityCeiling)`.
92
+ - This preserves project > user > package > builtin collision resolution already performed by discovery/selection.
93
+ - Do not consider chains in Phase 3.
94
+ - Do not inspect or route individual chain steps/templates.
95
+
96
+ 3. **Determine candidate role without adding aliases or metadata**
97
+ - Reuse the existing `acceptanceRole` field where set:
98
+ - `"writer"` is a writer candidate.
99
+ - `"read-only"` is a read-only candidate.
100
+ - When it is unset, reuse the existing acceptance name heuristics:
101
+ - names matching `builder` are writer candidates;
102
+ - names matching `architect|commentator|explorer|recapper|researcher|analyst` are read-only candidates.
103
+ - Refactor this shared heuristic into one exported helper so advisory routing and acceptance inference cannot drift.
104
+ - Alias values are never used as role signals. They remain input-only name resolution sugar.
105
+
106
+ 4. **Apply conservative write safety**
107
+ - Reuse `agentHasWriteTools` from `src/agents/agent-memory.ts`.
108
+ - For an `implementation` task, retain only writer-role candidates with write capability.
109
+ - If `capabilityCeiling.allowedTools` is present, retain a writer only when its allowlist includes at least one recognized writer tool: `edit`, `write`, or `bash`.
110
+ - For a `read-only` task, retain only read-only-role candidates for which `agentHasWriteTools(agent) === false`.
111
+ - This is intentionally conservative: an agent with unset tools or `bash` is not recommended as the safe read-only choice.
112
+ - Do not claim that arbitrary MCP/custom tools are provably non-mutating; actual launch preflight remains authoritative.
113
+
114
+ 5. **Select or recover**
115
+ - For `unknown`, return no recommendation and request clarification: whether the task is read-only analysis/review or implementation allowed to edit files.
116
+ - For a known intent with zero safe candidates, return no recommendation and explain the missing role/capability condition. Point to the executable/restricted sections already emitted by list.
117
+ - Sort valid candidates deterministically:
118
+ 1. source precedence: `project`, `user`, `package`, `builtin`;
119
+ 2. explicit `acceptanceRole` before inferred name heuristic;
120
+ 3. canonical runtime `agent.name` ascending with a fixed lexical comparator.
121
+ - Recommend `agent.name` only—the canonical runtime name accepted by execution. Never output an alias as the launch target.
122
+
123
+ 6. **Preserve user control**
124
+ - Do not write to `params.agent`.
125
+ - Do not touch `canonicalizeExecutionParams`.
126
+ - Do not invoke `resolveAgentName` for a generic role.
127
+ - An explicit later execution request remains authoritative, including existing canonical-name/alias handling and its ambiguity errors.
128
+ - Existing preflight and execution checks remain the final enforcement point for agent/tool restrictions.
129
+
130
+ ## Implementation tasks
131
+
132
+ ### Task 1 — Centralize the existing role heuristic
133
+
134
+ **Discovery**
135
+ - Inspect `src/extensions/pi-subagents/src/runs/shared/task-intent.ts`.
136
+ - Inspect `src/extensions/pi-subagents/src/runs/shared/acceptance.ts:76-134`.
137
+ - Confirm the current reviewer-name and builder-name regex behavior before changing it.
138
+
139
+ **Files**
140
+ - Modify `src/extensions/pi-subagents/src/runs/shared/task-intent.ts`.
141
+ - Modify `src/extensions/pi-subagents/src/runs/shared/acceptance.ts`.
142
+ - Update `src/extensions/pi-subagents/test/unit/task-intent.test.ts`.
143
+ - Existing `test/unit/acceptance.test.ts` is the regression suite; only alter it if current behavior needs an explicit regression assertion.
144
+
145
+ **Change**
146
+ - Add and export a narrow helper such as:
147
+ ```ts
148
+ resolveAgentRoutingRole(
149
+ agentName: string,
150
+ acceptanceRole?: AcceptanceRole,
151
+ ): "writer" | "read-only" | undefined
152
+ ```
153
+ - Preserve current acceptance semantics exactly:
154
+ - declared `acceptanceRole` wins;
155
+ - otherwise builder-name heuristic means writer;
156
+ - otherwise existing reviewer-name heuristic means read-only;
157
+ - otherwise undefined.
158
+ - Refactor `inferLevel` to use this helper in place of its duplicated `readOnlyAgent`/builder-name checks.
159
+ - Do not change task mutation grammar, acceptance levels, evidence requirements, or `acceptanceRole` schema.
160
+
161
+ **Verification**
162
+ - Declared writer/read-only roles still override name inference.
163
+ - `builder` remains a writer and `commentator` remains reviewer-style.
164
+ - Existing acceptance tests retain their current levels/reasons.
165
+
166
+ ### Task 2 — Add the pure advisory recommender
167
+
168
+ **Discovery**
169
+ - Inspect:
170
+ - `src/extensions/pi-subagents/src/agents/proactive-skills.ts` for pure-function/formatter conventions.
171
+ - `src/extensions/pi-subagents/src/agents/agent-memory.ts:33-39` for `agentHasWriteTools`.
172
+ - `src/extensions/pi-subagents/src/runs/shared/capability-ceiling.ts:300-315` for allowlist checks.
173
+ - `src/extensions/pi-subagents/src/agents/agent-selection.ts` for effective-set precedence.
174
+ - Do not add frontmatter fields, settings fields, tags, or role aliases.
175
+
176
+ **Files**
177
+ - Add `src/extensions/pi-subagents/src/agents/task-aware-routing.ts`.
178
+ - Add `src/extensions/pi-subagents/test/unit/task-aware-routing.test.ts`.
179
+
180
+ **Change**
181
+ - Export a small typed pure API, for example:
182
+ - `recommendTaskAwareAgent({ task, agents, capabilityCeiling })`
183
+ - `formatTaskAwareAgentRecommendation(recommendation)`
184
+ - Keep returned data internal to the extension; do not add it to public `Details`.
185
+ - Implement the algorithm above, including:
186
+ - empty-task no-op;
187
+ - task intent;
188
+ - disabled and capability-agent filtering;
189
+ - conservative role/write-tool matching;
190
+ - capability `allowedTools` writer check;
191
+ - deterministic ordering;
192
+ - unknown/no-candidate recovery text.
193
+ - Include source, canonical agent name, role basis (`declared` or `inferred`), and reason in the returned recommendation object so formatting never reimplements selection logic.
194
+ - Do not access aliases, chains, filesystem discovery, executor APIs, RPC, preflight, telemetry, or user settings in this module.
195
+
196
+ **Verification**
197
+ - Implementation task recommends a canonical writer, never a reviewer.
198
+ - Read-only task recommends a role-compatible agent without known write tools, never a writer.
199
+ - Unknown intent yields no recommendation and a clarification message.
200
+ - Disabled agents and agents outside `allowedAgents` cannot be selected.
201
+ - A ceiling without `edit`, `write`, or `bash` prevents a writer recommendation.
202
+ - A project candidate outranks an otherwise-equivalent user/package/builtin candidate.
203
+ - Equal candidates sort by canonical name.
204
+ - An alias such as `developer` is never output as the recommended launch name.
205
+
206
+ ### Task 3 — Attach advice only to list management output
207
+
208
+ **Discovery**
209
+ - Inspect `handleList` in `src/extensions/pi-subagents/src/agents/agent-management.ts:675-714`.
210
+ - Inspect management dispatch at `handleManagementAction`.
211
+ - Inspect the executor management dispatch at `subagent-executor.ts:4064-4083` to confirm no execution path needs modification.
212
+
213
+ **Files**
214
+ - Modify `src/extensions/pi-subagents/src/agents/agent-management.ts`.
215
+ - Modify `src/extensions/pi-subagents/src/extension/schemas.ts`.
216
+ - Update `src/extensions/pi-subagents/test/unit/agent-management.test.ts`.
217
+ - Update `src/extensions/pi-subagents/test/unit/capability-ceiling-agent-allowlist.test.ts`.
218
+ - Update `src/extensions/pi-subagents/test/unit/schemas.test.ts`.
219
+ - Update `src/extensions/pi-subagents/test/unit/index-child-registration.test.ts`.
220
+
221
+ **Change**
222
+ - Extend internal `ManagementParams` with `task?: string`.
223
+ - In `handleList`, reuse its already computed `agents` array, `capabilityCeiling`, and scope-specific effective discovery.
224
+ - When `params.task?.trim()` is non-empty, call the new pure recommender and append its formatter lines after proactive-skill suggestions and before chain diagnostics.
225
+ - Leave no-task list output structurally unchanged.
226
+ - Update the top-level `task` schema description to state that it is a single-execution task **or an optional advisory intent for `action:"list"`; it never launches work in management mode**.
227
+ - Keep `action` as a free string schema; do not add an action enum.
228
+ - Keep `SUBAGENT_ACTIONS`, `ManagementAction`, mutating-action gates, and executor dispatch unchanged.
229
+
230
+ **Verification**
231
+ - `handleManagementAction("list", { task: "Implement the fix" }, ctx)` returns management details with `results: []`, no error, and an advisory recommendation.
232
+ - `handleManagementAction("list", { task: "Review only; do not edit files" }, ctx)` emits a read-only recommendation.
233
+ - `handleManagementAction("list", { task: "Look into this" }, ctx)` emits no agent name recommendation and asks for intent clarification.
234
+ - `handleManagementAction("list", {}, ctx)` retains current executable/restricted/chains/proactive output.
235
+ - Existing restricted-agent list behavior remains; a restricted builder must not be recommended.
236
+ - The fanout-child registration test calls list with a task and confirms it remains a permitted read-only management action.
237
+
238
+ ### Task 4 — Document explicit-only use
239
+
240
+ **Discovery**
241
+ - Inspect both built-in descriptions in `src/extensions/pi-subagents/src/extension/tool-description.ts`.
242
+ - Inspect management examples and parameter reference in `src/extensions/pi-subagents/README.md:1377-1442`.
243
+
244
+ **Files**
245
+ - Modify `src/extensions/pi-subagents/src/extension/tool-description.ts`.
246
+ - Modify `src/extensions/pi-subagents/README.md`.
247
+ - Update `src/extensions/pi-subagents/test/unit/tool-description.test.ts`.
248
+
249
+ **Change**
250
+ - In full and compact descriptions:
251
+ - show `{ action: "list", task: "..." }` as optional advice;
252
+ - state that it only recommends and never launches;
253
+ - state the caller must explicitly execute the returned canonical agent.
254
+ - Adjust “management action fields” wording so list’s optional task is documented as the sole exception.
255
+ - Add a README management example and revise the `task` parameter reference.
256
+ - Do not change custom-description loading behavior; mandatory safety guidance naturally remains appended to custom descriptions.
257
+
258
+ **Verification**
259
+ - Full and compact descriptions both mention task-aware list advice and explicit launch.
260
+ - Existing safety guidance, proactive-skill text, and no-hardcoded-builtin-name assertions remain valid.
261
+ - README does not imply automatic routing or execution.
262
+
263
+ ## Compatibility and dependency impact
264
+
265
+ - No dependency changes.
266
+ - No new config/settings schema.
267
+ - No agent frontmatter changes.
268
+ - No new aliases.
269
+ - No new tool action.
270
+ - No RPC version bump.
271
+ - No preflight contract version/digest change.
272
+ - No delegation API version change.
273
+ - No telemetry: the extension has no matching event/metric convention for advisory list reads, and telemetry would add privacy and API surface without an execution decision.
274
+
275
+ ## Commands
276
+
277
+ Run from `src/extensions/pi-subagents`:
278
+
279
+ ```bash
280
+ node --experimental-strip-types --test \
281
+ test/unit/task-intent.test.ts \
282
+ test/unit/acceptance.test.ts \
283
+ test/unit/task-aware-routing.test.ts \
284
+ test/unit/agent-management.test.ts \
285
+ test/unit/capability-ceiling-agent-allowlist.test.ts \
286
+ test/unit/schemas.test.ts \
287
+ test/unit/tool-description.test.ts \
288
+ test/unit/index-child-registration.test.ts
289
+ npm run test:unit
290
+ npm run test:integration
291
+ npm run test:all
292
+ ```
293
+
294
+ ## Acceptance criteria
295
+
296
+ 1. `action:"list"` accepts optional `task` advice without creating a new action or schema object.
297
+ 2. Recommendations use only the dynamically discovered, effective, enabled, capability-allowed set.
298
+ 3. Project/user/package/builtin precedence, canonical names, and existing alias resolution remain intact.
299
+ 4. A read-only task is never recommended to a known writer; an implementation task is never recommended to a read-only agent.
300
+ 5. Unknown intent and missing safe candidates produce recovery guidance, not guesses.
301
+ 6. List advice never launches, schedules, persists, mutates params, or changes executor agent selection.
302
+ 7. Existing list, acceptance, capability-ceiling, and child-safe management behavior pass regression tests.
303
+ 8. No metadata/tag schema, dependency, protocol, telemetry, or contract version is added.
304
+
305
+ ## Risks and rollback
306
+
307
+ - **Heuristic limitation:** task wording and name-based roles remain heuristic. Mitigation: no recommendation for unknown intent and existing `acceptanceRole` is preferred when configured.
308
+ - **Tool limitation:** `agentHasWriteTools` only recognizes core write tools; custom/MCP tools cannot be proven read-only. Mitigation: conservative filtering and explicit-launch/preflight enforcement.
309
+ - **Usability limitation:** a restrictive `allowedTools` ceiling can yield no writer recommendation. This is safer than recommending a writer that cannot write.
310
+ - **Rollback:** remove the `handleList` call/formatting and new routing module; leave the shared role-helper refactor only if acceptance behavior is verified identical. No stored data, API version, or migration requires cleanup.
311
+
312
+ ## Review findings
313
+
314
+ - **No blocker** — `src/extensions/pi-subagents/src/agents/agent-management.ts:675-714` already owns advisory list output and receives the effective executable/capability-filtered agent set.
315
+ - **No blocker** — `src/extensions/pi-subagents/src/runs/foreground/subagent-executor.ts:4078-4083` routes management actions without invoking execution; leaving it unchanged preserves explicit-only launch behavior.
316
+ - **Finding (medium)** — `src/extensions/pi-subagents/src/runs/shared/acceptance.ts:89-101` duplicates role-name heuristics that a recommender would otherwise need to copy. Centralize the existing heuristic before using it for routing to prevent behavior drift.
317
+ - **Finding (medium)** — `src/extensions/pi-subagents/src/agents/agent-memory.ts:33-39` treats unset tools as write-capable and treats `bash` as write-capable. Advisory routing must retain this conservative interpretation for read-only recommendations.
318
+
319
+ ```acceptance-report
320
+ {
321
+ "criteriaSatisfied": [
322
+ {
323
+ "id": "criterion-1",
324
+ "status": "satisfied",
325
+ "evidence": "Verified concrete Phase 3 ownership and constraints in src/extensions/pi-subagents/src/agents/agent-management.ts:675-714, agents/agent-selection.ts, agents/agents.ts:477-510, runs/shared/task-intent.ts, runs/shared/acceptance.ts:76-134, runs/shared/capability-ceiling.ts:300-315, extension/schemas.ts:263-349, extension/tool-description.ts, and targeted unit tests."
326
+ }
327
+ ],
328
+ "changedFiles": [],
329
+ "testsAddedOrUpdated": [],
330
+ "commandsRun": [
331
+ {
332
+ "command": "Targeted read/grep inspection of Phase 3 source and tests",
333
+ "result": "passed",
334
+ "summary": "Verified list discovery, precedence, alias handling, capability ceilings, task-intent/acceptance heuristics, tool safety helper, schema, descriptions, and test seams."
335
+ },
336
+ {
337
+ "command": "npm run test:unit",
338
+ "result": "not-run",
339
+ "summary": "Planning-only task; no implementation was made."
340
+ }
341
+ ],
342
+ "validationOutput": [
343
+ "No code changes were made.",
344
+ "Selected extension of action:'list' with optional task because it avoids action, RPC, preflight-contract, digest, metadata, and dependency changes."
345
+ ],
346
+ "residualRisks": [
347
+ "Task and name-role classification is heuristic; unknown intent must remain non-recommending.",
348
+ "The existing core write-tool classifier cannot prove arbitrary MCP/custom tools are non-mutating.",
349
+ "A restrictive allowedTools ceiling can intentionally result in no writer recommendation."
350
+ ],
351
+ "noStagedFiles": true,
352
+ "diffSummary": "No diff; implementation-ready Phase 3 plan only.",
353
+ "reviewFindings": [
354
+ "no blocker: agent-management.ts:675-714 is the existing advisory list owner.",
355
+ "medium: acceptance.ts:89-101 duplicates role heuristics; centralize the existing rule before advisory routing uses it.",
356
+ "medium: agent-memory.ts:33-39 provides a conservative core-tool write signal and should be reused rather than reimplemented."
357
+ ],
358
+ "manualNotes": "Phase 3 deliberately remains advisory-only. No automatic execution, generic role aliases, telemetry, metadata schema, RPC/preflight surface, or contract-version changes are planned."
359
+ }
360
+ ```
361
+
362
362
  ⧉ copy assistant: /cp 4055a2