@oh-my-pi/pi-coding-agent 16.3.5 → 16.3.7

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 (785) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/cli.js +3625 -3596
  3. package/dist/types/advisor/index.d.ts +6 -6
  4. package/dist/types/advisor/runtime.d.ts +1 -1
  5. package/dist/types/advisor/watchdog.d.ts +1 -1
  6. package/dist/types/async/index.d.ts +1 -1
  7. package/dist/types/auto-thinking/classifier.d.ts +2 -2
  8. package/dist/types/autolearn/controller.d.ts +2 -2
  9. package/dist/types/autoresearch/dashboard.d.ts +2 -2
  10. package/dist/types/autoresearch/git.d.ts +1 -1
  11. package/dist/types/autoresearch/helpers.d.ts +1 -1
  12. package/dist/types/autoresearch/index.d.ts +1 -1
  13. package/dist/types/autoresearch/state.d.ts +3 -3
  14. package/dist/types/autoresearch/storage.d.ts +1 -1
  15. package/dist/types/autoresearch/tools/init-experiment.d.ts +2 -2
  16. package/dist/types/autoresearch/tools/log-experiment.d.ts +2 -2
  17. package/dist/types/autoresearch/tools/run-experiment.d.ts +2 -2
  18. package/dist/types/autoresearch/tools/update-notes.d.ts +2 -2
  19. package/dist/types/autoresearch/types.d.ts +3 -3
  20. package/dist/types/capability/context-file.d.ts +2 -2
  21. package/dist/types/capability/extension-module.d.ts +2 -2
  22. package/dist/types/capability/extension.d.ts +3 -3
  23. package/dist/types/capability/hook.d.ts +2 -2
  24. package/dist/types/capability/index.d.ts +3 -3
  25. package/dist/types/capability/instruction.d.ts +2 -2
  26. package/dist/types/capability/mcp.d.ts +2 -2
  27. package/dist/types/capability/prompt.d.ts +2 -2
  28. package/dist/types/capability/rule-buckets.d.ts +2 -2
  29. package/dist/types/capability/rule.d.ts +2 -2
  30. package/dist/types/capability/settings.d.ts +2 -2
  31. package/dist/types/capability/skill.d.ts +2 -2
  32. package/dist/types/capability/slash-command.d.ts +2 -2
  33. package/dist/types/capability/ssh.d.ts +2 -2
  34. package/dist/types/capability/system-prompt.d.ts +2 -2
  35. package/dist/types/capability/tool.d.ts +2 -2
  36. package/dist/types/cli/args.d.ts +1 -1
  37. package/dist/types/cli/bench-cli.d.ts +2 -2
  38. package/dist/types/cli/dry-balance-cli.d.ts +1 -1
  39. package/dist/types/cli/extension-flags.d.ts +1 -1
  40. package/dist/types/cli/flag-tables.d.ts +2 -2
  41. package/dist/types/cli/gallery-cli.d.ts +1 -1
  42. package/dist/types/cli/gallery-fixtures/agentic.d.ts +1 -1
  43. package/dist/types/cli/gallery-fixtures/codeintel.d.ts +1 -1
  44. package/dist/types/cli/gallery-fixtures/edit.d.ts +1 -1
  45. package/dist/types/cli/gallery-fixtures/fs.d.ts +1 -1
  46. package/dist/types/cli/gallery-fixtures/index.d.ts +2 -2
  47. package/dist/types/cli/gallery-fixtures/interaction.d.ts +1 -1
  48. package/dist/types/cli/gallery-fixtures/memory.d.ts +1 -1
  49. package/dist/types/cli/gallery-fixtures/misc.d.ts +1 -1
  50. package/dist/types/cli/gallery-fixtures/search.d.ts +1 -1
  51. package/dist/types/cli/gallery-fixtures/shell.d.ts +1 -1
  52. package/dist/types/cli/gallery-fixtures/types.d.ts +1 -1
  53. package/dist/types/cli/gallery-fixtures/web.d.ts +1 -1
  54. package/dist/types/cli/gallery-screenshot.d.ts +1 -1
  55. package/dist/types/cli/initial-message.d.ts +1 -1
  56. package/dist/types/cli/models-cli.d.ts +1 -1
  57. package/dist/types/cli/plugin-cli.d.ts +1 -1
  58. package/dist/types/cli/session-picker.d.ts +1 -1
  59. package/dist/types/cli/startup-cwd.d.ts +1 -1
  60. package/dist/types/cli/tiny-models-cli.d.ts +1 -1
  61. package/dist/types/cli/web-search-cli.d.ts +1 -1
  62. package/dist/types/collab/crypto.d.ts +1 -1
  63. package/dist/types/collab/display-name.d.ts +1 -1
  64. package/dist/types/collab/guest.d.ts +4 -4
  65. package/dist/types/collab/host.d.ts +2 -2
  66. package/dist/types/collab/protocol.d.ts +3 -3
  67. package/dist/types/collab/relay-client.d.ts +1 -1
  68. package/dist/types/commands/auth-broker.d.ts +1 -1
  69. package/dist/types/commands/auth-gateway.d.ts +1 -1
  70. package/dist/types/commands/config.d.ts +1 -1
  71. package/dist/types/commands/plugin.d.ts +1 -1
  72. package/dist/types/commands/setup.d.ts +2 -2
  73. package/dist/types/commands/ssh.d.ts +1 -1
  74. package/dist/types/commands/tiny-models.d.ts +1 -1
  75. package/dist/types/commands/ttsr.d.ts +2 -2
  76. package/dist/types/commit/agentic/agent.d.ts +4 -4
  77. package/dist/types/commit/agentic/fallback.d.ts +2 -2
  78. package/dist/types/commit/agentic/index.d.ts +1 -1
  79. package/dist/types/commit/agentic/state.d.ts +1 -1
  80. package/dist/types/commit/agentic/tools/analyze-file.d.ts +5 -5
  81. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +2 -2
  82. package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
  83. package/dist/types/commit/agentic/tools/git-overview.d.ts +2 -2
  84. package/dist/types/commit/agentic/tools/index.d.ts +5 -5
  85. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +2 -2
  86. package/dist/types/commit/agentic/tools/propose-commit.d.ts +2 -2
  87. package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
  88. package/dist/types/commit/agentic/tools/split-commit.d.ts +2 -2
  89. package/dist/types/commit/agentic/topo-sort.d.ts +1 -1
  90. package/dist/types/commit/agentic/trivial.d.ts +1 -1
  91. package/dist/types/commit/agentic/validation.d.ts +1 -1
  92. package/dist/types/commit/analysis/conventional.d.ts +1 -1
  93. package/dist/types/commit/analysis/index.d.ts +4 -4
  94. package/dist/types/commit/analysis/scope.d.ts +1 -1
  95. package/dist/types/commit/analysis/summary.d.ts +1 -1
  96. package/dist/types/commit/analysis/validation.d.ts +1 -1
  97. package/dist/types/commit/changelog/detect.d.ts +1 -1
  98. package/dist/types/commit/changelog/generate.d.ts +1 -1
  99. package/dist/types/commit/changelog/parse.d.ts +1 -1
  100. package/dist/types/commit/cli.d.ts +1 -1
  101. package/dist/types/commit/git/diff.d.ts +1 -1
  102. package/dist/types/commit/index.d.ts +1 -1
  103. package/dist/types/commit/map-reduce/index.d.ts +1 -1
  104. package/dist/types/commit/map-reduce/map-phase.d.ts +1 -1
  105. package/dist/types/commit/map-reduce/reduce-phase.d.ts +1 -1
  106. package/dist/types/commit/message.d.ts +1 -1
  107. package/dist/types/commit/model-selection.d.ts +3 -3
  108. package/dist/types/commit/pipeline.d.ts +1 -1
  109. package/dist/types/commit/shared-llm.d.ts +1 -1
  110. package/dist/types/commit/utils.d.ts +1 -1
  111. package/dist/types/config/model-discovery.d.ts +1 -1
  112. package/dist/types/config/model-registry.d.ts +3 -3
  113. package/dist/types/config/model-resolver.d.ts +4 -4
  114. package/dist/types/config/model-roles.d.ts +2 -2
  115. package/dist/types/config/models-config.d.ts +2 -2
  116. package/dist/types/config/service-tier.d.ts +1 -1
  117. package/dist/types/config/settings-schema.d.ts +7 -13
  118. package/dist/types/config/settings.d.ts +7 -7
  119. package/dist/types/config.d.ts +1 -1
  120. package/dist/types/dap/client.d.ts +1 -1
  121. package/dist/types/dap/config.d.ts +1 -1
  122. package/dist/types/dap/index.d.ts +4 -4
  123. package/dist/types/dap/session.d.ts +3 -3
  124. package/dist/types/debug/index.d.ts +1 -1
  125. package/dist/types/debug/log-viewer.d.ts +1 -1
  126. package/dist/types/debug/raw-sse.d.ts +1 -1
  127. package/dist/types/debug/report-bundle.d.ts +1 -1
  128. package/dist/types/discovery/agents.d.ts +1 -1
  129. package/dist/types/discovery/helpers.d.ts +4 -4
  130. package/dist/types/discovery/index.d.ts +47 -47
  131. package/dist/types/discovery/omp-extension-roots.d.ts +1 -1
  132. package/dist/types/edit/apply-patch/index.d.ts +2 -2
  133. package/dist/types/edit/apply-patch/parser.d.ts +1 -1
  134. package/dist/types/edit/diff.d.ts +1 -1
  135. package/dist/types/edit/file-snapshot-store.d.ts +4 -2
  136. package/dist/types/edit/hashline/execute.d.ts +4 -4
  137. package/dist/types/edit/hashline/filesystem.d.ts +3 -3
  138. package/dist/types/edit/hashline/index.d.ts +5 -5
  139. package/dist/types/edit/index.d.ts +19 -19
  140. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  141. package/dist/types/edit/modes/patch.d.ts +3 -3
  142. package/dist/types/edit/modes/replace.d.ts +3 -3
  143. package/dist/types/edit/renderer.d.ts +15 -16
  144. package/dist/types/edit/snapshot-details.d.ts +1 -1
  145. package/dist/types/edit/streaming.d.ts +2 -2
  146. package/dist/types/eval/agent-bridge.d.ts +4 -4
  147. package/dist/types/eval/backend-helpers.d.ts +3 -3
  148. package/dist/types/eval/backend.d.ts +2 -2
  149. package/dist/types/eval/bridge-timeout.d.ts +1 -1
  150. package/dist/types/eval/budget-bridge.d.ts +2 -2
  151. package/dist/types/eval/completion-bridge.d.ts +2 -2
  152. package/dist/types/eval/concurrency-bridge.d.ts +2 -2
  153. package/dist/types/eval/executor-base.d.ts +3 -3
  154. package/dist/types/eval/index.d.ts +6 -6
  155. package/dist/types/eval/jl/executor.d.ts +4 -4
  156. package/dist/types/eval/jl/index.d.ts +2 -2
  157. package/dist/types/eval/jl/kernel.d.ts +5 -5
  158. package/dist/types/eval/js/context-manager.d.ts +4 -4
  159. package/dist/types/eval/js/executor.d.ts +3 -3
  160. package/dist/types/eval/js/index.d.ts +2 -2
  161. package/dist/types/eval/js/shared/helpers.d.ts +1 -1
  162. package/dist/types/eval/js/shared/runtime.d.ts +2 -2
  163. package/dist/types/eval/js/tool-bridge.d.ts +5 -5
  164. package/dist/types/eval/js/worker-core.d.ts +1 -1
  165. package/dist/types/eval/js/worker-protocol.d.ts +2 -2
  166. package/dist/types/eval/kernel-base.d.ts +1 -1
  167. package/dist/types/eval/py/executor.d.ts +3 -3
  168. package/dist/types/eval/py/index.d.ts +2 -2
  169. package/dist/types/eval/py/kernel.d.ts +5 -5
  170. package/dist/types/eval/py/tool-bridge.d.ts +2 -2
  171. package/dist/types/eval/rb/executor.d.ts +3 -3
  172. package/dist/types/eval/rb/index.d.ts +2 -2
  173. package/dist/types/eval/rb/kernel.d.ts +6 -6
  174. package/dist/types/eval/session-id.d.ts +1 -1
  175. package/dist/types/eval/types.d.ts +1 -1
  176. package/dist/types/exa/index.d.ts +2 -2
  177. package/dist/types/exa/mcp-client.d.ts +3 -3
  178. package/dist/types/exec/bash-executor.d.ts +1 -1
  179. package/dist/types/export/html/index.d.ts +2 -2
  180. package/dist/types/export/share.d.ts +3 -3
  181. package/dist/types/export/ttsr.d.ts +2 -2
  182. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +2 -2
  183. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +2 -2
  184. package/dist/types/extensibility/custom-commands/index.d.ts +2 -2
  185. package/dist/types/extensibility/custom-commands/loader.d.ts +1 -1
  186. package/dist/types/extensibility/custom-commands/types.d.ts +3 -3
  187. package/dist/types/extensibility/custom-tools/index.d.ts +3 -3
  188. package/dist/types/extensibility/custom-tools/loader.d.ts +3 -3
  189. package/dist/types/extensibility/custom-tools/types.d.ts +13 -11
  190. package/dist/types/extensibility/custom-tools/wrapper.d.ts +2 -2
  191. package/dist/types/extensibility/extensions/compact-handler.d.ts +1 -1
  192. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +5 -5
  193. package/dist/types/extensibility/extensions/index.d.ts +5 -5
  194. package/dist/types/extensibility/extensions/loader.d.ts +2 -2
  195. package/dist/types/extensibility/extensions/model-api.d.ts +3 -3
  196. package/dist/types/extensibility/extensions/runner.d.ts +6 -6
  197. package/dist/types/extensibility/extensions/types.d.ts +43 -31
  198. package/dist/types/extensibility/extensions/wrapper.d.ts +2 -2
  199. package/dist/types/extensibility/hooks/index.d.ts +6 -6
  200. package/dist/types/extensibility/hooks/loader.d.ts +4 -4
  201. package/dist/types/extensibility/hooks/runner.d.ts +5 -5
  202. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +1 -1
  203. package/dist/types/extensibility/hooks/types.d.ts +18 -18
  204. package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +12 -4
  205. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +194 -5
  206. package/dist/types/extensibility/plugins/doctor.d.ts +1 -1
  207. package/dist/types/extensibility/plugins/index.d.ts +7 -7
  208. package/dist/types/extensibility/plugins/installer.d.ts +1 -1
  209. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +1 -1
  210. package/dist/types/extensibility/plugins/loader.d.ts +1 -1
  211. package/dist/types/extensibility/plugins/manager.d.ts +1 -1
  212. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +1 -1
  213. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -6
  214. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +1 -1
  215. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +1 -1
  216. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +1 -1
  217. package/dist/types/extensibility/plugins/runtime-config.d.ts +1 -1
  218. package/dist/types/extensibility/session-handler-types.d.ts +1 -1
  219. package/dist/types/extensibility/shared-events.d.ts +12 -5
  220. package/dist/types/extensibility/skills.d.ts +3 -3
  221. package/dist/types/extensibility/slash-commands.d.ts +1 -1
  222. package/dist/types/extensibility/typebox.d.ts +1 -1
  223. package/dist/types/extensibility/utils.d.ts +1 -1
  224. package/dist/types/goals/guided-setup.d.ts +1 -1
  225. package/dist/types/goals/index.d.ts +3 -3
  226. package/dist/types/goals/runtime.d.ts +1 -1
  227. package/dist/types/goals/state.d.ts +1 -1
  228. package/dist/types/goals/tools/goal-tool.d.ts +4 -4
  229. package/dist/types/hindsight/backend.d.ts +2 -2
  230. package/dist/types/hindsight/bank.d.ts +2 -2
  231. package/dist/types/hindsight/client.d.ts +1 -1
  232. package/dist/types/hindsight/config.d.ts +1 -1
  233. package/dist/types/hindsight/index.d.ts +8 -8
  234. package/dist/types/hindsight/mental-models.d.ts +3 -3
  235. package/dist/types/hindsight/state.d.ts +5 -5
  236. package/dist/types/hindsight/transcript.d.ts +2 -2
  237. package/dist/types/index.d.ts +38 -38
  238. package/dist/types/internal-urls/agent-protocol.d.ts +1 -1
  239. package/dist/types/internal-urls/artifact-protocol.d.ts +1 -1
  240. package/dist/types/internal-urls/filesystem-resource.d.ts +1 -1
  241. package/dist/types/internal-urls/history-protocol.d.ts +1 -1
  242. package/dist/types/internal-urls/index.d.ts +16 -16
  243. package/dist/types/internal-urls/issue-pr-protocol.d.ts +1 -1
  244. package/dist/types/internal-urls/local-protocol.d.ts +1 -1
  245. package/dist/types/internal-urls/mcp-protocol.d.ts +1 -1
  246. package/dist/types/internal-urls/memory-protocol.d.ts +1 -1
  247. package/dist/types/internal-urls/omp-protocol.d.ts +1 -1
  248. package/dist/types/internal-urls/parse.d.ts +1 -1
  249. package/dist/types/internal-urls/router.d.ts +1 -1
  250. package/dist/types/internal-urls/rule-protocol.d.ts +1 -1
  251. package/dist/types/internal-urls/skill-protocol.d.ts +1 -1
  252. package/dist/types/internal-urls/ssh-protocol.d.ts +1 -1
  253. package/dist/types/internal-urls/types.d.ts +2 -2
  254. package/dist/types/internal-urls/vault-protocol.d.ts +1 -1
  255. package/dist/types/irc/bus.d.ts +2 -2
  256. package/dist/types/lib/xai-http.d.ts +1 -1
  257. package/dist/types/lsp/client.d.ts +23 -1
  258. package/dist/types/lsp/clients/biome-client.d.ts +1 -1
  259. package/dist/types/lsp/clients/index.d.ts +4 -4
  260. package/dist/types/lsp/clients/lsp-linter-client.d.ts +1 -1
  261. package/dist/types/lsp/clients/swiftlint-client.d.ts +1 -1
  262. package/dist/types/lsp/config.d.ts +1 -1
  263. package/dist/types/lsp/diagnostics-ledger.d.ts +1 -1
  264. package/dist/types/lsp/edits.d.ts +1 -1
  265. package/dist/types/lsp/index.d.ts +6 -6
  266. package/dist/types/lsp/render.d.ts +2 -2
  267. package/dist/types/lsp/startup-events.d.ts +1 -1
  268. package/dist/types/lsp/utils.d.ts +2 -2
  269. package/dist/types/main.d.ts +12 -12
  270. package/dist/types/markit/converters/docx.d.ts +1 -1
  271. package/dist/types/markit/converters/epub.d.ts +1 -1
  272. package/dist/types/markit/converters/pdf/columns.d.ts +1 -1
  273. package/dist/types/markit/converters/pdf/extract.d.ts +1 -1
  274. package/dist/types/markit/converters/pdf/grid.d.ts +1 -1
  275. package/dist/types/markit/converters/pdf/headers.d.ts +1 -1
  276. package/dist/types/markit/converters/pdf/index.d.ts +1 -1
  277. package/dist/types/markit/converters/pdf/render.d.ts +1 -1
  278. package/dist/types/markit/converters/pptx.d.ts +1 -1
  279. package/dist/types/markit/converters/xlsx.d.ts +1 -1
  280. package/dist/types/markit/index.d.ts +2 -2
  281. package/dist/types/markit/registry.d.ts +1 -1
  282. package/dist/types/mcp/client.d.ts +1 -1
  283. package/dist/types/mcp/config-writer.d.ts +1 -1
  284. package/dist/types/mcp/config.d.ts +2 -2
  285. package/dist/types/mcp/index.d.ts +12 -12
  286. package/dist/types/mcp/loader.d.ts +5 -5
  287. package/dist/types/mcp/manager.d.ts +7 -7
  288. package/dist/types/mcp/oauth-credentials.d.ts +3 -3
  289. package/dist/types/mcp/oauth-flow.d.ts +1 -1
  290. package/dist/types/mcp/render.d.ts +3 -3
  291. package/dist/types/mcp/smithery-registry.d.ts +1 -1
  292. package/dist/types/mcp/tool-bridge.d.ts +5 -5
  293. package/dist/types/mcp/tool-cache.d.ts +2 -2
  294. package/dist/types/mcp/transports/http.d.ts +1 -1
  295. package/dist/types/mcp/transports/index.d.ts +3 -3
  296. package/dist/types/mcp/transports/sse.d.ts +1 -1
  297. package/dist/types/mcp/transports/stdio.d.ts +1 -1
  298. package/dist/types/mcp/types.d.ts +1 -1
  299. package/dist/types/memories/index.d.ts +4 -4
  300. package/dist/types/memory-backend/index.d.ts +7 -7
  301. package/dist/types/memory-backend/local-backend.d.ts +1 -1
  302. package/dist/types/memory-backend/off-backend.d.ts +1 -1
  303. package/dist/types/memory-backend/resolve.d.ts +2 -2
  304. package/dist/types/memory-backend/runtime.d.ts +2 -2
  305. package/dist/types/memory-backend/types.d.ts +5 -5
  306. package/dist/types/mnemopi/backend.d.ts +2 -2
  307. package/dist/types/mnemopi/config.d.ts +1 -1
  308. package/dist/types/mnemopi/embed-client.d.ts +2 -2
  309. package/dist/types/mnemopi/embed-worker.d.ts +1 -1
  310. package/dist/types/mnemopi/index.d.ts +3 -3
  311. package/dist/types/mnemopi/state.d.ts +38 -2
  312. package/dist/types/modes/acp/acp-agent.d.ts +2 -2
  313. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -1
  314. package/dist/types/modes/acp/acp-event-mapper.d.ts +1 -1
  315. package/dist/types/modes/acp/acp-mode.d.ts +1 -1
  316. package/dist/types/modes/acp/index.d.ts +2 -2
  317. package/dist/types/modes/components/advisor-config.d.ts +3 -3
  318. package/dist/types/modes/components/advisor-message.d.ts +2 -2
  319. package/dist/types/modes/components/agent-dashboard.d.ts +2 -2
  320. package/dist/types/modes/components/agent-hub.d.ts +11 -9
  321. package/dist/types/modes/components/agent-transcript-viewer.d.ts +6 -6
  322. package/dist/types/modes/components/assistant-message.d.ts +17 -12
  323. package/dist/types/modes/components/background-tan-message.d.ts +2 -2
  324. package/dist/types/modes/components/bash-execution.d.ts +7 -1
  325. package/dist/types/modes/components/bordered-loader.d.ts +1 -1
  326. package/dist/types/modes/components/chat-transcript-builder.d.ts +3 -3
  327. package/dist/types/modes/components/collab-prompt-message.d.ts +2 -2
  328. package/dist/types/modes/components/compaction-summary-message.d.ts +1 -1
  329. package/dist/types/modes/components/copy-selector.d.ts +1 -1
  330. package/dist/types/modes/components/custom-editor.d.ts +1 -1
  331. package/dist/types/modes/components/custom-message.d.ts +2 -2
  332. package/dist/types/modes/components/eval-execution.d.ts +7 -1
  333. package/dist/types/modes/components/execution-shared.d.ts +1 -1
  334. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +2 -2
  335. package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
  336. package/dist/types/modes/components/extensions/index.d.ts +5 -5
  337. package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
  338. package/dist/types/modes/components/extensions/state-manager.d.ts +1 -1
  339. package/dist/types/modes/components/extensions/types.d.ts +1 -1
  340. package/dist/types/modes/components/footer.d.ts +1 -1
  341. package/dist/types/modes/components/history-search.d.ts +1 -1
  342. package/dist/types/modes/components/hook-message.d.ts +2 -2
  343. package/dist/types/modes/components/index.d.ts +38 -38
  344. package/dist/types/modes/components/keybinding-hints.d.ts +1 -1
  345. package/dist/types/modes/components/logout-account-selector.d.ts +1 -1
  346. package/dist/types/modes/components/mcp-add-wizard.d.ts +1 -1
  347. package/dist/types/modes/components/message-frame.d.ts +1 -1
  348. package/dist/types/modes/components/model-selector.d.ts +3 -3
  349. package/dist/types/modes/components/oauth-selector.d.ts +1 -1
  350. package/dist/types/modes/components/plan-review-overlay.d.ts +1 -1
  351. package/dist/types/modes/components/plugin-settings.d.ts +3 -3
  352. package/dist/types/modes/components/read-tool-group.d.ts +1 -1
  353. package/dist/types/modes/components/reset-usage-selector.d.ts +1 -1
  354. package/dist/types/modes/components/segment-track.d.ts +1 -1
  355. package/dist/types/modes/components/session-selector.d.ts +1 -1
  356. package/dist/types/modes/components/settings-defs.d.ts +1 -1
  357. package/dist/types/modes/components/settings-selector.d.ts +2 -2
  358. package/dist/types/modes/components/skill-message.d.ts +1 -1
  359. package/dist/types/modes/components/status-line/component.d.ts +2 -2
  360. package/dist/types/modes/components/status-line/context-thresholds.d.ts +1 -1
  361. package/dist/types/modes/components/status-line/index.d.ts +5 -5
  362. package/dist/types/modes/components/status-line/presets.d.ts +1 -1
  363. package/dist/types/modes/components/status-line/segments.d.ts +2 -2
  364. package/dist/types/modes/components/status-line/separators.d.ts +2 -2
  365. package/dist/types/modes/components/status-line/types.d.ts +8 -4
  366. package/dist/types/modes/components/tiny-title-download-progress.d.ts +2 -2
  367. package/dist/types/modes/components/todo-reminder.d.ts +1 -1
  368. package/dist/types/modes/components/tool-execution.d.ts +4 -14
  369. package/dist/types/modes/components/transcript-container.d.ts +26 -28
  370. package/dist/types/modes/components/tree-selector.d.ts +2 -2
  371. package/dist/types/modes/components/ttsr-notification.d.ts +1 -1
  372. package/dist/types/modes/controllers/btw-controller.d.ts +1 -1
  373. package/dist/types/modes/controllers/command-controller-shared.d.ts +2 -2
  374. package/dist/types/modes/controllers/command-controller.d.ts +7 -7
  375. package/dist/types/modes/controllers/event-controller.d.ts +3 -3
  376. package/dist/types/modes/controllers/extension-ui-controller.d.ts +5 -5
  377. package/dist/types/modes/controllers/extension-ui-controller.test.d.ts +1 -0
  378. package/dist/types/modes/controllers/input-controller.d.ts +2 -2
  379. package/dist/types/modes/controllers/mcp-command-controller.d.ts +1 -1
  380. package/dist/types/modes/controllers/omfg-controller.d.ts +1 -1
  381. package/dist/types/modes/controllers/omfg-rule.d.ts +1 -1
  382. package/dist/types/modes/controllers/selector-controller.d.ts +2 -2
  383. package/dist/types/modes/controllers/session-focus-controller.d.ts +4 -4
  384. package/dist/types/modes/controllers/ssh-command-controller.d.ts +1 -1
  385. package/dist/types/modes/controllers/streaming-reveal.d.ts +11 -3
  386. package/dist/types/modes/controllers/tan-command-controller.d.ts +1 -1
  387. package/dist/types/modes/controllers/todo-command-controller.d.ts +1 -1
  388. package/dist/types/modes/controllers/tool-args-reveal.d.ts +6 -2
  389. package/dist/types/modes/image-references.d.ts +1 -1
  390. package/dist/types/modes/index.d.ts +3 -3
  391. package/dist/types/modes/interactive-mode.d.ts +34 -34
  392. package/dist/types/modes/orchestrate.d.ts +1 -1
  393. package/dist/types/modes/print-mode.d.ts +1 -1
  394. package/dist/types/modes/prompt-action-autocomplete.d.ts +1 -1
  395. package/dist/types/modes/rpc/host-tools.d.ts +1 -1
  396. package/dist/types/modes/rpc/host-uris.d.ts +3 -3
  397. package/dist/types/modes/rpc/rpc-client.d.ts +3 -3
  398. package/dist/types/modes/rpc/rpc-mode.d.ts +6 -6
  399. package/dist/types/modes/rpc/rpc-subagents.d.ts +3 -3
  400. package/dist/types/modes/rpc/rpc-types.d.ts +7 -7
  401. package/dist/types/modes/running-subagent-badge.d.ts +1 -1
  402. package/dist/types/modes/runtime-init.d.ts +2 -2
  403. package/dist/types/modes/session-observer-registry.d.ts +2 -2
  404. package/dist/types/modes/setup-wizard/index.d.ts +6 -6
  405. package/dist/types/modes/setup-wizard/lazy.d.ts +1 -1
  406. package/dist/types/modes/setup-wizard/scenes/glyph.d.ts +1 -1
  407. package/dist/types/modes/setup-wizard/scenes/providers.d.ts +1 -1
  408. package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +1 -1
  409. package/dist/types/modes/setup-wizard/scenes/theme.d.ts +1 -1
  410. package/dist/types/modes/setup-wizard/scenes/types.d.ts +1 -1
  411. package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +1 -1
  412. package/dist/types/modes/setup-wizard/startup-splash.d.ts +1 -1
  413. package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +2 -2
  414. package/dist/types/modes/shared.d.ts +1 -1
  415. package/dist/types/modes/skill-command.d.ts +2 -2
  416. package/dist/types/modes/theme/shimmer.d.ts +1 -1
  417. package/dist/types/modes/theme/theme.d.ts +1 -1
  418. package/dist/types/modes/types.d.ts +31 -31
  419. package/dist/types/modes/ultrathink.d.ts +1 -1
  420. package/dist/types/modes/utils/context-usage.d.ts +5 -5
  421. package/dist/types/modes/utils/hotkeys-markdown.d.ts +1 -1
  422. package/dist/types/modes/utils/interactive-context-helpers.d.ts +2 -2
  423. package/dist/types/modes/utils/tools-markdown.d.ts +1 -1
  424. package/dist/types/modes/utils/transcript-render-helpers.d.ts +25 -8
  425. package/dist/types/modes/utils/transcript-render-helpers.test.d.ts +1 -0
  426. package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
  427. package/dist/types/modes/workflow.d.ts +1 -1
  428. package/dist/types/plan-mode/plan-handoff.d.ts +1 -1
  429. package/dist/types/registry/agent-lifecycle.d.ts +2 -2
  430. package/dist/types/registry/agent-registry.d.ts +1 -1
  431. package/dist/types/sdk.d.ts +40 -36
  432. package/dist/types/secrets/index.d.ts +2 -2
  433. package/dist/types/secrets/obfuscator.d.ts +1 -1
  434. package/dist/types/session/agent-session.d.ts +57 -41
  435. package/dist/types/session/agent-storage.d.ts +1 -1
  436. package/dist/types/session/auth-broker-config.d.ts +1 -1
  437. package/dist/types/session/codex-auto-reset.d.ts +1 -1
  438. package/dist/types/session/exit-diagnostics.d.ts +1 -1
  439. package/dist/types/session/indexed-session-storage.d.ts +2 -2
  440. package/dist/types/session/messages.d.ts +22 -3
  441. package/dist/types/session/redis-session-storage.d.ts +1 -1
  442. package/dist/types/session/session-context.d.ts +1 -1
  443. package/dist/types/session/session-entries.d.ts +4 -0
  444. package/dist/types/session/session-listing.d.ts +1 -1
  445. package/dist/types/session/session-loader.d.ts +4 -4
  446. package/dist/types/session/session-manager.d.ts +9 -8
  447. package/dist/types/session/session-migrations.d.ts +1 -1
  448. package/dist/types/session/session-paths.d.ts +1 -1
  449. package/dist/types/session/session-persistence.d.ts +2 -2
  450. package/dist/types/session/session-storage.d.ts +1 -1
  451. package/dist/types/session/session-title-slot.d.ts +1 -1
  452. package/dist/types/session/settings-stream-fn.d.ts +1 -1
  453. package/dist/types/session/sql-session-storage.d.ts +1 -1
  454. package/dist/types/session/unexpected-stop-classifier.d.ts +2 -2
  455. package/dist/types/slash-commands/acp-builtins.d.ts +2 -2
  456. package/dist/types/slash-commands/available-commands.d.ts +5 -5
  457. package/dist/types/slash-commands/builtin-registry.d.ts +2 -2
  458. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +1 -1
  459. package/dist/types/slash-commands/helpers/context-report.d.ts +1 -1
  460. package/dist/types/slash-commands/helpers/format.d.ts +1 -1
  461. package/dist/types/slash-commands/helpers/logout.d.ts +1 -1
  462. package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +2 -2
  463. package/dist/types/slash-commands/helpers/mcp.d.ts +1 -1
  464. package/dist/types/slash-commands/helpers/parse.d.ts +1 -1
  465. package/dist/types/slash-commands/helpers/reset-usage.d.ts +1 -1
  466. package/dist/types/slash-commands/helpers/ssh.d.ts +1 -1
  467. package/dist/types/slash-commands/helpers/todo.d.ts +1 -1
  468. package/dist/types/slash-commands/helpers/usage-report.d.ts +1 -1
  469. package/dist/types/slash-commands/types.d.ts +6 -4
  470. package/dist/types/ssh/file-transfer.d.ts +1 -1
  471. package/dist/types/ssh/ssh-executor.d.ts +1 -1
  472. package/dist/types/ssh/sshfs-mount.d.ts +1 -1
  473. package/dist/types/stt/asr-client.d.ts +3 -3
  474. package/dist/types/stt/asr-protocol.d.ts +1 -1
  475. package/dist/types/stt/asr-worker.d.ts +1 -1
  476. package/dist/types/stt/downloader.d.ts +1 -1
  477. package/dist/types/stt/index.d.ts +8 -8
  478. package/dist/types/stt/models.d.ts +1 -1
  479. package/dist/types/system-prompt.d.ts +4 -4
  480. package/dist/types/task/agents.d.ts +1 -1
  481. package/dist/types/task/discovery.d.ts +1 -1
  482. package/dist/types/task/executor.d.ts +20 -20
  483. package/dist/types/task/index.d.ts +11 -11
  484. package/dist/types/task/isolation-runner.d.ts +7 -6
  485. package/dist/types/task/persisted-revive.d.ts +5 -5
  486. package/dist/types/task/provider-concurrency.d.ts +2 -2
  487. package/dist/types/task/render.d.ts +3 -3
  488. package/dist/types/task/renderer.d.ts +1 -1
  489. package/dist/types/task/repair-args.d.ts +1 -1
  490. package/dist/types/task/subprocess-tool-registry.d.ts +1 -1
  491. package/dist/types/task/types.d.ts +2 -2
  492. package/dist/types/task/yield-assembly.d.ts +1 -1
  493. package/dist/types/tiny/title-client.d.ts +2 -2
  494. package/dist/types/tiny/title-protocol.d.ts +1 -1
  495. package/dist/types/tiny/worker.d.ts +1 -1
  496. package/dist/types/tool-discovery/mode.d.ts +2 -2
  497. package/dist/types/tools/__tests__/glob.test.d.ts +1 -0
  498. package/dist/types/tools/acp-bridge.d.ts +2 -2
  499. package/dist/types/tools/ask.d.ts +3 -3
  500. package/dist/types/tools/ast-edit.d.ts +4 -4
  501. package/dist/types/tools/ast-grep.d.ts +4 -4
  502. package/dist/types/tools/bash-command-fixup.d.ts +3 -11
  503. package/dist/types/tools/bash-interactive.d.ts +1 -1
  504. package/dist/types/tools/bash-interceptor.d.ts +1 -1
  505. package/dist/types/tools/bash-skill-urls.d.ts +3 -3
  506. package/dist/types/tools/bash.d.ts +4 -6
  507. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +6 -6
  508. package/dist/types/tools/browser/cmux/rpc.d.ts +1 -1
  509. package/dist/types/tools/browser/registry.d.ts +3 -3
  510. package/dist/types/tools/browser/render.d.ts +3 -3
  511. package/dist/types/tools/browser/tab-supervisor.d.ts +14 -4
  512. package/dist/types/tools/browser/tab-worker.d.ts +1 -1
  513. package/dist/types/tools/browser.d.ts +9 -9
  514. package/dist/types/tools/checkpoint.d.ts +2 -2
  515. package/dist/types/tools/conflict-detect.d.ts +1 -1
  516. package/dist/types/tools/context.d.ts +2 -2
  517. package/dist/types/tools/debug.d.ts +4 -4
  518. package/dist/types/tools/eval-backends.d.ts +1 -1
  519. package/dist/types/tools/eval-render.d.ts +3 -5
  520. package/dist/types/tools/eval.d.ts +3 -3
  521. package/dist/types/tools/fetch.d.ts +7 -7
  522. package/dist/types/tools/gh-renderer.d.ts +3 -3
  523. package/dist/types/tools/gh.d.ts +5 -5
  524. package/dist/types/tools/github-cache.d.ts +1 -1
  525. package/dist/types/tools/glob.d.ts +7 -5
  526. package/dist/types/tools/grep.d.ts +5 -5
  527. package/dist/types/tools/image-gen.d.ts +2 -2
  528. package/dist/types/tools/index.d.ts +70 -70
  529. package/dist/types/tools/inspect-image-renderer.d.ts +2 -2
  530. package/dist/types/tools/inspect-image.d.ts +2 -2
  531. package/dist/types/tools/irc.d.ts +5 -5
  532. package/dist/types/tools/job.d.ts +3 -3
  533. package/dist/types/tools/json-tree.d.ts +1 -1
  534. package/dist/types/tools/learn.d.ts +1 -1
  535. package/dist/types/tools/list-limit.d.ts +1 -1
  536. package/dist/types/tools/manage-skill.d.ts +1 -1
  537. package/dist/types/tools/memory-edit.d.ts +1 -1
  538. package/dist/types/tools/memory-recall.d.ts +1 -1
  539. package/dist/types/tools/memory-reflect.d.ts +1 -1
  540. package/dist/types/tools/memory-render.d.ts +2 -2
  541. package/dist/types/tools/memory-retain.d.ts +1 -1
  542. package/dist/types/tools/output-meta.d.ts +3 -3
  543. package/dist/types/tools/path-utils.d.ts +2 -2
  544. package/dist/types/tools/plan-mode-guard.d.ts +1 -1
  545. package/dist/types/tools/read.d.ts +7 -7
  546. package/dist/types/tools/render-utils.d.ts +3 -3
  547. package/dist/types/tools/renderers.d.ts +2 -22
  548. package/dist/types/tools/report-tool-issue.d.ts +2 -2
  549. package/dist/types/tools/resolve.d.ts +3 -3
  550. package/dist/types/tools/review.d.ts +2 -2
  551. package/dist/types/tools/search-tool-bm25.d.ts +4 -4
  552. package/dist/types/tools/ssh.d.ts +5 -7
  553. package/dist/types/tools/todo.d.ts +4 -4
  554. package/dist/types/tools/tool-result.d.ts +2 -2
  555. package/dist/types/tools/tts.d.ts +1 -1
  556. package/dist/types/tools/write.d.ts +8 -8
  557. package/dist/types/tools/yield.d.ts +1 -1
  558. package/dist/types/tts/index.d.ts +10 -10
  559. package/dist/types/tts/models.d.ts +1 -1
  560. package/dist/types/tts/speech-enhancer.d.ts +2 -2
  561. package/dist/types/tts/streaming-player.d.ts +1 -1
  562. package/dist/types/tts/tts-client.d.ts +2 -2
  563. package/dist/types/tts/tts-protocol.d.ts +1 -1
  564. package/dist/types/tts/tts-worker.d.ts +1 -1
  565. package/dist/types/tts/vocalizer.d.ts +7 -1
  566. package/dist/types/tui/code-cell.d.ts +1 -1
  567. package/dist/types/tui/file-list.d.ts +1 -1
  568. package/dist/types/tui/index.d.ts +9 -9
  569. package/dist/types/tui/output-block.d.ts +2 -2
  570. package/dist/types/tui/status-line.d.ts +2 -2
  571. package/dist/types/tui/tree-list.d.ts +2 -2
  572. package/dist/types/tui/types.d.ts +1 -1
  573. package/dist/types/tui/utils.d.ts +2 -2
  574. package/dist/types/utils/changelog.d.ts +1 -1
  575. package/dist/types/utils/commit-message-generator.d.ts +2 -2
  576. package/dist/types/utils/git.d.ts +1 -1
  577. package/dist/types/utils/image-loading.d.ts +1 -1
  578. package/dist/types/utils/image-vision-fallback.d.ts +3 -3
  579. package/dist/types/utils/markit.d.ts +1 -1
  580. package/dist/types/utils/title-generator.d.ts +2 -2
  581. package/dist/types/web/parallel.d.ts +1 -1
  582. package/dist/types/web/scrapers/artifacthub.d.ts +1 -1
  583. package/dist/types/web/scrapers/arxiv.d.ts +1 -1
  584. package/dist/types/web/scrapers/aur.d.ts +1 -1
  585. package/dist/types/web/scrapers/biorxiv.d.ts +1 -1
  586. package/dist/types/web/scrapers/bluesky.d.ts +1 -1
  587. package/dist/types/web/scrapers/brew.d.ts +1 -1
  588. package/dist/types/web/scrapers/cheatsh.d.ts +1 -1
  589. package/dist/types/web/scrapers/chocolatey.d.ts +1 -1
  590. package/dist/types/web/scrapers/choosealicense.d.ts +1 -1
  591. package/dist/types/web/scrapers/cisa-kev.d.ts +1 -1
  592. package/dist/types/web/scrapers/clojars.d.ts +1 -1
  593. package/dist/types/web/scrapers/coingecko.d.ts +1 -1
  594. package/dist/types/web/scrapers/crates-io.d.ts +1 -1
  595. package/dist/types/web/scrapers/crossref.d.ts +1 -1
  596. package/dist/types/web/scrapers/devto.d.ts +1 -1
  597. package/dist/types/web/scrapers/discogs.d.ts +1 -1
  598. package/dist/types/web/scrapers/discourse.d.ts +1 -1
  599. package/dist/types/web/scrapers/dockerhub.d.ts +1 -1
  600. package/dist/types/web/scrapers/docs-rs.d.ts +8 -1
  601. package/dist/types/web/scrapers/fdroid.d.ts +1 -1
  602. package/dist/types/web/scrapers/firefox-addons.d.ts +1 -1
  603. package/dist/types/web/scrapers/flathub.d.ts +1 -1
  604. package/dist/types/web/scrapers/github-gist.d.ts +1 -1
  605. package/dist/types/web/scrapers/github.d.ts +1 -1
  606. package/dist/types/web/scrapers/gitlab.d.ts +1 -1
  607. package/dist/types/web/scrapers/go-pkg.d.ts +1 -1
  608. package/dist/types/web/scrapers/hackage.d.ts +1 -1
  609. package/dist/types/web/scrapers/hackernews.d.ts +1 -1
  610. package/dist/types/web/scrapers/hex.d.ts +1 -1
  611. package/dist/types/web/scrapers/huggingface.d.ts +1 -1
  612. package/dist/types/web/scrapers/iacr.d.ts +1 -1
  613. package/dist/types/web/scrapers/index.d.ts +77 -77
  614. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +1 -1
  615. package/dist/types/web/scrapers/lemmy.d.ts +1 -1
  616. package/dist/types/web/scrapers/lobsters.d.ts +1 -1
  617. package/dist/types/web/scrapers/mastodon.d.ts +1 -1
  618. package/dist/types/web/scrapers/maven.d.ts +1 -1
  619. package/dist/types/web/scrapers/mdn.d.ts +1 -1
  620. package/dist/types/web/scrapers/metacpan.d.ts +1 -1
  621. package/dist/types/web/scrapers/musicbrainz.d.ts +1 -1
  622. package/dist/types/web/scrapers/npm.d.ts +1 -1
  623. package/dist/types/web/scrapers/nuget.d.ts +1 -1
  624. package/dist/types/web/scrapers/nvd.d.ts +1 -1
  625. package/dist/types/web/scrapers/ollama.d.ts +1 -1
  626. package/dist/types/web/scrapers/open-vsx.d.ts +1 -1
  627. package/dist/types/web/scrapers/opencorporates.d.ts +1 -1
  628. package/dist/types/web/scrapers/openlibrary.d.ts +1 -1
  629. package/dist/types/web/scrapers/orcid.d.ts +1 -1
  630. package/dist/types/web/scrapers/osv.d.ts +1 -1
  631. package/dist/types/web/scrapers/packagist.d.ts +1 -1
  632. package/dist/types/web/scrapers/pub-dev.d.ts +1 -1
  633. package/dist/types/web/scrapers/pubmed.d.ts +1 -1
  634. package/dist/types/web/scrapers/pypi.d.ts +1 -1
  635. package/dist/types/web/scrapers/rawg.d.ts +1 -1
  636. package/dist/types/web/scrapers/readthedocs.d.ts +1 -1
  637. package/dist/types/web/scrapers/reddit.d.ts +1 -1
  638. package/dist/types/web/scrapers/repology.d.ts +1 -1
  639. package/dist/types/web/scrapers/rfc.d.ts +1 -1
  640. package/dist/types/web/scrapers/rubygems.d.ts +1 -1
  641. package/dist/types/web/scrapers/searchcode.d.ts +1 -1
  642. package/dist/types/web/scrapers/sec-edgar.d.ts +1 -1
  643. package/dist/types/web/scrapers/semantic-scholar.d.ts +1 -1
  644. package/dist/types/web/scrapers/snapcraft.d.ts +1 -1
  645. package/dist/types/web/scrapers/sourcegraph.d.ts +1 -1
  646. package/dist/types/web/scrapers/spdx.d.ts +1 -1
  647. package/dist/types/web/scrapers/spotify.d.ts +1 -1
  648. package/dist/types/web/scrapers/stackoverflow.d.ts +1 -1
  649. package/dist/types/web/scrapers/terraform.d.ts +1 -1
  650. package/dist/types/web/scrapers/tldr.d.ts +1 -1
  651. package/dist/types/web/scrapers/twitter.d.ts +1 -1
  652. package/dist/types/web/scrapers/types.d.ts +1 -1
  653. package/dist/types/web/scrapers/vimeo.d.ts +1 -1
  654. package/dist/types/web/scrapers/vscode-marketplace.d.ts +1 -1
  655. package/dist/types/web/scrapers/w3c.d.ts +1 -1
  656. package/dist/types/web/scrapers/wikidata.d.ts +1 -1
  657. package/dist/types/web/scrapers/wikipedia.d.ts +1 -1
  658. package/dist/types/web/scrapers/youtube.d.ts +1 -1
  659. package/dist/types/web/search/index.d.ts +7 -7
  660. package/dist/types/web/search/provider.d.ts +5 -5
  661. package/dist/types/web/search/providers/anthropic.d.ts +3 -3
  662. package/dist/types/web/search/providers/base.d.ts +1 -1
  663. package/dist/types/web/search/providers/brave.d.ts +3 -3
  664. package/dist/types/web/search/providers/codex.d.ts +3 -3
  665. package/dist/types/web/search/providers/duckduckgo.d.ts +3 -3
  666. package/dist/types/web/search/providers/exa.d.ts +3 -3
  667. package/dist/types/web/search/providers/firecrawl.d.ts +3 -3
  668. package/dist/types/web/search/providers/gemini.d.ts +3 -3
  669. package/dist/types/web/search/providers/jina.d.ts +3 -3
  670. package/dist/types/web/search/providers/kagi.d.ts +3 -3
  671. package/dist/types/web/search/providers/kimi.d.ts +3 -3
  672. package/dist/types/web/search/providers/parallel.d.ts +3 -3
  673. package/dist/types/web/search/providers/perplexity.d.ts +3 -3
  674. package/dist/types/web/search/providers/searxng.d.ts +3 -3
  675. package/dist/types/web/search/providers/synthetic.d.ts +3 -3
  676. package/dist/types/web/search/providers/tavily.d.ts +3 -3
  677. package/dist/types/web/search/providers/tinyfish.d.ts +3 -3
  678. package/dist/types/web/search/providers/utils.d.ts +2 -2
  679. package/dist/types/web/search/providers/xai.d.ts +3 -3
  680. package/dist/types/web/search/providers/zai.d.ts +3 -3
  681. package/dist/types/web/search/render.d.ts +3 -3
  682. package/package.json +12 -12
  683. package/src/advisor/__tests__/advisor.test.ts +59 -0
  684. package/src/auto-thinking/classifier.ts +6 -5
  685. package/src/collab/relay-client.ts +73 -7
  686. package/src/config/model-registry.ts +43 -2
  687. package/src/config/model-resolver.ts +1 -1
  688. package/src/config/settings-schema.ts +5 -12
  689. package/src/config/settings.ts +25 -5
  690. package/src/edit/file-snapshot-store.ts +5 -2
  691. package/src/edit/hashline/filesystem.ts +19 -1
  692. package/src/edit/modes/patch.ts +9 -1
  693. package/src/edit/modes/replace.ts +1 -1
  694. package/src/edit/renderer.ts +42 -35
  695. package/src/eval/__tests__/agent-bridge.test.ts +19 -0
  696. package/src/eval/__tests__/budget-bridge.test.ts +12 -1
  697. package/src/eval/agent-bridge.ts +27 -19
  698. package/src/eval/js/context-manager.ts +3 -0
  699. package/src/export/ttsr.ts +10 -0
  700. package/src/extensibility/custom-tools/types.ts +2 -0
  701. package/src/extensibility/extensions/loader.ts +2 -2
  702. package/src/extensibility/extensions/types.ts +16 -4
  703. package/src/extensibility/hooks/loader.ts +3 -3
  704. package/src/extensibility/hooks/types.ts +4 -4
  705. package/src/extensibility/legacy-pi-ai-shim.ts +17 -4
  706. package/src/extensibility/legacy-pi-coding-agent-shim.ts +554 -2
  707. package/src/extensibility/plugins/legacy-pi-compat.ts +190 -58
  708. package/src/extensibility/shared-events.ts +9 -1
  709. package/src/internal-urls/docs-index.generated.txt +1 -1
  710. package/src/internal-urls/memory-protocol.ts +105 -3
  711. package/src/lsp/client.ts +70 -0
  712. package/src/lsp/index.ts +65 -12
  713. package/src/main.ts +5 -3
  714. package/src/markit/converters/pdf/extract.ts +26 -2
  715. package/src/mnemopi/state.ts +76 -0
  716. package/src/modes/acp/acp-agent.ts +5 -1
  717. package/src/modes/components/agent-hub.ts +27 -9
  718. package/src/modes/components/assistant-message.ts +134 -82
  719. package/src/modes/components/bash-execution.ts +9 -0
  720. package/src/modes/components/chat-transcript-builder.ts +15 -7
  721. package/src/modes/components/copy-selector.ts +16 -4
  722. package/src/modes/components/eval-execution.ts +9 -0
  723. package/src/modes/components/model-selector.ts +17 -17
  724. package/src/modes/components/session-selector.ts +12 -4
  725. package/src/modes/components/status-line/component.ts +4 -0
  726. package/src/modes/components/status-line/segments.ts +6 -5
  727. package/src/modes/components/status-line/types.ts +4 -0
  728. package/src/modes/components/tool-execution.ts +12 -53
  729. package/src/modes/components/transcript-container.ts +82 -432
  730. package/src/modes/components/tree-selector.ts +9 -3
  731. package/src/modes/controllers/command-controller.ts +10 -3
  732. package/src/modes/controllers/event-controller.ts +78 -17
  733. package/src/modes/controllers/extension-ui-controller.test.ts +58 -0
  734. package/src/modes/controllers/extension-ui-controller.ts +12 -7
  735. package/src/modes/controllers/input-controller.ts +12 -10
  736. package/src/modes/controllers/selector-controller.ts +18 -9
  737. package/src/modes/controllers/streaming-reveal.ts +12 -5
  738. package/src/modes/controllers/tool-args-reveal.ts +13 -6
  739. package/src/modes/interactive-mode.ts +66 -36
  740. package/src/modes/prompt-action-autocomplete.ts +18 -0
  741. package/src/modes/theme/shimmer.ts +37 -1
  742. package/src/modes/utils/transcript-render-helpers.test.ts +38 -0
  743. package/src/modes/utils/transcript-render-helpers.ts +54 -13
  744. package/src/modes/utils/ui-helpers.ts +17 -8
  745. package/src/prompts/system/workflow-notice.md +1 -1
  746. package/src/prompts/tools/bash.md +9 -7
  747. package/src/prompts/tools/grep.md +1 -1
  748. package/src/prompts/tools/memory-edit.md +2 -0
  749. package/src/prompts/tools/recall.md +2 -0
  750. package/src/sdk.ts +113 -12
  751. package/src/session/agent-session.ts +350 -61
  752. package/src/session/messages.ts +102 -2
  753. package/src/session/session-context.ts +67 -10
  754. package/src/session/session-entries.ts +4 -0
  755. package/src/session/session-history-format.ts +12 -0
  756. package/src/session/session-manager.ts +129 -10
  757. package/src/session/settings-stream-fn.ts +1 -0
  758. package/src/session/unexpected-stop-classifier.ts +6 -3
  759. package/src/slash-commands/builtin-registry.ts +7 -4
  760. package/src/slash-commands/helpers/usage-report.ts +3 -0
  761. package/src/slash-commands/types.ts +2 -0
  762. package/src/task/executor.ts +23 -3
  763. package/src/task/isolation-runner.ts +38 -9
  764. package/src/tools/__tests__/glob.test.ts +37 -0
  765. package/src/tools/acp-bridge.ts +11 -1
  766. package/src/tools/bash-command-fixup.ts +3 -36
  767. package/src/tools/bash.ts +4 -17
  768. package/src/tools/browser/render.ts +6 -4
  769. package/src/tools/browser/tab-supervisor.ts +47 -3
  770. package/src/tools/eval-render.ts +0 -20
  771. package/src/tools/glob.ts +11 -1
  772. package/src/tools/index.ts +1 -1
  773. package/src/tools/inspect-image-renderer.ts +5 -4
  774. package/src/tools/read.ts +76 -28
  775. package/src/tools/render-utils.ts +4 -1
  776. package/src/tools/renderers.ts +0 -20
  777. package/src/tools/ssh.ts +0 -16
  778. package/src/tools/write.ts +22 -13
  779. package/src/tts/speech-enhancer.ts +7 -5
  780. package/src/tts/vocalizer.ts +9 -0
  781. package/src/utils/commit-message-generator.ts +7 -5
  782. package/src/utils/shell-snapshot.ts +10 -0
  783. package/src/utils/title-generator.ts +12 -7
  784. package/src/web/scrapers/docs-rs.ts +12 -1
  785. package/src/web/search/providers/xai.ts +43 -47
@@ -1029,9 +1029,6 @@ export class CommandController {
1029
1029
  return;
1030
1030
  }
1031
1031
  const name = this.ctx.sessionManager.getSessionName()!;
1032
- setSessionTerminalTitle(name, this.ctx.sessionManager.getCwd());
1033
- this.ctx.statusLine.invalidate();
1034
- this.ctx.updateEditorBorderColor();
1035
1032
  this.ctx.showStatus(`Session renamed to "${name}".`);
1036
1033
  } catch (err) {
1037
1034
  this.ctx.showError(`Rename failed: ${err instanceof Error ? err.message : String(err)}`);
@@ -1124,6 +1121,7 @@ export class CommandController {
1124
1121
  customInstructions?: string,
1125
1122
  mode?: CompactMode,
1126
1123
  beforeFlush?: (outcome: CompactionOutcome) => void | Promise<void>,
1124
+ internalGuidance?: string,
1127
1125
  ): Promise<CompactionOutcome> {
1128
1126
  const entries = this.ctx.sessionManager.getEntries();
1129
1127
  const messageCount = entries.filter(e => e.type === "message").length;
@@ -1133,6 +1131,15 @@ export class CommandController {
1133
1131
  return "ok";
1134
1132
  }
1135
1133
 
1134
+ // `internalGuidance` is a private summarizer directive (plan-mode
1135
+ // "Approve and compact context") that MUST stay off the public
1136
+ // `customInstructions` channel of the `session_before_compact` extension
1137
+ // hook — extensions treat that field as user focus and would otherwise
1138
+ // bias the summary toward the plan boilerplate (issue #4359). Ride it
1139
+ // through as a CompactOptions field instead.
1140
+ if (internalGuidance) {
1141
+ return this.executeCompaction({ internalGuidance, ...(mode ? { mode } : {}) }, false, beforeFlush, mode);
1142
+ }
1136
1143
  return this.executeCompaction(customInstructions, false, beforeFlush, mode);
1137
1144
  }
1138
1145
 
@@ -32,6 +32,7 @@ import { vocalizer } from "../../tts/vocalizer";
32
32
  import { canonicalizeMessage } from "../../utils/thinking-display";
33
33
  import { interruptHint } from "../shared";
34
34
  import { createAssistantMessageComponent } from "../utils/interactive-context-helpers";
35
+ import { assistantUsageIsBilled } from "../utils/transcript-render-helpers";
35
36
  import { StreamingRevealController } from "./streaming-reveal";
36
37
  import { streamingStringKeysForTool, ToolArgsRevealController } from "./tool-args-reveal";
37
38
 
@@ -84,6 +85,8 @@ export class EventController {
84
85
  // restored when the banner clears at the next `agent_start` (see
85
86
  // #handleMessageEnd / #handleAgentStart).
86
87
  #pinnedErrorComponent: AssistantMessageComponent | undefined = undefined;
88
+ #retrySupersededAssistantComponents = new Map<string, AssistantMessageComponent>();
89
+ #retrySupersededAssistantQueue: AssistantMessageComponent[] = [];
87
90
  #idleCompactionTimer?: NodeJS.Timeout;
88
91
  #idleRecapTimer?: NodeJS.Timeout;
89
92
  // In-flight ephemeral recap turn; aborted by #cancelIdleRecap when any
@@ -131,11 +134,11 @@ export class EventController {
131
134
  getSmoothStreaming: () => this.ctx.settings.get("display.smoothStreaming"),
132
135
  getHideThinkingBlock: () => this.ctx.effectiveHideThinkingBlock,
133
136
  getProseOnlyThinking: () => this.ctx.proseOnlyThinking,
134
- requestRender: () => this.ctx.ui.requestRender(),
137
+ requestRender: component => this.ctx.ui.requestComponentRender(component),
135
138
  });
136
139
  this.#toolArgsReveal = new ToolArgsRevealController({
137
140
  getSmoothStreaming: () => this.ctx.settings.get("display.smoothStreaming"),
138
- requestRender: () => this.ctx.ui.requestRender(),
141
+ requestRender: component => this.ctx.ui.requestComponentRender(component),
139
142
  });
140
143
  this.#handlers = {
141
144
  agent_start: e => this.#handleAgentStart(e),
@@ -325,6 +328,42 @@ export class EventController {
325
328
  this.#terminalProgressActive = false;
326
329
  }
327
330
 
331
+ #trackRetrySupersededAssistantComponent(component: AssistantMessageComponent | undefined): void {
332
+ if (!component) return;
333
+ const persistenceKey = component.messagePersistenceKey();
334
+ if (persistenceKey) this.#retrySupersededAssistantComponents.set(persistenceKey, component);
335
+ if (!this.#retrySupersededAssistantQueue.includes(component)) {
336
+ this.#retrySupersededAssistantQueue.push(component);
337
+ }
338
+ }
339
+
340
+ #takeRetrySupersededAssistantComponent(persistenceKey: string | undefined): AssistantMessageComponent | undefined {
341
+ if (persistenceKey) {
342
+ const component = this.#retrySupersededAssistantComponents.get(persistenceKey);
343
+ if (component) {
344
+ this.#retrySupersededAssistantComponents.delete(persistenceKey);
345
+ this.#retrySupersededAssistantQueue = this.#retrySupersededAssistantQueue.filter(
346
+ item => item !== component,
347
+ );
348
+ return component;
349
+ }
350
+ }
351
+ while (this.#retrySupersededAssistantQueue.length > 0) {
352
+ const component = this.#retrySupersededAssistantQueue.shift();
353
+ if (!component) continue;
354
+ const key = component.messagePersistenceKey();
355
+ if (key && this.#retrySupersededAssistantComponents.get(key) !== component) continue;
356
+ if (key) this.#retrySupersededAssistantComponents.delete(key);
357
+ return component;
358
+ }
359
+ return undefined;
360
+ }
361
+
362
+ #clearRetrySupersededAssistantComponents(): void {
363
+ this.#retrySupersededAssistantComponents.clear();
364
+ this.#retrySupersededAssistantQueue = [];
365
+ }
366
+
328
367
  async #handleAgentStart(_event: Extract<AgentSessionEvent, { type: "agent_start" }>): Promise<void> {
329
368
  this.#lastIntent = undefined;
330
369
  this.#readToolCallArgs.clear();
@@ -468,7 +507,7 @@ export class EventController {
468
507
  if (!components) return;
469
508
  let removed = false;
470
509
  for (const component of components) {
471
- if (!this.ctx.chatContainer.isWithinLiveRegion(component)) continue;
510
+ if (!this.ctx.chatContainer.isBlockUncommitted(component)) continue;
472
511
  this.ctx.chatContainer.removeChild(component);
473
512
  removed = true;
474
513
  }
@@ -493,16 +532,20 @@ export class EventController {
493
532
  * Resolve the pending displaceable poll block before the next block lands.
494
533
  * A follow-up `job` call displaces it — the stale "waiting on N jobs" frame
495
534
  * is removed so repeated polls read as one persistent poll — while anything
496
- * else seals it in place as final history. Removal is safe only because a
497
- * displaceable block never finalizes: commits stop at the first live block,
498
- * so none of its rows have entered native scrollback (see
499
- * ToolExecutionComponent.isDisplaceableBlock).
535
+ * else seals it in place as final history. Removal is gated on none of the
536
+ * block's rows having entered native scrollback: rows already on the tape
537
+ * are immutable visual history, so a scrolled-off poll seals instead of
538
+ * being retracted.
500
539
  */
501
540
  #resolveDisplaceablePoll(nextToolName?: string): void {
502
541
  const previous = this.#displaceablePollComponent;
503
542
  if (!previous) return;
504
543
  this.#displaceablePollComponent = undefined;
505
- if (nextToolName === "job" && previous.isDisplaceableBlock()) {
544
+ if (
545
+ nextToolName === "job" &&
546
+ previous.isDisplaceableBlock() &&
547
+ this.ctx.chatContainer.isBlockUncommitted(previous)
548
+ ) {
506
549
  this.ctx.chatContainer.removeChild(previous);
507
550
  }
508
551
  // Sealing stops the waiting-poll spinner and freezes the block (for a
@@ -520,7 +563,9 @@ export class EventController {
520
563
  }
521
564
  if (previous.canBeDisplacedBy(nextToolName)) {
522
565
  this.#displaceableTodoComponent = undefined;
523
- this.ctx.chatContainer.removeChild(previous);
566
+ if (this.ctx.chatContainer.isBlockUncommitted(previous)) {
567
+ this.ctx.chatContainer.removeChild(previous);
568
+ }
524
569
  previous.seal();
525
570
  this.ctx.ui.requestRender();
526
571
  return;
@@ -805,7 +850,7 @@ export class EventController {
805
850
  }
806
851
  this.#lastAssistantComponent = this.ctx.streamingComponent;
807
852
  this.#lastAssistantComponent.markTranscriptBlockFinalized();
808
- if (settings.get("display.showTokenUsage")) {
853
+ if (settings.get("display.showTokenUsage") && assistantUsageIsBilled(event.message.usage)) {
809
854
  this.ctx.chatContainer.addChild(
810
855
  createUsageRowBlock(event.message.usage, event.message.duration, event.message.ttft),
811
856
  );
@@ -980,7 +1025,9 @@ export class EventController {
980
1025
  const previous = this.#displaceableTodoComponent;
981
1026
  if (previous && previous !== component && previous.isDisplaceableBlock()) {
982
1027
  this.#displaceableTodoComponent = undefined;
983
- this.ctx.chatContainer.removeChild(previous);
1028
+ if (this.ctx.chatContainer.isBlockUncommitted(previous)) {
1029
+ this.ctx.chatContainer.removeChild(previous);
1030
+ }
984
1031
  previous.seal();
985
1032
  }
986
1033
  this.#displaceableTodoComponent = component;
@@ -1219,6 +1266,7 @@ export class EventController {
1219
1266
  }
1220
1267
 
1221
1268
  async #handleAutoRetryStart(event: Extract<AgentSessionEvent, { type: "auto_retry_start" }>): Promise<void> {
1269
+ this.#trackRetrySupersededAssistantComponent(this.#lastAssistantComponent);
1222
1270
  this.#stopWorkingLoader();
1223
1271
  this.ctx.statusContainer.clear();
1224
1272
  if (AIError.is(event.errorId, AIError.Flag.ThinkingLoop)) {
@@ -1246,7 +1294,21 @@ export class EventController {
1246
1294
  this.ctx.retryLoader = undefined;
1247
1295
  this.ctx.statusContainer.clear();
1248
1296
  }
1249
- if (!event.success) {
1297
+ if (event.success) {
1298
+ let appliedRecovered = false;
1299
+ for (const recovered of event.recoveredErrors ?? []) {
1300
+ const component = this.#takeRetrySupersededAssistantComponent(recovered.persistenceKey);
1301
+ if (!component) continue;
1302
+ component.applyRetryRecovery(recovered.retryRecovery);
1303
+ if (this.#pinnedErrorComponent === component) this.#pinnedErrorComponent = undefined;
1304
+ appliedRecovered = true;
1305
+ }
1306
+ if (appliedRecovered || (event.recoveredErrors?.length ?? 0) > 0) {
1307
+ this.ctx.clearPinnedError();
1308
+ }
1309
+ this.#clearRetrySupersededAssistantComponents();
1310
+ } else {
1311
+ this.#clearRetrySupersededAssistantComponents();
1250
1312
  this.ctx.showError(`Retry failed after ${event.attempt} attempts: ${event.finalError || "Unknown error"}`);
1251
1313
  }
1252
1314
  this.#ensureWorkingLoaderWhileStreaming();
@@ -1268,15 +1330,14 @@ export class EventController {
1268
1330
  async #handleTtsrTriggered(event: Extract<AgentSessionEvent, { type: "ttsr_triggered" }>): Promise<void> {
1269
1331
  // Consecutive notifications (e.g. per-tool matches from one assistant
1270
1332
  // message) merge into the previous block instead of stacking. Mutating an
1271
- // existing block is only safe while it sits inside the live region — a
1272
- // still-mutating block above it means none of its rows have been committed
1273
- // to native scrollback yet (commits are prefix-only and stop at the first
1274
- // live block), so the grown block still repaints.
1333
+ // existing block is only safe while none of its rows have entered native
1334
+ // scrollback committed rows are immutable visual history and a grown
1335
+ // block would shift them.
1275
1336
  const previous = this.#lastTtsrNotification;
1276
1337
  if (
1277
1338
  previous &&
1278
1339
  this.ctx.chatContainer.children.at(-1) === previous &&
1279
- this.ctx.chatContainer.isWithinLiveRegion(previous)
1340
+ this.ctx.chatContainer.isBlockUncommitted(previous)
1280
1341
  ) {
1281
1342
  previous.addRules(event.rules);
1282
1343
  this.ctx.ui.requestRender();
@@ -0,0 +1,58 @@
1
+ import { describe, expect, it, vi } from "bun:test";
2
+ import type { ExtensionUIContext } from "../../extensibility/extensions";
3
+ import { CustomEditor } from "../components/custom-editor";
4
+ import { getEditorTheme } from "../theme/theme";
5
+ import type { InteractiveModeContext } from "../types";
6
+ import { ExtensionUiController } from "./extension-ui-controller";
7
+
8
+ function makeHarness() {
9
+ const editor = new CustomEditor(getEditorTheme());
10
+ const requestRender = vi.fn();
11
+ let uiContext: ExtensionUIContext | undefined;
12
+ const ctx = {
13
+ editor,
14
+ ui: {
15
+ requestRender,
16
+ },
17
+ session: {
18
+ extensionRunner: undefined,
19
+ },
20
+ setToolUIContext(context: ExtensionUIContext, hasUI: boolean): void {
21
+ expect(hasUI).toBe(true);
22
+ uiContext = context;
23
+ },
24
+ } as unknown as InteractiveModeContext;
25
+
26
+ return {
27
+ editor,
28
+ requestRender,
29
+ async init(): Promise<ExtensionUIContext> {
30
+ await new ExtensionUiController(ctx).initHooksAndCustomTools();
31
+ expect(uiContext).toBeDefined();
32
+ return uiContext!;
33
+ },
34
+ };
35
+ }
36
+
37
+ describe("ExtensionUiController editor UI", () => {
38
+ it("requests a render after extension pasteToEditor mutates the prompt", async () => {
39
+ const harness = makeHarness();
40
+ const ui = await harness.init();
41
+
42
+ ui.pasteToEditor("hello");
43
+ ui.pasteToEditor(" world");
44
+
45
+ expect(harness.editor.getText()).toBe("hello world");
46
+ expect(harness.requestRender).toHaveBeenCalledTimes(2);
47
+ });
48
+
49
+ it("requests a render after extension setEditorText replaces the prompt", async () => {
50
+ const harness = makeHarness();
51
+ const ui = await harness.init();
52
+
53
+ ui.setEditorText("hello");
54
+
55
+ expect(harness.editor.getText()).toBe("hello");
56
+ expect(harness.requestRender).toHaveBeenCalledTimes(1);
57
+ });
58
+ });
@@ -24,7 +24,7 @@ import { HookInputComponent } from "../../modes/components/hook-input";
24
24
  import { HookSelectorComponent, type HookSelectorSlider } from "../../modes/components/hook-selector";
25
25
  import { getAvailableThemesWithPaths, getThemeByName, setTheme, type Theme, theme } from "../../modes/theme/theme";
26
26
  import type { InteractiveModeContext, InteractiveSelectorDialogOptions } from "../../modes/types";
27
- import { USER_INTERRUPT_LABEL } from "../../session/messages";
27
+ import { normalizeCustomMessagePayload, USER_INTERRUPT_LABEL } from "../../session/messages";
28
28
  import { setSessionTerminalTitle, setTerminalTitle } from "../../utils/title-generator";
29
29
 
30
30
  const MAX_WIDGET_LINES = 10;
@@ -71,9 +71,13 @@ export class ExtensionUiController {
71
71
  setWidget: (key, content, options) => this.setHookWidget(key, content, options),
72
72
  setTitle: title => setTerminalTitle(title),
73
73
  custom: (factory, options) => this.showHookCustom(factory, options),
74
- setEditorText: text => this.ctx.editor.setText(text),
74
+ setEditorText: text => {
75
+ this.ctx.editor.setText(text);
76
+ this.ctx.ui.requestRender();
77
+ },
75
78
  pasteToEditor: text => {
76
79
  this.ctx.editor.handleInput(`\x1b[200~${text}\x1b[201~`);
80
+ this.ctx.ui.requestRender();
77
81
  },
78
82
  getEditorText: () => this.ctx.editor.getText(),
79
83
  editor: (title, prefill, dialogOptions, editorOptions) =>
@@ -106,9 +110,10 @@ export class ExtensionUiController {
106
110
  const actions: ExtensionActions = {
107
111
  sendMessage: (message, options) => {
108
112
  const wasStreaming = this.ctx.session.isStreaming;
113
+ const normalized = normalizeCustomMessagePayload(message);
109
114
  this.ctx.session
110
- .sendCustomMessage(message, options)
111
- .then(() => this.#applyCustomMessageDisplay(wasStreaming, message.display))
115
+ .sendCustomMessage(normalized, options)
116
+ .then(() => this.#applyCustomMessageDisplay(wasStreaming, normalized.display))
112
117
  .catch((err: unknown) => {
113
118
  this.ctx.showError(
114
119
  `Extension sendMessage failed: ${err instanceof Error ? err.message : String(err)}`,
@@ -342,9 +347,10 @@ export class ExtensionUiController {
342
347
  const actions: ExtensionActions = {
343
348
  sendMessage: (message, options) => {
344
349
  const wasStreaming = this.ctx.session.isStreaming;
350
+ const normalized = normalizeCustomMessagePayload(message);
345
351
  this.ctx.session
346
- .sendCustomMessage(message, options)
347
- .then(() => this.#applyCustomMessageDisplay(wasStreaming, message.display))
352
+ .sendCustomMessage(normalized, options)
353
+ .then(() => this.#applyCustomMessageDisplay(wasStreaming, normalized.display))
348
354
  .catch((err: unknown) => {
349
355
  const errorText = `Extension sendMessage failed: ${err instanceof Error ? err.message : String(err)}`;
350
356
  this.ctx.showError(errorText);
@@ -880,7 +886,6 @@ export class ExtensionUiController {
880
886
 
881
887
  async #updateSessionName(name: string): Promise<void> {
882
888
  await this.ctx.sessionManager.setSessionName(name, "user");
883
- setSessionTerminalTitle(this.ctx.sessionManager.getSessionName(), this.ctx.sessionManager.getCwd());
884
889
  }
885
890
 
886
891
  #sendExtensionUserMessage: SendUserMessageHandler = (content, options) => {
@@ -23,6 +23,7 @@ import { isLowSignalTitleInput } from "../../tiny/text";
23
23
  import { tinyTitleClient } from "../../tiny/title-client";
24
24
  import type { TinyTitleProgressEvent } from "../../tiny/title-protocol";
25
25
  import { shortenPath, TRUNCATE_LENGTHS, truncateToWidth } from "../../tools/render-utils";
26
+ import { vocalizer } from "../../tts/vocalizer";
26
27
  import {
27
28
  copyToClipboard,
28
29
  readImageFromClipboard,
@@ -33,7 +34,7 @@ import { EnhancedPasteController } from "../../utils/enhanced-paste";
33
34
  import { getEditorCommand, openInEditor } from "../../utils/external-editor";
34
35
  import { ensureSupportedImageInput, ImageInputTooLargeError, loadImageInput } from "../../utils/image-loading";
35
36
  import { resizeImage } from "../../utils/image-resize";
36
- import { generateSessionTitle, setSessionTerminalTitle } from "../../utils/title-generator";
37
+ import { generateSessionTitle } from "../../utils/title-generator";
37
38
 
38
39
  /**
39
40
  * Slash commands that may carry secrets in their arguments should never be
@@ -390,6 +391,13 @@ export class InputController {
390
391
  // Esc must not destroy an in-progress draft; it only disarms a previous empty-editor Esc.
391
392
  this.ctx.lastEscapeTime = 0;
392
393
  this.#clearStreamingEscapeArm();
394
+ } else if (vocalizer.isSpeaking()) {
395
+ // TTS buffers seconds of PCM past the streaming abort, so an Esc
396
+ // arriving after the model stopped would otherwise fall through to
397
+ // the double-Esc gesture while Kokoro reads on. Silence first;
398
+ // tree/branch stays reachable via a second Esc.
399
+ vocalizer.clear();
400
+ this.ctx.lastEscapeTime = 0;
393
401
  } else {
394
402
  // Double-interrupt with empty editor triggers /tree, /branch, or nothing based on setting
395
403
  const action = settings.get("doubleEscapeAction");
@@ -843,16 +851,10 @@ export class InputController {
843
851
  )
844
852
  .then(async title => {
845
853
  // Re-check: a concurrent attempt for an earlier message may have
846
- // already named the session. Don't clobber it.
854
+ // already named the session. Don't clobber it. Terminal title and
855
+ // accent updates fire from the onSessionNameChanged listener.
847
856
  if (title && !this.ctx.sessionManager.getSessionName()) {
848
- const applied = await this.ctx.sessionManager.setSessionName(title, "auto");
849
- if (applied) {
850
- setSessionTerminalTitle(
851
- this.ctx.sessionManager.getSessionName()!,
852
- this.ctx.sessionManager.getCwd(),
853
- );
854
- this.ctx.updateEditorBorderColor();
855
- }
857
+ await this.ctx.sessionManager.setSessionName(title, "auto");
856
858
  }
857
859
  })
858
860
  .catch(err => {
@@ -1426,18 +1426,27 @@ export class SelectorController {
1426
1426
  sessionFile: this.ctx.sessionManager.getSessionFile() ?? null,
1427
1427
  });
1428
1428
 
1429
- // The double-← gesture passes requireContent so it stays inert when there
1430
- // are no subagents to show; the explicit hub/observe keys still open the
1431
- // empty roster. The freshly built hub already ran the persisted-subagent
1432
- // scan, so its row count is the authoritative "is there anything to show".
1429
+ const showReadyHub = () => {
1430
+ // The double-← gesture passes requireContent so it stays inert when
1431
+ // neither live nor persisted subagents are available. Persisted rows now
1432
+ // load asynchronously, so defer the gate until that scan has refreshed the
1433
+ // hub instead of treating the initial empty table as authoritative.
1434
+ if (options?.requireContent && hub.isEmpty) {
1435
+ hub.dispose();
1436
+ return;
1437
+ }
1438
+
1439
+ this.ctx.editorContainer.clear();
1440
+ this.ctx.editorContainer.addChild(hub);
1441
+ this.ctx.ui.setFocus(hub);
1442
+ this.ctx.ui.requestRender();
1443
+ };
1444
+
1433
1445
  if (options?.requireContent && hub.isEmpty) {
1434
- hub.dispose();
1446
+ void hub.persistedSubagentsReady.then(showReadyHub);
1435
1447
  return;
1436
1448
  }
1437
1449
 
1438
- this.ctx.editorContainer.clear();
1439
- this.ctx.editorContainer.addChild(hub);
1440
- this.ctx.ui.setFocus(hub);
1441
- this.ctx.ui.requestRender();
1450
+ showReadyHub();
1442
1451
  }
1443
1452
  }
@@ -1,5 +1,5 @@
1
1
  import type { AssistantMessage } from "@oh-my-pi/pi-ai";
2
- import { getSegmenter } from "@oh-my-pi/pi-tui";
2
+ import { type Component, getSegmenter } from "@oh-my-pi/pi-tui";
3
3
  import { LRUCache } from "lru-cache/raw";
4
4
  import { formatThinkingForDisplay, hasDisplayableThinking } from "../../utils/thinking-display";
5
5
  import type { AssistantMessageComponent } from "../components/assistant-message";
@@ -10,14 +10,21 @@ export const CATCHUP_FRAMES = 8;
10
10
 
11
11
  type AssistantContentBlock = AssistantMessage["content"][number];
12
12
  type DisplayThinkingContentBlock = Extract<AssistantContentBlock, { type: "thinking" }> & { rawThinking?: string };
13
- type StreamingRevealComponent = Pick<AssistantMessageComponent, "updateContent">;
13
+ /** The concrete streaming-reveal target is an {@link AssistantMessageComponent}; the
14
+ * Component intersection is what lets the reveal request component-scoped renders
15
+ * through {@link TUI.requestComponentRender} instead of forcing a full-tree walk. */
16
+ type StreamingRevealComponent = Pick<AssistantMessageComponent, "updateContent"> & Component;
14
17
  type GraphemeSlicer = (index: number, text: string, units: number) => string;
15
18
 
16
19
  type StreamingRevealControllerOptions = {
17
20
  getSmoothStreaming(): boolean;
18
21
  getHideThinkingBlock(): boolean;
19
22
  getProseOnlyThinking(): boolean;
20
- requestRender(): void;
23
+ /** Called after each reveal tick with the component whose subtree changed;
24
+ * callers scope the render to that subtree (a full tree walk here at 30fps
25
+ * costs 5% of CPU on its own and drives the Box/Container overhead that
26
+ * cascades into another ~15% — see issue #4377). */
27
+ requestRender(component: Component): void;
21
28
  };
22
29
 
23
30
  const graphemeCountCache = new LRUCache<string, number>({ max: 128 });
@@ -210,7 +217,7 @@ export class StreamingRevealController {
210
217
  readonly #getSmoothStreaming: () => boolean;
211
218
  readonly #getHideThinkingBlock: () => boolean;
212
219
  readonly #getProseOnlyThinking: () => boolean;
213
- readonly #requestRender: () => void;
220
+ readonly #requestRender: (component: Component) => void;
214
221
  #target: AssistantMessage | undefined;
215
222
  #component: StreamingRevealComponent | undefined;
216
223
  #timer: NodeJS.Timeout | undefined;
@@ -384,7 +391,7 @@ export class StreamingRevealController {
384
391
  component.updateContent(this.#build(target, this.#revealed), {
385
392
  transient: true,
386
393
  });
387
- this.#requestRender();
394
+ this.#requestRender(component);
388
395
  if (this.#revealed >= total) {
389
396
  this.#stopTimer();
390
397
  }
@@ -1,8 +1,9 @@
1
+ import type { Component } from "@oh-my-pi/pi-tui";
1
2
  import { parseStreamingJson, parseStreamingJsonThrottled, STREAMING_JSON_PARSE_MIN_GROWTH } from "@oh-my-pi/pi-utils";
2
3
  import { nextStep, STREAMING_REVEAL_FRAME_MS } from "./streaming-reveal";
3
4
 
4
5
  /** Minimal component surface the reveal pushes frames into. */
5
- type ToolArgsRevealComponent = {
6
+ type ToolArgsRevealComponent = Component & {
6
7
  updateArgs(args: unknown, toolCallId?: string): void;
7
8
  };
8
9
 
@@ -25,7 +26,10 @@ export function streamingStringKeysForTool(toolName: string, rawInput: boolean):
25
26
 
26
27
  type ToolArgsRevealControllerOptions = {
27
28
  getSmoothStreaming(): boolean;
28
- requestRender(): void;
29
+ /** Called after each reveal tick with the component whose subtree changed;
30
+ * callers scope the render to that subtree instead of forcing a full-tree
31
+ * walk at 30fps (issue #4377). */
32
+ requestRender(component: Component): void;
29
33
  };
30
34
 
31
35
  type StreamingJsonStringExtractorResult = {
@@ -438,7 +442,7 @@ export function decodeStreamedToolArgs(partialJson: string, source: StreamedTool
438
442
  */
439
443
  export class ToolArgsRevealController {
440
444
  readonly #getSmoothStreaming: () => boolean;
441
- readonly #requestRender: () => void;
445
+ readonly #requestRender: (component: Component) => void;
442
446
  readonly #entries = new Map<string, RevealEntry>();
443
447
  #timer: NodeJS.Timeout | undefined;
444
448
 
@@ -560,7 +564,10 @@ export class ToolArgsRevealController {
560
564
 
561
565
  #tick(): void {
562
566
  let advanced = false;
563
- let rendered = false;
567
+ // Collect components with changed display args; render each subtree once
568
+ // per tick even when multiple entries share a component (they don't
569
+ // today, but the API contract doesn't prevent it).
570
+ const rendered = new Set<ToolArgsRevealComponent>();
564
571
  for (const [id, entry] of this.#entries) {
565
572
  const backlog = entry.target.length - entry.revealed;
566
573
  if (backlog <= 0 || !entry.component) continue;
@@ -568,12 +575,12 @@ export class ToolArgsRevealController {
568
575
  const display = displayArgsForPrefix(entry, entry.target.slice(0, entry.revealed));
569
576
  if (display.changed) {
570
577
  entry.component.updateArgs(display.args, id);
571
- rendered = true;
578
+ rendered.add(entry.component);
572
579
  }
573
580
  advanced = true;
574
581
  }
575
582
  if (advanced) {
576
- if (rendered) this.#requestRender();
583
+ for (const component of rendered) this.#requestRender(component);
577
584
  } else {
578
585
  // Every entry caught up (or unbound); setTarget restarts on growth.
579
586
  this.#stopTimer();