@oh-my-pi/pi-coding-agent 16.3.6 → 16.3.8

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 (771) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/dist/cli.js +3329 -3314
  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/hashline/execute.d.ts +4 -4
  136. package/dist/types/edit/hashline/filesystem.d.ts +3 -3
  137. package/dist/types/edit/hashline/index.d.ts +5 -5
  138. package/dist/types/edit/index.d.ts +19 -19
  139. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  140. package/dist/types/edit/modes/patch.d.ts +3 -3
  141. package/dist/types/edit/modes/replace.d.ts +3 -3
  142. package/dist/types/edit/renderer.d.ts +15 -15
  143. package/dist/types/edit/snapshot-details.d.ts +1 -1
  144. package/dist/types/edit/streaming.d.ts +2 -2
  145. package/dist/types/eval/agent-bridge.d.ts +4 -4
  146. package/dist/types/eval/backend-helpers.d.ts +3 -3
  147. package/dist/types/eval/backend.d.ts +2 -2
  148. package/dist/types/eval/bridge-timeout.d.ts +1 -1
  149. package/dist/types/eval/budget-bridge.d.ts +2 -2
  150. package/dist/types/eval/completion-bridge.d.ts +2 -2
  151. package/dist/types/eval/concurrency-bridge.d.ts +2 -2
  152. package/dist/types/eval/executor-base.d.ts +3 -3
  153. package/dist/types/eval/index.d.ts +6 -6
  154. package/dist/types/eval/jl/executor.d.ts +4 -4
  155. package/dist/types/eval/jl/index.d.ts +2 -2
  156. package/dist/types/eval/jl/kernel.d.ts +5 -5
  157. package/dist/types/eval/js/context-manager.d.ts +4 -4
  158. package/dist/types/eval/js/executor.d.ts +3 -3
  159. package/dist/types/eval/js/index.d.ts +2 -2
  160. package/dist/types/eval/js/shared/helpers.d.ts +1 -1
  161. package/dist/types/eval/js/shared/runtime.d.ts +2 -2
  162. package/dist/types/eval/js/tool-bridge.d.ts +5 -5
  163. package/dist/types/eval/js/worker-core.d.ts +1 -1
  164. package/dist/types/eval/js/worker-protocol.d.ts +2 -2
  165. package/dist/types/eval/kernel-base.d.ts +1 -1
  166. package/dist/types/eval/py/executor.d.ts +3 -3
  167. package/dist/types/eval/py/index.d.ts +2 -2
  168. package/dist/types/eval/py/kernel.d.ts +5 -5
  169. package/dist/types/eval/py/tool-bridge.d.ts +2 -2
  170. package/dist/types/eval/rb/executor.d.ts +3 -3
  171. package/dist/types/eval/rb/index.d.ts +2 -2
  172. package/dist/types/eval/rb/kernel.d.ts +6 -6
  173. package/dist/types/eval/session-id.d.ts +1 -1
  174. package/dist/types/eval/types.d.ts +1 -1
  175. package/dist/types/exa/index.d.ts +2 -2
  176. package/dist/types/exa/mcp-client.d.ts +3 -3
  177. package/dist/types/exec/bash-executor.d.ts +1 -1
  178. package/dist/types/export/html/index.d.ts +2 -2
  179. package/dist/types/export/share.d.ts +3 -3
  180. package/dist/types/export/ttsr.d.ts +2 -2
  181. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +2 -2
  182. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +2 -2
  183. package/dist/types/extensibility/custom-commands/index.d.ts +2 -2
  184. package/dist/types/extensibility/custom-commands/loader.d.ts +1 -1
  185. package/dist/types/extensibility/custom-commands/types.d.ts +3 -3
  186. package/dist/types/extensibility/custom-tools/index.d.ts +3 -3
  187. package/dist/types/extensibility/custom-tools/loader.d.ts +3 -3
  188. package/dist/types/extensibility/custom-tools/types.d.ts +12 -12
  189. package/dist/types/extensibility/custom-tools/wrapper.d.ts +2 -2
  190. package/dist/types/extensibility/extensions/compact-handler.d.ts +1 -1
  191. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +5 -5
  192. package/dist/types/extensibility/extensions/index.d.ts +5 -5
  193. package/dist/types/extensibility/extensions/loader.d.ts +2 -2
  194. package/dist/types/extensibility/extensions/model-api.d.ts +3 -3
  195. package/dist/types/extensibility/extensions/runner.d.ts +6 -6
  196. package/dist/types/extensibility/extensions/types.d.ts +43 -31
  197. package/dist/types/extensibility/extensions/wrapper.d.ts +2 -2
  198. package/dist/types/extensibility/hooks/index.d.ts +6 -6
  199. package/dist/types/extensibility/hooks/loader.d.ts +4 -4
  200. package/dist/types/extensibility/hooks/runner.d.ts +5 -5
  201. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +1 -1
  202. package/dist/types/extensibility/hooks/types.d.ts +18 -18
  203. package/dist/types/extensibility/legacy-pi-ai-shim.d.ts +12 -4
  204. package/dist/types/extensibility/legacy-pi-coding-agent-shim.d.ts +194 -5
  205. package/dist/types/extensibility/plugins/doctor.d.ts +1 -1
  206. package/dist/types/extensibility/plugins/index.d.ts +7 -7
  207. package/dist/types/extensibility/plugins/installer.d.ts +1 -1
  208. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +1 -1
  209. package/dist/types/extensibility/plugins/loader.d.ts +1 -1
  210. package/dist/types/extensibility/plugins/manager.d.ts +1 -1
  211. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +1 -1
  212. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -6
  213. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +1 -1
  214. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +1 -1
  215. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +1 -1
  216. package/dist/types/extensibility/plugins/runtime-config.d.ts +1 -1
  217. package/dist/types/extensibility/session-handler-types.d.ts +1 -1
  218. package/dist/types/extensibility/shared-events.d.ts +4 -4
  219. package/dist/types/extensibility/skills.d.ts +3 -3
  220. package/dist/types/extensibility/slash-commands.d.ts +1 -1
  221. package/dist/types/extensibility/typebox.d.ts +1 -1
  222. package/dist/types/extensibility/utils.d.ts +1 -1
  223. package/dist/types/goals/guided-setup.d.ts +1 -1
  224. package/dist/types/goals/index.d.ts +3 -3
  225. package/dist/types/goals/runtime.d.ts +1 -1
  226. package/dist/types/goals/state.d.ts +1 -1
  227. package/dist/types/goals/tools/goal-tool.d.ts +4 -4
  228. package/dist/types/hindsight/backend.d.ts +2 -2
  229. package/dist/types/hindsight/bank.d.ts +2 -2
  230. package/dist/types/hindsight/client.d.ts +1 -1
  231. package/dist/types/hindsight/config.d.ts +1 -1
  232. package/dist/types/hindsight/index.d.ts +8 -8
  233. package/dist/types/hindsight/mental-models.d.ts +3 -3
  234. package/dist/types/hindsight/state.d.ts +5 -5
  235. package/dist/types/hindsight/transcript.d.ts +2 -2
  236. package/dist/types/index.d.ts +38 -38
  237. package/dist/types/internal-urls/agent-protocol.d.ts +1 -1
  238. package/dist/types/internal-urls/artifact-protocol.d.ts +1 -1
  239. package/dist/types/internal-urls/filesystem-resource.d.ts +1 -1
  240. package/dist/types/internal-urls/history-protocol.d.ts +1 -1
  241. package/dist/types/internal-urls/index.d.ts +16 -16
  242. package/dist/types/internal-urls/issue-pr-protocol.d.ts +1 -1
  243. package/dist/types/internal-urls/local-protocol.d.ts +1 -1
  244. package/dist/types/internal-urls/mcp-protocol.d.ts +1 -1
  245. package/dist/types/internal-urls/memory-protocol.d.ts +1 -1
  246. package/dist/types/internal-urls/omp-protocol.d.ts +1 -1
  247. package/dist/types/internal-urls/parse.d.ts +1 -1
  248. package/dist/types/internal-urls/router.d.ts +1 -1
  249. package/dist/types/internal-urls/rule-protocol.d.ts +1 -1
  250. package/dist/types/internal-urls/skill-protocol.d.ts +1 -1
  251. package/dist/types/internal-urls/ssh-protocol.d.ts +1 -1
  252. package/dist/types/internal-urls/types.d.ts +2 -2
  253. package/dist/types/internal-urls/vault-protocol.d.ts +1 -1
  254. package/dist/types/irc/bus.d.ts +2 -2
  255. package/dist/types/lib/xai-http.d.ts +1 -1
  256. package/dist/types/lsp/client.d.ts +23 -1
  257. package/dist/types/lsp/clients/biome-client.d.ts +1 -1
  258. package/dist/types/lsp/clients/index.d.ts +4 -4
  259. package/dist/types/lsp/clients/lsp-linter-client.d.ts +1 -1
  260. package/dist/types/lsp/clients/swiftlint-client.d.ts +1 -1
  261. package/dist/types/lsp/config.d.ts +1 -1
  262. package/dist/types/lsp/diagnostics-ledger.d.ts +1 -1
  263. package/dist/types/lsp/edits.d.ts +1 -1
  264. package/dist/types/lsp/index.d.ts +6 -6
  265. package/dist/types/lsp/render.d.ts +2 -2
  266. package/dist/types/lsp/startup-events.d.ts +1 -1
  267. package/dist/types/lsp/utils.d.ts +2 -2
  268. package/dist/types/main.d.ts +12 -12
  269. package/dist/types/markit/converters/docx.d.ts +1 -1
  270. package/dist/types/markit/converters/epub.d.ts +1 -1
  271. package/dist/types/markit/converters/pdf/columns.d.ts +1 -1
  272. package/dist/types/markit/converters/pdf/extract.d.ts +1 -1
  273. package/dist/types/markit/converters/pdf/grid.d.ts +1 -1
  274. package/dist/types/markit/converters/pdf/headers.d.ts +1 -1
  275. package/dist/types/markit/converters/pdf/index.d.ts +1 -1
  276. package/dist/types/markit/converters/pdf/render.d.ts +1 -1
  277. package/dist/types/markit/converters/pptx.d.ts +1 -1
  278. package/dist/types/markit/converters/xlsx.d.ts +1 -1
  279. package/dist/types/markit/index.d.ts +2 -2
  280. package/dist/types/markit/registry.d.ts +1 -1
  281. package/dist/types/mcp/client.d.ts +1 -1
  282. package/dist/types/mcp/config-writer.d.ts +1 -1
  283. package/dist/types/mcp/config.d.ts +2 -2
  284. package/dist/types/mcp/index.d.ts +12 -12
  285. package/dist/types/mcp/loader.d.ts +5 -5
  286. package/dist/types/mcp/manager.d.ts +7 -7
  287. package/dist/types/mcp/oauth-credentials.d.ts +3 -3
  288. package/dist/types/mcp/oauth-flow.d.ts +1 -1
  289. package/dist/types/mcp/render.d.ts +3 -3
  290. package/dist/types/mcp/smithery-registry.d.ts +1 -1
  291. package/dist/types/mcp/tool-bridge.d.ts +5 -5
  292. package/dist/types/mcp/tool-cache.d.ts +2 -2
  293. package/dist/types/mcp/transports/http.d.ts +1 -1
  294. package/dist/types/mcp/transports/index.d.ts +3 -3
  295. package/dist/types/mcp/transports/sse.d.ts +1 -1
  296. package/dist/types/mcp/transports/stdio.d.ts +1 -1
  297. package/dist/types/mcp/types.d.ts +1 -1
  298. package/dist/types/memories/index.d.ts +4 -4
  299. package/dist/types/memory-backend/index.d.ts +7 -7
  300. package/dist/types/memory-backend/local-backend.d.ts +1 -1
  301. package/dist/types/memory-backend/off-backend.d.ts +1 -1
  302. package/dist/types/memory-backend/resolve.d.ts +2 -2
  303. package/dist/types/memory-backend/runtime.d.ts +2 -2
  304. package/dist/types/memory-backend/types.d.ts +5 -5
  305. package/dist/types/mnemopi/backend.d.ts +2 -2
  306. package/dist/types/mnemopi/config.d.ts +1 -1
  307. package/dist/types/mnemopi/embed-client.d.ts +2 -2
  308. package/dist/types/mnemopi/embed-worker.d.ts +1 -1
  309. package/dist/types/mnemopi/index.d.ts +3 -3
  310. package/dist/types/mnemopi/state.d.ts +38 -2
  311. package/dist/types/modes/acp/acp-agent.d.ts +2 -2
  312. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -1
  313. package/dist/types/modes/acp/acp-event-mapper.d.ts +1 -1
  314. package/dist/types/modes/acp/acp-mode.d.ts +1 -1
  315. package/dist/types/modes/acp/index.d.ts +2 -2
  316. package/dist/types/modes/components/advisor-config.d.ts +3 -3
  317. package/dist/types/modes/components/advisor-message.d.ts +2 -2
  318. package/dist/types/modes/components/agent-dashboard.d.ts +2 -2
  319. package/dist/types/modes/components/agent-hub.d.ts +11 -9
  320. package/dist/types/modes/components/agent-transcript-viewer.d.ts +6 -6
  321. package/dist/types/modes/components/assistant-message.d.ts +2 -2
  322. package/dist/types/modes/components/background-tan-message.d.ts +2 -2
  323. package/dist/types/modes/components/bash-execution.d.ts +1 -1
  324. package/dist/types/modes/components/bordered-loader.d.ts +1 -1
  325. package/dist/types/modes/components/chat-transcript-builder.d.ts +3 -3
  326. package/dist/types/modes/components/collab-prompt-message.d.ts +2 -2
  327. package/dist/types/modes/components/compaction-summary-message.d.ts +1 -1
  328. package/dist/types/modes/components/copy-selector.d.ts +1 -1
  329. package/dist/types/modes/components/custom-editor.d.ts +1 -1
  330. package/dist/types/modes/components/custom-message.d.ts +2 -2
  331. package/dist/types/modes/components/eval-execution.d.ts +1 -1
  332. package/dist/types/modes/components/execution-shared.d.ts +1 -1
  333. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +2 -2
  334. package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
  335. package/dist/types/modes/components/extensions/index.d.ts +5 -5
  336. package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
  337. package/dist/types/modes/components/extensions/state-manager.d.ts +1 -1
  338. package/dist/types/modes/components/extensions/types.d.ts +1 -1
  339. package/dist/types/modes/components/footer.d.ts +1 -1
  340. package/dist/types/modes/components/history-search.d.ts +1 -1
  341. package/dist/types/modes/components/hook-message.d.ts +2 -2
  342. package/dist/types/modes/components/index.d.ts +38 -38
  343. package/dist/types/modes/components/keybinding-hints.d.ts +1 -1
  344. package/dist/types/modes/components/logout-account-selector.d.ts +1 -1
  345. package/dist/types/modes/components/mcp-add-wizard.d.ts +1 -1
  346. package/dist/types/modes/components/message-frame.d.ts +1 -1
  347. package/dist/types/modes/components/model-selector.d.ts +3 -3
  348. package/dist/types/modes/components/oauth-selector.d.ts +1 -1
  349. package/dist/types/modes/components/plan-review-overlay.d.ts +1 -1
  350. package/dist/types/modes/components/plugin-settings.d.ts +3 -3
  351. package/dist/types/modes/components/read-tool-group.d.ts +1 -1
  352. package/dist/types/modes/components/reset-usage-selector.d.ts +1 -1
  353. package/dist/types/modes/components/segment-track.d.ts +1 -1
  354. package/dist/types/modes/components/session-selector.d.ts +1 -1
  355. package/dist/types/modes/components/settings-defs.d.ts +1 -1
  356. package/dist/types/modes/components/settings-selector.d.ts +2 -2
  357. package/dist/types/modes/components/skill-message.d.ts +1 -1
  358. package/dist/types/modes/components/status-line/component.d.ts +2 -2
  359. package/dist/types/modes/components/status-line/context-thresholds.d.ts +1 -1
  360. package/dist/types/modes/components/status-line/index.d.ts +5 -5
  361. package/dist/types/modes/components/status-line/presets.d.ts +1 -1
  362. package/dist/types/modes/components/status-line/segments.d.ts +2 -2
  363. package/dist/types/modes/components/status-line/separators.d.ts +2 -2
  364. package/dist/types/modes/components/status-line/types.d.ts +8 -4
  365. package/dist/types/modes/components/tiny-title-download-progress.d.ts +2 -2
  366. package/dist/types/modes/components/todo-reminder.d.ts +1 -1
  367. package/dist/types/modes/components/tool-execution.d.ts +1 -1
  368. package/dist/types/modes/components/tree-selector.d.ts +2 -2
  369. package/dist/types/modes/components/ttsr-notification.d.ts +1 -1
  370. package/dist/types/modes/controllers/btw-controller.d.ts +1 -1
  371. package/dist/types/modes/controllers/command-controller-shared.d.ts +2 -2
  372. package/dist/types/modes/controllers/command-controller.d.ts +7 -7
  373. package/dist/types/modes/controllers/event-controller.d.ts +3 -3
  374. package/dist/types/modes/controllers/extension-ui-controller.d.ts +5 -5
  375. package/dist/types/modes/controllers/extension-ui-controller.test.d.ts +1 -0
  376. package/dist/types/modes/controllers/input-controller.d.ts +2 -2
  377. package/dist/types/modes/controllers/mcp-command-controller.d.ts +1 -1
  378. package/dist/types/modes/controllers/omfg-controller.d.ts +1 -1
  379. package/dist/types/modes/controllers/omfg-rule.d.ts +1 -1
  380. package/dist/types/modes/controllers/selector-controller.d.ts +2 -2
  381. package/dist/types/modes/controllers/session-focus-controller.d.ts +4 -4
  382. package/dist/types/modes/controllers/ssh-command-controller.d.ts +1 -1
  383. package/dist/types/modes/controllers/streaming-reveal.d.ts +11 -3
  384. package/dist/types/modes/controllers/tan-command-controller.d.ts +1 -1
  385. package/dist/types/modes/controllers/todo-command-controller.d.ts +1 -1
  386. package/dist/types/modes/controllers/tool-args-reveal.d.ts +6 -2
  387. package/dist/types/modes/image-references.d.ts +1 -1
  388. package/dist/types/modes/index.d.ts +3 -3
  389. package/dist/types/modes/interactive-mode.d.ts +34 -34
  390. package/dist/types/modes/orchestrate.d.ts +1 -1
  391. package/dist/types/modes/print-mode.d.ts +1 -1
  392. package/dist/types/modes/prompt-action-autocomplete.d.ts +1 -1
  393. package/dist/types/modes/rpc/host-tools.d.ts +1 -1
  394. package/dist/types/modes/rpc/host-uris.d.ts +3 -3
  395. package/dist/types/modes/rpc/rpc-client.d.ts +3 -3
  396. package/dist/types/modes/rpc/rpc-mode.d.ts +6 -6
  397. package/dist/types/modes/rpc/rpc-subagents.d.ts +3 -3
  398. package/dist/types/modes/rpc/rpc-types.d.ts +7 -7
  399. package/dist/types/modes/running-subagent-badge.d.ts +1 -1
  400. package/dist/types/modes/runtime-init.d.ts +2 -2
  401. package/dist/types/modes/session-observer-registry.d.ts +2 -2
  402. package/dist/types/modes/setup-wizard/index.d.ts +6 -6
  403. package/dist/types/modes/setup-wizard/lazy.d.ts +1 -1
  404. package/dist/types/modes/setup-wizard/scenes/glyph.d.ts +1 -1
  405. package/dist/types/modes/setup-wizard/scenes/providers.d.ts +1 -1
  406. package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +1 -1
  407. package/dist/types/modes/setup-wizard/scenes/theme.d.ts +1 -1
  408. package/dist/types/modes/setup-wizard/scenes/types.d.ts +1 -1
  409. package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +1 -1
  410. package/dist/types/modes/setup-wizard/startup-splash.d.ts +1 -1
  411. package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +2 -2
  412. package/dist/types/modes/shared.d.ts +1 -1
  413. package/dist/types/modes/skill-command.d.ts +2 -2
  414. package/dist/types/modes/theme/shimmer.d.ts +1 -1
  415. package/dist/types/modes/theme/theme.d.ts +1 -1
  416. package/dist/types/modes/types.d.ts +31 -31
  417. package/dist/types/modes/ultrathink.d.ts +1 -1
  418. package/dist/types/modes/utils/context-usage.d.ts +5 -5
  419. package/dist/types/modes/utils/hotkeys-markdown.d.ts +1 -1
  420. package/dist/types/modes/utils/interactive-context-helpers.d.ts +2 -2
  421. package/dist/types/modes/utils/tools-markdown.d.ts +1 -1
  422. package/dist/types/modes/utils/transcript-render-helpers.d.ts +10 -2
  423. package/dist/types/modes/utils/transcript-render-helpers.test.d.ts +1 -0
  424. package/dist/types/modes/utils/ui-helpers.d.ts +2 -2
  425. package/dist/types/modes/workflow.d.ts +1 -1
  426. package/dist/types/plan-mode/plan-handoff.d.ts +1 -1
  427. package/dist/types/registry/agent-lifecycle.d.ts +2 -2
  428. package/dist/types/registry/agent-registry.d.ts +1 -1
  429. package/dist/types/sdk.d.ts +40 -36
  430. package/dist/types/secrets/index.d.ts +2 -2
  431. package/dist/types/secrets/obfuscator.d.ts +1 -1
  432. package/dist/types/session/agent-session.d.ts +56 -42
  433. package/dist/types/session/agent-storage.d.ts +1 -1
  434. package/dist/types/session/auth-broker-config.d.ts +1 -1
  435. package/dist/types/session/codex-auto-reset.d.ts +1 -1
  436. package/dist/types/session/exit-diagnostics.d.ts +1 -1
  437. package/dist/types/session/indexed-session-storage.d.ts +2 -2
  438. package/dist/types/session/messages.d.ts +22 -3
  439. package/dist/types/session/redis-session-storage.d.ts +1 -1
  440. package/dist/types/session/session-context.d.ts +1 -1
  441. package/dist/types/session/session-entries.d.ts +4 -0
  442. package/dist/types/session/session-listing.d.ts +1 -1
  443. package/dist/types/session/session-loader.d.ts +4 -4
  444. package/dist/types/session/session-manager.d.ts +9 -8
  445. package/dist/types/session/session-migrations.d.ts +1 -1
  446. package/dist/types/session/session-paths.d.ts +1 -1
  447. package/dist/types/session/session-persistence.d.ts +2 -2
  448. package/dist/types/session/session-storage.d.ts +1 -1
  449. package/dist/types/session/session-title-slot.d.ts +1 -1
  450. package/dist/types/session/settings-stream-fn.d.ts +1 -1
  451. package/dist/types/session/sql-session-storage.d.ts +1 -1
  452. package/dist/types/session/unexpected-stop-classifier.d.ts +2 -2
  453. package/dist/types/slash-commands/acp-builtins.d.ts +2 -2
  454. package/dist/types/slash-commands/available-commands.d.ts +5 -5
  455. package/dist/types/slash-commands/builtin-registry.d.ts +2 -2
  456. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +1 -1
  457. package/dist/types/slash-commands/helpers/context-report.d.ts +1 -1
  458. package/dist/types/slash-commands/helpers/format.d.ts +1 -1
  459. package/dist/types/slash-commands/helpers/logout.d.ts +1 -1
  460. package/dist/types/slash-commands/helpers/marketplace-manager.d.ts +2 -2
  461. package/dist/types/slash-commands/helpers/mcp.d.ts +1 -1
  462. package/dist/types/slash-commands/helpers/parse.d.ts +1 -1
  463. package/dist/types/slash-commands/helpers/reset-usage.d.ts +1 -1
  464. package/dist/types/slash-commands/helpers/ssh.d.ts +1 -1
  465. package/dist/types/slash-commands/helpers/todo.d.ts +1 -1
  466. package/dist/types/slash-commands/helpers/usage-report.d.ts +1 -1
  467. package/dist/types/slash-commands/types.d.ts +6 -4
  468. package/dist/types/ssh/file-transfer.d.ts +1 -1
  469. package/dist/types/ssh/ssh-executor.d.ts +1 -1
  470. package/dist/types/ssh/sshfs-mount.d.ts +1 -1
  471. package/dist/types/stt/asr-client.d.ts +3 -3
  472. package/dist/types/stt/asr-protocol.d.ts +1 -1
  473. package/dist/types/stt/asr-worker.d.ts +1 -1
  474. package/dist/types/stt/downloader.d.ts +1 -1
  475. package/dist/types/stt/index.d.ts +8 -8
  476. package/dist/types/stt/models.d.ts +1 -1
  477. package/dist/types/system-prompt.d.ts +4 -4
  478. package/dist/types/task/agents.d.ts +1 -1
  479. package/dist/types/task/discovery.d.ts +1 -1
  480. package/dist/types/task/executor.d.ts +20 -20
  481. package/dist/types/task/index.d.ts +11 -11
  482. package/dist/types/task/isolation-runner.d.ts +7 -6
  483. package/dist/types/task/persisted-revive.d.ts +5 -5
  484. package/dist/types/task/provider-concurrency.d.ts +2 -2
  485. package/dist/types/task/render.d.ts +3 -3
  486. package/dist/types/task/renderer.d.ts +1 -1
  487. package/dist/types/task/repair-args.d.ts +1 -1
  488. package/dist/types/task/subprocess-tool-registry.d.ts +1 -1
  489. package/dist/types/task/types.d.ts +2 -2
  490. package/dist/types/task/yield-assembly.d.ts +1 -1
  491. package/dist/types/tiny/title-client.d.ts +2 -2
  492. package/dist/types/tiny/title-protocol.d.ts +1 -1
  493. package/dist/types/tiny/worker.d.ts +1 -1
  494. package/dist/types/tool-discovery/mode.d.ts +2 -2
  495. package/dist/types/tools/__tests__/glob.test.d.ts +1 -0
  496. package/dist/types/tools/acp-bridge.d.ts +2 -2
  497. package/dist/types/tools/ask.d.ts +3 -3
  498. package/dist/types/tools/ast-edit.d.ts +4 -4
  499. package/dist/types/tools/ast-grep.d.ts +4 -4
  500. package/dist/types/tools/bash-command-fixup.d.ts +3 -11
  501. package/dist/types/tools/bash-interactive.d.ts +1 -1
  502. package/dist/types/tools/bash-interceptor.d.ts +1 -1
  503. package/dist/types/tools/bash-skill-urls.d.ts +3 -3
  504. package/dist/types/tools/bash.d.ts +4 -4
  505. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +6 -6
  506. package/dist/types/tools/browser/cmux/rpc.d.ts +1 -1
  507. package/dist/types/tools/browser/registry.d.ts +3 -3
  508. package/dist/types/tools/browser/render.d.ts +3 -3
  509. package/dist/types/tools/browser/tab-supervisor.d.ts +4 -4
  510. package/dist/types/tools/browser/tab-worker.d.ts +1 -1
  511. package/dist/types/tools/browser.d.ts +9 -9
  512. package/dist/types/tools/checkpoint.d.ts +2 -2
  513. package/dist/types/tools/conflict-detect.d.ts +1 -1
  514. package/dist/types/tools/context.d.ts +2 -2
  515. package/dist/types/tools/debug.d.ts +4 -4
  516. package/dist/types/tools/eval-backends.d.ts +1 -1
  517. package/dist/types/tools/eval-render.d.ts +3 -3
  518. package/dist/types/tools/eval.d.ts +3 -3
  519. package/dist/types/tools/fetch.d.ts +7 -7
  520. package/dist/types/tools/gh-renderer.d.ts +3 -3
  521. package/dist/types/tools/gh.d.ts +5 -5
  522. package/dist/types/tools/github-cache.d.ts +1 -1
  523. package/dist/types/tools/glob.d.ts +7 -5
  524. package/dist/types/tools/grep.d.ts +5 -5
  525. package/dist/types/tools/image-gen.d.ts +2 -2
  526. package/dist/types/tools/index.d.ts +70 -70
  527. package/dist/types/tools/inspect-image-renderer.d.ts +2 -2
  528. package/dist/types/tools/inspect-image.d.ts +2 -2
  529. package/dist/types/tools/irc.d.ts +5 -5
  530. package/dist/types/tools/job.d.ts +3 -3
  531. package/dist/types/tools/json-tree.d.ts +1 -1
  532. package/dist/types/tools/learn.d.ts +1 -1
  533. package/dist/types/tools/list-limit.d.ts +1 -1
  534. package/dist/types/tools/manage-skill.d.ts +1 -1
  535. package/dist/types/tools/memory-edit.d.ts +1 -1
  536. package/dist/types/tools/memory-recall.d.ts +1 -1
  537. package/dist/types/tools/memory-reflect.d.ts +1 -1
  538. package/dist/types/tools/memory-render.d.ts +2 -2
  539. package/dist/types/tools/memory-retain.d.ts +1 -1
  540. package/dist/types/tools/output-meta.d.ts +3 -3
  541. package/dist/types/tools/path-utils.d.ts +2 -2
  542. package/dist/types/tools/plan-mode-guard.d.ts +1 -1
  543. package/dist/types/tools/read.d.ts +7 -7
  544. package/dist/types/tools/render-utils.d.ts +3 -3
  545. package/dist/types/tools/renderers.d.ts +2 -2
  546. package/dist/types/tools/report-tool-issue.d.ts +2 -2
  547. package/dist/types/tools/resolve.d.ts +3 -3
  548. package/dist/types/tools/review.d.ts +2 -2
  549. package/dist/types/tools/search-tool-bm25.d.ts +4 -4
  550. package/dist/types/tools/ssh.d.ts +5 -5
  551. package/dist/types/tools/todo.d.ts +4 -4
  552. package/dist/types/tools/tool-result.d.ts +2 -2
  553. package/dist/types/tools/tts.d.ts +1 -1
  554. package/dist/types/tools/write.d.ts +7 -7
  555. package/dist/types/tools/yield.d.ts +1 -1
  556. package/dist/types/tts/index.d.ts +10 -10
  557. package/dist/types/tts/models.d.ts +1 -1
  558. package/dist/types/tts/speech-enhancer.d.ts +2 -2
  559. package/dist/types/tts/streaming-player.d.ts +1 -1
  560. package/dist/types/tts/tts-client.d.ts +2 -2
  561. package/dist/types/tts/tts-protocol.d.ts +1 -1
  562. package/dist/types/tts/tts-worker.d.ts +1 -1
  563. package/dist/types/tts/vocalizer.d.ts +7 -1
  564. package/dist/types/tui/code-cell.d.ts +1 -1
  565. package/dist/types/tui/file-list.d.ts +1 -1
  566. package/dist/types/tui/index.d.ts +9 -9
  567. package/dist/types/tui/output-block.d.ts +2 -2
  568. package/dist/types/tui/status-line.d.ts +2 -2
  569. package/dist/types/tui/tree-list.d.ts +2 -2
  570. package/dist/types/tui/types.d.ts +1 -1
  571. package/dist/types/tui/utils.d.ts +2 -2
  572. package/dist/types/utils/changelog.d.ts +1 -1
  573. package/dist/types/utils/commit-message-generator.d.ts +2 -2
  574. package/dist/types/utils/git.d.ts +1 -1
  575. package/dist/types/utils/image-loading.d.ts +1 -1
  576. package/dist/types/utils/image-vision-fallback.d.ts +3 -3
  577. package/dist/types/utils/markit.d.ts +1 -1
  578. package/dist/types/utils/title-generator.d.ts +2 -2
  579. package/dist/types/web/parallel.d.ts +1 -1
  580. package/dist/types/web/scrapers/artifacthub.d.ts +1 -1
  581. package/dist/types/web/scrapers/arxiv.d.ts +1 -1
  582. package/dist/types/web/scrapers/aur.d.ts +1 -1
  583. package/dist/types/web/scrapers/biorxiv.d.ts +1 -1
  584. package/dist/types/web/scrapers/bluesky.d.ts +1 -1
  585. package/dist/types/web/scrapers/brew.d.ts +1 -1
  586. package/dist/types/web/scrapers/cheatsh.d.ts +1 -1
  587. package/dist/types/web/scrapers/chocolatey.d.ts +1 -1
  588. package/dist/types/web/scrapers/choosealicense.d.ts +1 -1
  589. package/dist/types/web/scrapers/cisa-kev.d.ts +1 -1
  590. package/dist/types/web/scrapers/clojars.d.ts +1 -1
  591. package/dist/types/web/scrapers/coingecko.d.ts +1 -1
  592. package/dist/types/web/scrapers/crates-io.d.ts +1 -1
  593. package/dist/types/web/scrapers/crossref.d.ts +1 -1
  594. package/dist/types/web/scrapers/devto.d.ts +1 -1
  595. package/dist/types/web/scrapers/discogs.d.ts +1 -1
  596. package/dist/types/web/scrapers/discourse.d.ts +1 -1
  597. package/dist/types/web/scrapers/dockerhub.d.ts +1 -1
  598. package/dist/types/web/scrapers/docs-rs.d.ts +8 -1
  599. package/dist/types/web/scrapers/fdroid.d.ts +1 -1
  600. package/dist/types/web/scrapers/firefox-addons.d.ts +1 -1
  601. package/dist/types/web/scrapers/flathub.d.ts +1 -1
  602. package/dist/types/web/scrapers/github-gist.d.ts +1 -1
  603. package/dist/types/web/scrapers/github.d.ts +1 -1
  604. package/dist/types/web/scrapers/gitlab.d.ts +1 -1
  605. package/dist/types/web/scrapers/go-pkg.d.ts +1 -1
  606. package/dist/types/web/scrapers/hackage.d.ts +1 -1
  607. package/dist/types/web/scrapers/hackernews.d.ts +1 -1
  608. package/dist/types/web/scrapers/hex.d.ts +1 -1
  609. package/dist/types/web/scrapers/huggingface.d.ts +1 -1
  610. package/dist/types/web/scrapers/iacr.d.ts +1 -1
  611. package/dist/types/web/scrapers/index.d.ts +77 -77
  612. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +1 -1
  613. package/dist/types/web/scrapers/lemmy.d.ts +1 -1
  614. package/dist/types/web/scrapers/lobsters.d.ts +1 -1
  615. package/dist/types/web/scrapers/mastodon.d.ts +1 -1
  616. package/dist/types/web/scrapers/maven.d.ts +1 -1
  617. package/dist/types/web/scrapers/mdn.d.ts +1 -1
  618. package/dist/types/web/scrapers/metacpan.d.ts +1 -1
  619. package/dist/types/web/scrapers/musicbrainz.d.ts +1 -1
  620. package/dist/types/web/scrapers/npm.d.ts +1 -1
  621. package/dist/types/web/scrapers/nuget.d.ts +1 -1
  622. package/dist/types/web/scrapers/nvd.d.ts +1 -1
  623. package/dist/types/web/scrapers/ollama.d.ts +1 -1
  624. package/dist/types/web/scrapers/open-vsx.d.ts +1 -1
  625. package/dist/types/web/scrapers/opencorporates.d.ts +1 -1
  626. package/dist/types/web/scrapers/openlibrary.d.ts +1 -1
  627. package/dist/types/web/scrapers/orcid.d.ts +1 -1
  628. package/dist/types/web/scrapers/osv.d.ts +1 -1
  629. package/dist/types/web/scrapers/packagist.d.ts +1 -1
  630. package/dist/types/web/scrapers/pub-dev.d.ts +1 -1
  631. package/dist/types/web/scrapers/pubmed.d.ts +1 -1
  632. package/dist/types/web/scrapers/pypi.d.ts +1 -1
  633. package/dist/types/web/scrapers/rawg.d.ts +1 -1
  634. package/dist/types/web/scrapers/readthedocs.d.ts +1 -1
  635. package/dist/types/web/scrapers/reddit.d.ts +1 -1
  636. package/dist/types/web/scrapers/repology.d.ts +1 -1
  637. package/dist/types/web/scrapers/rfc.d.ts +1 -1
  638. package/dist/types/web/scrapers/rubygems.d.ts +1 -1
  639. package/dist/types/web/scrapers/searchcode.d.ts +1 -1
  640. package/dist/types/web/scrapers/sec-edgar.d.ts +1 -1
  641. package/dist/types/web/scrapers/semantic-scholar.d.ts +1 -1
  642. package/dist/types/web/scrapers/snapcraft.d.ts +1 -1
  643. package/dist/types/web/scrapers/sourcegraph.d.ts +1 -1
  644. package/dist/types/web/scrapers/spdx.d.ts +1 -1
  645. package/dist/types/web/scrapers/spotify.d.ts +1 -1
  646. package/dist/types/web/scrapers/stackoverflow.d.ts +1 -1
  647. package/dist/types/web/scrapers/terraform.d.ts +1 -1
  648. package/dist/types/web/scrapers/tldr.d.ts +1 -1
  649. package/dist/types/web/scrapers/twitter.d.ts +1 -1
  650. package/dist/types/web/scrapers/types.d.ts +1 -1
  651. package/dist/types/web/scrapers/vimeo.d.ts +1 -1
  652. package/dist/types/web/scrapers/vscode-marketplace.d.ts +1 -1
  653. package/dist/types/web/scrapers/w3c.d.ts +1 -1
  654. package/dist/types/web/scrapers/wikidata.d.ts +1 -1
  655. package/dist/types/web/scrapers/wikipedia.d.ts +1 -1
  656. package/dist/types/web/scrapers/youtube.d.ts +1 -1
  657. package/dist/types/web/search/index.d.ts +7 -7
  658. package/dist/types/web/search/provider.d.ts +5 -5
  659. package/dist/types/web/search/providers/anthropic.d.ts +3 -3
  660. package/dist/types/web/search/providers/base.d.ts +1 -1
  661. package/dist/types/web/search/providers/brave.d.ts +3 -3
  662. package/dist/types/web/search/providers/codex.d.ts +3 -3
  663. package/dist/types/web/search/providers/duckduckgo.d.ts +3 -3
  664. package/dist/types/web/search/providers/exa.d.ts +3 -3
  665. package/dist/types/web/search/providers/firecrawl.d.ts +3 -3
  666. package/dist/types/web/search/providers/gemini.d.ts +3 -3
  667. package/dist/types/web/search/providers/jina.d.ts +3 -3
  668. package/dist/types/web/search/providers/kagi.d.ts +3 -3
  669. package/dist/types/web/search/providers/kimi.d.ts +3 -3
  670. package/dist/types/web/search/providers/parallel.d.ts +3 -3
  671. package/dist/types/web/search/providers/perplexity.d.ts +3 -3
  672. package/dist/types/web/search/providers/searxng.d.ts +3 -3
  673. package/dist/types/web/search/providers/synthetic.d.ts +3 -3
  674. package/dist/types/web/search/providers/tavily.d.ts +3 -3
  675. package/dist/types/web/search/providers/tinyfish.d.ts +3 -3
  676. package/dist/types/web/search/providers/utils.d.ts +2 -2
  677. package/dist/types/web/search/providers/xai.d.ts +3 -3
  678. package/dist/types/web/search/providers/zai.d.ts +3 -3
  679. package/dist/types/web/search/render.d.ts +3 -3
  680. package/package.json +13 -13
  681. package/src/advisor/__tests__/advisor.test.ts +59 -0
  682. package/src/auto-thinking/classifier.ts +6 -5
  683. package/src/collab/relay-client.ts +73 -7
  684. package/src/config/model-registry.ts +43 -2
  685. package/src/config/model-resolver.ts +1 -1
  686. package/src/config/settings-schema.ts +5 -12
  687. package/src/config/settings.ts +25 -5
  688. package/src/edit/hashline/filesystem.ts +19 -1
  689. package/src/edit/modes/patch.ts +9 -1
  690. package/src/edit/modes/replace.ts +1 -1
  691. package/src/edit/renderer.ts +42 -30
  692. package/src/eval/__tests__/agent-bridge.test.ts +19 -0
  693. package/src/eval/__tests__/budget-bridge.test.ts +12 -1
  694. package/src/eval/agent-bridge.ts +27 -19
  695. package/src/eval/js/context-manager.ts +3 -0
  696. package/src/export/ttsr.ts +10 -0
  697. package/src/extensibility/extensions/loader.ts +2 -2
  698. package/src/extensibility/extensions/types.ts +16 -4
  699. package/src/extensibility/hooks/loader.ts +3 -3
  700. package/src/extensibility/hooks/types.ts +4 -4
  701. package/src/extensibility/legacy-pi-ai-shim.ts +17 -4
  702. package/src/extensibility/legacy-pi-coding-agent-shim.ts +554 -2
  703. package/src/extensibility/plugins/legacy-pi-compat.ts +190 -58
  704. package/src/internal-urls/docs-index.generated.txt +1 -1
  705. package/src/internal-urls/memory-protocol.ts +105 -3
  706. package/src/lsp/client.ts +70 -0
  707. package/src/lsp/index.ts +65 -12
  708. package/src/main.ts +5 -3
  709. package/src/markit/converters/pdf/extract.ts +26 -2
  710. package/src/mnemopi/state.ts +76 -0
  711. package/src/modes/acp/acp-agent.ts +5 -1
  712. package/src/modes/components/agent-hub.ts +27 -9
  713. package/src/modes/components/chat-transcript-builder.ts +7 -3
  714. package/src/modes/components/copy-selector.ts +16 -4
  715. package/src/modes/components/model-selector.ts +17 -17
  716. package/src/modes/components/session-selector.ts +12 -4
  717. package/src/modes/components/status-line/component.ts +4 -0
  718. package/src/modes/components/status-line/segments.ts +6 -5
  719. package/src/modes/components/status-line/types.ts +4 -0
  720. package/src/modes/components/tool-execution.ts +8 -3
  721. package/src/modes/controllers/command-controller.ts +10 -0
  722. package/src/modes/controllers/event-controller.ts +4 -3
  723. package/src/modes/controllers/extension-ui-controller.test.ts +58 -0
  724. package/src/modes/controllers/extension-ui-controller.ts +12 -6
  725. package/src/modes/controllers/input-controller.ts +8 -0
  726. package/src/modes/controllers/selector-controller.ts +18 -9
  727. package/src/modes/controllers/streaming-reveal.ts +12 -5
  728. package/src/modes/controllers/tool-args-reveal.ts +13 -6
  729. package/src/modes/interactive-mode.ts +54 -28
  730. package/src/modes/prompt-action-autocomplete.ts +18 -0
  731. package/src/modes/theme/shimmer.ts +37 -1
  732. package/src/modes/utils/transcript-render-helpers.test.ts +38 -0
  733. package/src/modes/utils/transcript-render-helpers.ts +14 -0
  734. package/src/modes/utils/ui-helpers.ts +5 -1
  735. package/src/prompts/system/workflow-notice.md +1 -1
  736. package/src/prompts/tools/bash.md +9 -7
  737. package/src/prompts/tools/grep.md +1 -1
  738. package/src/prompts/tools/memory-edit.md +2 -0
  739. package/src/prompts/tools/recall.md +2 -0
  740. package/src/sdk.ts +112 -12
  741. package/src/session/agent-session.ts +203 -61
  742. package/src/session/messages.ts +102 -2
  743. package/src/session/session-context.ts +60 -10
  744. package/src/session/session-entries.ts +4 -0
  745. package/src/session/session-history-format.ts +12 -0
  746. package/src/session/session-manager.ts +129 -10
  747. package/src/session/settings-stream-fn.ts +1 -0
  748. package/src/session/unexpected-stop-classifier.ts +6 -3
  749. package/src/slash-commands/builtin-registry.ts +7 -4
  750. package/src/slash-commands/helpers/usage-report.ts +3 -0
  751. package/src/slash-commands/types.ts +2 -0
  752. package/src/task/executor.ts +23 -3
  753. package/src/task/isolation-runner.ts +38 -9
  754. package/src/tools/__tests__/glob.test.ts +37 -0
  755. package/src/tools/acp-bridge.ts +11 -1
  756. package/src/tools/bash-command-fixup.ts +3 -36
  757. package/src/tools/bash.ts +4 -13
  758. package/src/tools/browser/render.ts +6 -4
  759. package/src/tools/glob.ts +11 -1
  760. package/src/tools/index.ts +1 -1
  761. package/src/tools/inspect-image-renderer.ts +5 -4
  762. package/src/tools/read.ts +13 -8
  763. package/src/tools/render-utils.ts +4 -1
  764. package/src/tools/write.ts +9 -7
  765. package/src/tts/speech-enhancer.ts +7 -5
  766. package/src/tts/vocalizer.ts +9 -0
  767. package/src/utils/commit-message-generator.ts +7 -5
  768. package/src/utils/shell-snapshot.ts +10 -0
  769. package/src/utils/title-generator.ts +12 -7
  770. package/src/web/scrapers/docs-rs.ts +12 -1
  771. package/src/web/search/providers/xai.ts +43 -47
@@ -337,11 +337,16 @@ import {
337
337
  import {
338
338
  type BashExecutionMessage,
339
339
  type CustomMessage,
340
+ type CustomMessagePayload,
340
341
  convertToLlm,
341
342
  demoteInterruptedThinking,
343
+ type FileMentionMessage,
344
+ type HookMessage,
342
345
  INTERRUPTED_THINKING_MESSAGE_TYPE,
343
346
  type InterruptedThinkingDetails,
347
+ isEmptyErrorTurn,
344
348
  isUserInterruptAbort,
349
+ normalizeCustomMessagePayload,
345
350
  type PythonExecutionMessage,
346
351
  readQueueChipText,
347
352
  SILENT_ABORT_MARKER,
@@ -846,6 +851,16 @@ export interface PromptOptions {
846
851
  skipCompactionCheck?: boolean;
847
852
  }
848
853
 
854
+ /** Options for AgentSession.followUp() */
855
+ export interface FollowUpOptions {
856
+ /** Enqueue as a hidden developer message (agent-attributed by default) instead of a user follow-up. */
857
+ synthetic?: boolean;
858
+ /** Whether to expand file-based prompt templates (default: true). */
859
+ expandPromptTemplates?: boolean;
860
+ /** Explicit billing/initiator attribution. Defaults to `agent` for synthetic follow-ups. */
861
+ attribution?: MessageAttribution;
862
+ }
863
+
849
864
  /** Result from a handoff operation. */
850
865
  export interface HandoffResult {
851
866
  document: string;
@@ -1671,6 +1686,7 @@ export class AgentSession {
1671
1686
  #turnIndex = 0;
1672
1687
  #messageEndPersistenceTail: Promise<void> = Promise.resolve();
1673
1688
  #pendingMessageEndPersistence = new Map<string, Promise<void>>();
1689
+ #persistedMessageKeys: { anchor: string; keys: Set<string> } | undefined;
1674
1690
 
1675
1691
  #skills: Skill[];
1676
1692
  #skillWarnings: SkillWarning[];
@@ -2339,7 +2355,19 @@ export class AgentSession {
2339
2355
  model = sel.model;
2340
2356
  thinkingLevel = concreteThinkingLevel(sel.thinkingLevel);
2341
2357
  }
2342
- const advisorThinkingLevel = thinkingLevel ?? ThinkingLevel.Medium;
2358
+ // Clamp the effort against the resolved model. Historically we defaulted
2359
+ // to `ThinkingLevel.Medium` unconditionally, which threw at first stream
2360
+ // on reasoning models that expose no controllable effort surface
2361
+ // (e.g. `devin-agent`: Cascade routes by sibling model id, not a wire
2362
+ // param; `getSupportedEfforts` returns `[]`). `resolveThinkingLevelForModel`
2363
+ // preserves an explicit `off`, clamps a concrete effort into the model's
2364
+ // supported range, and returns `undefined` for reasoning models without
2365
+ // controllable efforts — for that case we forward `Inherit` so no effort
2366
+ // is sent and reasoning stays enabled (matching the `auto`-path fix for
2367
+ // Devin models via `clampAutoThinkingEffort`). See #4579.
2368
+ const requestedLevel = thinkingLevel ?? ThinkingLevel.Medium;
2369
+ const resolvedLevel = resolveThinkingLevelForModel(model, requestedLevel);
2370
+ const advisorThinkingLevel: ThinkingLevel = resolvedLevel ?? ThinkingLevel.Inherit;
2343
2371
  descriptors.push({
2344
2372
  config,
2345
2373
  name: config.name,
@@ -3273,13 +3301,20 @@ export class AgentSession {
3273
3301
  /**
3274
3302
  * Index every message entry on the current branch by persistence key, so
3275
3303
  * the mid-run-compaction planner can ask "is this turn message already on
3276
- * the branch?" in O(1) instead of re-walking the branch per check.
3304
+ * the branch?" in O(1). The set is memoized through the current leaf path
3305
+ * and validated at use time against a (session file, leaf id) anchor.
3277
3306
  *
3278
3307
  * The mid-run ordering check uses key identity alone: same-key content
3279
3308
  * variants are one logical message at this boundary, because otherwise a
3280
3309
  * display-side rewrite can make the assistant look missing after its tool
3281
3310
  * results have already persisted.
3282
3311
  *
3312
+ * Coherency is anchor-based, not invalidation-based: every branch mutation
3313
+ * (rewind, branch switch, new session, custom-entry append) changes the
3314
+ * session manager's leaf id or session file, so `#ensurePersistedMessageKeys`
3315
+ * detects staleness itself and rebuilds. No mutation call site has to
3316
+ * remember to invalidate anything.
3317
+ *
3283
3318
  * Pre-#3629 the equivalent was `sessionManager.getBranch()` called twice
3284
3319
  * per turn message, each call rebuilding the path via O(n²) `unshift` and
3285
3320
  * structurally JSON-comparing every entry — seconds of synchronous work
@@ -3287,6 +3322,24 @@ export class AgentSession {
3287
3322
  * `ui.loop-blocked` warnings in the bug report.
3288
3323
  */
3289
3324
  #indexPersistedMessageKeys(): Set<string> {
3325
+ return this.#ensurePersistedMessageKeys();
3326
+ }
3327
+
3328
+ #persistedMessageKeysAnchor(): string {
3329
+ return `${this.sessionManager.getSessionFile() ?? ""}\u0000${this.sessionManager.getLeafId() ?? ""}`;
3330
+ }
3331
+
3332
+ #ensurePersistedMessageKeys(): Set<string> {
3333
+ const anchor = this.#persistedMessageKeysAnchor();
3334
+ let cache = this.#persistedMessageKeys;
3335
+ if (cache === undefined || cache.anchor !== anchor) {
3336
+ cache = { anchor, keys: this.#buildPersistedMessageKeySet() };
3337
+ this.#persistedMessageKeys = cache;
3338
+ }
3339
+ return cache.keys;
3340
+ }
3341
+
3342
+ #buildPersistedMessageKeySet(): Set<string> {
3290
3343
  const keys = new Set<string>();
3291
3344
  for (const entry of this.sessionManager.getBranch()) {
3292
3345
  if (entry.type !== "message") continue;
@@ -3298,20 +3351,16 @@ export class AgentSession {
3298
3351
 
3299
3352
  /**
3300
3353
  * True when {@link message} is structurally identical to a message already
3301
- * appended to the current branch. Pairs a fast persistence-key lookup with
3302
- * a content-equality fallback so two logically distinct messages that
3303
- * happen to collide on the cheap key (e.g. two assistant turns at the same
3304
- * millisecond with `undefined` responseId) still count as DISTINCT.
3354
+ * appended to the current branch. Uses the current branch's memoized
3355
+ * persistence-key cache for the common missing-key case, and only walks the
3356
+ * branch to verify content when a key hit could be a rare collision.
3305
3357
  */
3306
3358
  #sessionMessageAlreadyPersisted(message: AgentMessage): boolean {
3307
3359
  const key = sessionMessagePersistenceKey(message);
3308
3360
  if (key === undefined) return false;
3361
+ const keys = this.#ensurePersistedMessageKeys();
3362
+ if (!keys.has(key)) return false;
3309
3363
  const branch = this.sessionManager.getBranch();
3310
- // Reverse walk: recently-appended entries are at the tail, so the common
3311
- // "is the message I just emitted already in the branch?" lookup short-
3312
- // circuits in O(1) hot, O(branch) cold. Cheap-key compare for every
3313
- // entry; content compare only when the cheap check matches, so the
3314
- // expensive `JSON.stringify(content)` path stays off the hot loop.
3315
3364
  for (let index = branch.length - 1; index >= 0; index--) {
3316
3365
  const entry = branch[index];
3317
3366
  if (entry.type !== "message") continue;
@@ -3321,6 +3370,26 @@ export class AgentSession {
3321
3370
  return false;
3322
3371
  }
3323
3372
 
3373
+ #appendSessionMessage(
3374
+ message:
3375
+ | Message
3376
+ | CustomMessage
3377
+ | HookMessage
3378
+ | BashExecutionMessage
3379
+ | PythonExecutionMessage
3380
+ | FileMentionMessage,
3381
+ ): string {
3382
+ const cache = this.#persistedMessageKeys;
3383
+ const wasFresh = cache !== undefined && cache.anchor === this.#persistedMessageKeysAnchor();
3384
+ const entryId = this.sessionManager.appendMessage(message);
3385
+ const key = sessionMessagePersistenceKey(message);
3386
+ if (wasFresh && cache && key) {
3387
+ cache.keys.add(key);
3388
+ cache.anchor = this.#persistedMessageKeysAnchor();
3389
+ }
3390
+ return entryId;
3391
+ }
3392
+
3324
3393
  #persistSessionMessageIfMissing(message: AgentMessage): void {
3325
3394
  if (
3326
3395
  message.role !== "user" &&
@@ -3335,6 +3404,7 @@ export class AgentSession {
3335
3404
  if (message.role === "assistant") {
3336
3405
  const assistantMsg = message as AssistantMessage;
3337
3406
  if (this.#isClassifierRefusal(assistantMsg)) return;
3407
+ if (isEmptyErrorTurn(assistantMsg)) return;
3338
3408
  if (assistantMsg.stopReason !== "aborted" && assistantMsg.stopReason !== "error" && assistantMsg.usage) {
3339
3409
  assistantMsg.contextSnapshot = {
3340
3410
  promptTokens: calculatePromptTokens(assistantMsg.usage),
@@ -3347,7 +3417,7 @@ export class AgentSession {
3347
3417
  message.toolName === "rewind" &&
3348
3418
  this.#rewoundToolResultIds.delete(message.toolCallId);
3349
3419
  if (!skipPersistedRewindResult) {
3350
- this.sessionManager.appendMessage(message);
3420
+ this.#appendSessionMessage(message);
3351
3421
  }
3352
3422
  }
3353
3423
 
@@ -7590,15 +7660,22 @@ export class AgentSession {
7590
7660
  const promptAttribution: "user" | "agent" | undefined =
7591
7661
  "attribution" in message ? message.attribution : undefined;
7592
7662
  for (const msg of result.messages) {
7663
+ const normalized = normalizeCustomMessagePayload(msg);
7664
+ const hasExplicitAttribution =
7665
+ msg !== null &&
7666
+ typeof msg === "object" &&
7667
+ !Array.isArray(msg) &&
7668
+ (msg.attribution === "user" || msg.attribution === "agent");
7593
7669
  messages.push(
7594
7670
  await this.#normalizeAgentMessageImages({
7595
7671
  role: "custom",
7596
- customType: msg.customType,
7597
- content: msg.content,
7598
- display: msg.display,
7599
- details: msg.details,
7600
- attribution:
7601
- msg.attribution ?? promptAttribution ?? (message.role === "user" ? "user" : "agent"),
7672
+ customType: normalized.customType,
7673
+ content: normalized.content,
7674
+ display: normalized.display,
7675
+ details: normalized.details,
7676
+ attribution: hasExplicitAttribution
7677
+ ? normalized.attribution
7678
+ : (promptAttribution ?? (message.role === "user" ? "user" : "agent")),
7602
7679
  timestamp: Date.now(),
7603
7680
  }),
7604
7681
  );
@@ -7813,14 +7890,42 @@ export class AgentSession {
7813
7890
 
7814
7891
  /**
7815
7892
  * Queue a follow-up message to process after the agent would otherwise stop.
7893
+ * Set `options.synthetic` to enqueue a hidden developer message (agent-attributed
7894
+ * by default) instead of a user-attributed follow-up; the plan-approval flow
7895
+ * uses this to land its execution directive behind a queued user turn without
7896
+ * flipping advisor auto-resume.
7816
7897
  */
7817
- async followUp(text: string, images?: ImageContent[]): Promise<void> {
7898
+ async followUp(text: string, images?: ImageContent[], options?: FollowUpOptions): Promise<void> {
7818
7899
  if (text.startsWith("/")) {
7819
7900
  this.#throwIfExtensionCommand(text);
7820
7901
  }
7821
7902
 
7822
- const expandedText = expandPromptTemplate(text, [...this.#promptTemplates]);
7823
- await this.#queueUserMessage(expandedText, images, "followUp");
7903
+ const expandedText =
7904
+ options?.expandPromptTemplates === false ? text : expandPromptTemplate(text, [...this.#promptTemplates]);
7905
+ if (!options?.synthetic) {
7906
+ await this.#queueUserMessage(expandedText, images, "followUp");
7907
+ return;
7908
+ }
7909
+ // Synthetic branch: agent-initiated hidden developer message. Bypass
7910
+ // #queueUserMessage (which clears advisor auto-resume suppression and
7911
+ // enqueues as a user-attributed message) and place the developer message
7912
+ // directly on the follow-up queue.
7913
+ const normalizedImages = await this.#normalizeImagesForModel(images);
7914
+ const content: (TextContent | ImageContent)[] = [{ type: "text", text: expandedText }];
7915
+ if (normalizedImages?.length) {
7916
+ content.push(...normalizedImages);
7917
+ }
7918
+ const imageDescriptionNotice = normalizedImages?.length
7919
+ ? await this.#buildImageDescriptionNotice(normalizedImages)
7920
+ : undefined;
7921
+ if (imageDescriptionNotice) this.agent.followUp(imageDescriptionNotice);
7922
+ this.agent.followUp({
7923
+ role: "developer",
7924
+ content,
7925
+ attribution: options.attribution ?? "agent",
7926
+ timestamp: Date.now(),
7927
+ });
7928
+ this.#scheduleIdleQueueDrain();
7824
7929
  }
7825
7930
 
7826
7931
  async #queueUserMessage(
@@ -8061,26 +8166,26 @@ export class AgentSession {
8061
8166
  * use this to avoid acting on a turn that never ran.
8062
8167
  */
8063
8168
  async sendCustomMessage<T = unknown>(
8064
- message: Pick<CustomMessage<T>, "customType" | "content" | "display" | "details" | "attribution">,
8169
+ message: CustomMessagePayload<T>,
8065
8170
  options?: { triggerTurn?: boolean; deliverAs?: "steer" | "followUp" | "nextTurn"; queueChipText?: string },
8066
8171
  ): Promise<boolean> {
8172
+ const normalizedPayload = normalizeCustomMessagePayload<T>(message);
8067
8173
  const details =
8068
8174
  options?.queueChipText && options.deliverAs !== "nextTurn"
8069
8175
  ? ({
8070
- ...((message.details && typeof message.details === "object" ? message.details : {}) as Record<
8071
- string,
8072
- unknown
8073
- >),
8176
+ ...((normalizedPayload.details && typeof normalizedPayload.details === "object"
8177
+ ? normalizedPayload.details
8178
+ : {}) as Record<string, unknown>),
8074
8179
  __queueChipText: options.queueChipText,
8075
8180
  } as T)
8076
- : message.details;
8181
+ : normalizedPayload.details;
8077
8182
  const appMessage: CustomMessage<T> = {
8078
8183
  role: "custom",
8079
- customType: message.customType,
8080
- content: message.content,
8081
- display: message.display,
8184
+ customType: normalizedPayload.customType,
8185
+ content: normalizedPayload.content,
8186
+ display: normalizedPayload.display,
8082
8187
  details,
8083
- attribution: message.attribution ?? "agent",
8188
+ attribution: normalizedPayload.attribution,
8084
8189
  timestamp: Date.now(),
8085
8190
  };
8086
8191
  const normalizedAppMessage = await this.#normalizeAgentMessageImages(appMessage);
@@ -8112,9 +8217,9 @@ export class AgentSession {
8112
8217
  this.sessionManager.appendCustomMessageEntry(
8113
8218
  normalizedAppMessage.customType,
8114
8219
  normalizedAppMessage.content,
8115
- message.display,
8116
- message.details,
8117
- message.attribution ?? "agent",
8220
+ normalizedAppMessage.display,
8221
+ normalizedAppMessage.details,
8222
+ normalizedAppMessage.attribution,
8118
8223
  );
8119
8224
  return false;
8120
8225
  }
@@ -8132,9 +8237,9 @@ export class AgentSession {
8132
8237
  this.sessionManager.appendCustomMessageEntry(
8133
8238
  normalizedAppMessage.customType,
8134
8239
  normalizedAppMessage.content,
8135
- message.display,
8136
- message.details,
8137
- message.attribution ?? "agent",
8240
+ normalizedAppMessage.display,
8241
+ normalizedAppMessage.details,
8242
+ normalizedAppMessage.attribution,
8138
8243
  );
8139
8244
  return false;
8140
8245
  }
@@ -8528,6 +8633,7 @@ export class AgentSession {
8528
8633
  await this.sessionManager.flush();
8529
8634
  }
8530
8635
  await this.sessionManager.newSession(options);
8636
+
8531
8637
  this.#clearCheckpointRuntimeState();
8532
8638
  this.setTodoPhases([]);
8533
8639
  this.#freshProviderSessionId = undefined;
@@ -9143,24 +9249,26 @@ export class AgentSession {
9143
9249
 
9144
9250
  /**
9145
9251
  * `/fast on|off` targets the family of the currently selected model: it sets
9146
- * (or clears) that family's `priority` tier. Models without a service-tier
9147
- * family (Fireworks, or providers with no tier knob) have nothing to toggle.
9252
+ * (or clears) that family's `priority` tier. Returns `false` when the model
9253
+ * has no service-tier family, so callers can report that fast mode is
9254
+ * unavailable instead of claiming success.
9148
9255
  */
9149
- setFastMode(enabled: boolean): void {
9256
+ setFastMode(enabled: boolean): boolean {
9150
9257
  const family = this.model ? serviceTierFamily(this.model) : undefined;
9151
9258
  if (!family) {
9152
9259
  this.emitNotice("info", "The current model has no service-tier control for /fast to toggle.", "priority");
9153
- return;
9260
+ return false;
9154
9261
  }
9155
9262
  if (!enabled) {
9156
9263
  if (this.#serviceTierByFamily[family] === "priority") this.setServiceTierFamily(family, undefined);
9157
- return;
9264
+ return true;
9158
9265
  }
9159
9266
  this.setServiceTierFamily(family, "priority");
9267
+ return true;
9160
9268
  }
9161
9269
 
9162
9270
  toggleFastMode(): boolean {
9163
- this.setFastMode(!this.isFastModeEnabled());
9271
+ if (!this.setFastMode(!this.isFastModeEnabled())) return false;
9164
9272
  return this.isFastModeEnabled();
9165
9273
  }
9166
9274
 
@@ -9438,7 +9546,11 @@ export class AgentSession {
9438
9546
  // Modes that produce no LLM summary (snapcompact) have nothing to focus.
9439
9547
  // Reject focus text loudly so programmatic callers don't silently lose
9440
9548
  // instructions (the slash path pre-validates via parseCompactArgs).
9441
- if (compactMode?.rejectsFocus && customInstructions) {
9549
+ // `internalGuidance` counts the same way — plan-mode approval never
9550
+ // combines with a rejects-focus mode, but reject early if a caller ever
9551
+ // wires it up so we don't silently drop the directive on the snapcompact
9552
+ // fallback (issue #4359).
9553
+ if (compactMode?.rejectsFocus && (customInstructions || options?.internalGuidance)) {
9442
9554
  throw new Error(`/compact ${compactMode.name} does not take focus instructions.`);
9443
9555
  }
9444
9556
  const compactionAbortController = new AbortController();
@@ -9519,12 +9631,16 @@ export class AgentSession {
9519
9631
 
9520
9632
  const compactionPrep = await this.#prepareCompactionFromHooks(preparation, hookCompaction);
9521
9633
 
9522
- // Strategy honored on manual /compact too. Custom instructions imply a
9523
- // directed LLM summary; a text-only model cannot read snapcompact frames.
9524
- // When snapcompact itself was requested, fail locally instead of silently
9634
+ // Strategy honored on manual /compact too. Custom instructions (public
9635
+ // user focus OR internal plan-mode guidance) imply a directed LLM
9636
+ // summary; a text-only model cannot read snapcompact frames. When
9637
+ // snapcompact itself was requested, fail locally instead of silently
9525
9638
  // converting the "no LLM call" path into a provider-backed summary.
9526
9639
  const wantsSnapcompact =
9527
- compactionPrep.kind !== "fromHook" && effectiveSettings.strategy === "snapcompact" && !customInstructions;
9640
+ compactionPrep.kind !== "fromHook" &&
9641
+ effectiveSettings.strategy === "snapcompact" &&
9642
+ !customInstructions &&
9643
+ !options?.internalGuidance;
9528
9644
  const snapcompactReady = wantsSnapcompact;
9529
9645
  const snapcompactShapeSetting = this.settings.get("snapcompact.shape");
9530
9646
  let snapcompactShape: snapcompact.Shape | undefined;
@@ -9550,11 +9666,11 @@ export class AgentSession {
9550
9666
  const percent = (renderScan.unrenderableRatio * 100).toFixed(1);
9551
9667
  this.emitNotice(
9552
9668
  "warning",
9553
- `snapcompact disabled: high non-ASCII rate detected (${percent}%). No LLM fallback was attempted.`,
9669
+ `snapcompact disabled: unsupported characters for selected snapcompact font (${percent}%). No LLM fallback was attempted.`,
9554
9670
  "compaction",
9555
9671
  );
9556
9672
  throw new Error(
9557
- `snapcompact cannot render this conversation locally: high non-ASCII rate detected (${percent}%).`,
9673
+ `snapcompact cannot render this conversation locally: unsupported characters for selected snapcompact font (${percent}%).`,
9558
9674
  );
9559
9675
  }
9560
9676
  }
@@ -9657,7 +9773,7 @@ export class AgentSession {
9657
9773
  try {
9658
9774
  const result = await this.#compactWithFallbackModel(
9659
9775
  preparation,
9660
- customInstructions,
9776
+ options?.internalGuidance ?? customInstructions,
9661
9777
  compactionAbortController.signal,
9662
9778
  {
9663
9779
  promptOverride: this.#obfuscateTextForProvider(compactionPrep.hookPrompt),
@@ -9925,6 +10041,7 @@ export class AgentSession {
9925
10041
  await this.sessionManager.flush();
9926
10042
  this.#cancelOwnAsyncJobs();
9927
10043
  await this.sessionManager.newSession(previousSessionFile ? { parentSession: previousSessionFile } : undefined);
10044
+
9928
10045
  this.#clearCheckpointRuntimeState();
9929
10046
  // agent.reset() clears the core steering/follow-up queues. Preserve any queued
9930
10047
  // steers/follow-ups (RPC/SDK steer()/followUp() issued during the handoff, or a
@@ -10411,6 +10528,13 @@ export class AgentSession {
10411
10528
  this.#pendingRecoveredRetryErrors = [];
10412
10529
  }
10413
10530
 
10531
+ async #persistRetryLifecycleErrorMessage(message: AssistantMessage): Promise<void> {
10532
+ await this.#waitForSessionMessagePersistence(message);
10533
+ if (!isEmptyErrorTurn(message)) return;
10534
+ if (this.#sessionMessageAlreadyPersisted(message)) return;
10535
+ this.#appendSessionMessage(message);
10536
+ }
10537
+
10414
10538
  #retryRecoveryKind(
10415
10539
  id: number,
10416
10540
  switchedCredential: boolean,
@@ -10446,7 +10570,7 @@ export class AgentSession {
10446
10570
  id: number,
10447
10571
  options: { switchedCredential: boolean; switchedModel: boolean; delayMs: number },
10448
10572
  ): Promise<void> {
10449
- await this.#waitForSessionMessagePersistence(message);
10573
+ await this.#persistRetryLifecycleErrorMessage(message);
10450
10574
  const persistenceKey = sessionMessagePersistenceKey(message);
10451
10575
  if (!persistenceKey) return;
10452
10576
  let branchEntry: SessionEntry | undefined;
@@ -10735,7 +10859,7 @@ export class AgentSession {
10735
10859
  }
10736
10860
 
10737
10861
  #restoreFailedAssistantTurn(assistantMessage: AssistantMessage): void {
10738
- this.sessionManager.appendMessage(assistantMessage);
10862
+ if (!isEmptyErrorTurn(assistantMessage)) this.sessionManager.appendMessage(assistantMessage);
10739
10863
  const lastMessage = this.agent.state.messages.at(-1);
10740
10864
  if (
10741
10865
  lastMessage?.role === "assistant" &&
@@ -10838,6 +10962,7 @@ export class AgentSession {
10838
10962
  });
10839
10963
  this.sessionManager.branchWithSummary(null, report, { startedAt: checkpointState.startedAt });
10840
10964
  }
10965
+
10841
10966
  const rewoundAt = new Date().toISOString();
10842
10967
  const details = { report, startedAt: checkpointState.startedAt, rewoundAt };
10843
10968
  this.sessionManager.appendCustomMessageEntry(
@@ -12330,7 +12455,7 @@ export class AgentSession {
12330
12455
  // + a summary message carrying the imaged archive at FRAME_TOKEN_ESTIMATE
12331
12456
  // per frame; #computeSnapcompactMaxFrames sizes the frame cap from the
12332
12457
  // live window so we don't run snapcompact just to overflow every threshold
12333
- // tick. Any local blocker (non-ASCII transcript, kept-history too large,
12458
+ // tick. Any local blocker (unsupported snapcompact glyphs, kept-history too large,
12334
12459
  // post-render overflow) downgrades auto maintenance to a context-full LLM
12335
12460
  // summary instead of wedging the session (#3659) — auto runs the default
12336
12461
  // strategy on the user's behalf, so a fallback that lets the session keep
@@ -12352,11 +12477,11 @@ export class AgentSession {
12352
12477
  const renderScan = snapcompact.scanRenderability(probeText, { shape });
12353
12478
  if (!renderScan.isSafe) {
12354
12479
  const percent = (renderScan.unrenderableRatio * 100).toFixed(1);
12355
- logger.warn("Snapcompact disabled: high non-ASCII rate detected", {
12480
+ logger.warn("Snapcompact disabled: unsupported characters for selected snapcompact font", {
12356
12481
  model: this.model?.id,
12357
12482
  unrenderableRatio: renderScan.unrenderableRatio,
12358
12483
  });
12359
- snapcompactBlocker = `snapcompact disabled: high non-ASCII rate detected (${percent}%); using context-full auto-compaction instead.`;
12484
+ snapcompactBlocker = `snapcompact disabled: unsupported characters for selected snapcompact font (${percent}%); using context-full auto-compaction instead.`;
12360
12485
  } else {
12361
12486
  const maxFrames = this.#computeSnapcompactMaxFrames(preparation, compactionSettings);
12362
12487
  if (maxFrames < 1) {
@@ -13400,6 +13525,7 @@ export class AgentSession {
13400
13525
  }
13401
13526
 
13402
13527
  if (this.#retryAttempt > retrySettings.maxRetries) {
13528
+ await this.#persistRetryLifecycleErrorMessage(message);
13403
13529
  // Max retries exceeded, emit final failure and reset
13404
13530
  await this.#emitSessionEvent({
13405
13531
  type: "auto_retry_end",
@@ -13519,6 +13645,7 @@ export class AgentSession {
13519
13645
  // can act on it.
13520
13646
  const maxDelayMs = retrySettings.maxDelayMs;
13521
13647
  if (maxDelayMs > 0 && delayMs > maxDelayMs && !switchedCredential && !switchedModel) {
13648
+ await this.#persistRetryLifecycleErrorMessage(message);
13522
13649
  const attempt = this.#retryAttempt;
13523
13650
  this.#retryAttempt = 0;
13524
13651
  await this.#emitSessionEvent({
@@ -14244,9 +14371,17 @@ export class AgentSession {
14244
14371
  continue;
14245
14372
  }
14246
14373
  if (event.type === "done") {
14374
+ // A well-formed provider "done" event carries `content: AssistantContentBlock[]`,
14375
+ // but a proxy/wrapper (custom extension providers, gateway-wrapped OAuth streams,
14376
+ // see #4323) can hand back a message whose `content` was dropped or replaced with
14377
+ // `undefined`. Downstream `.content.filter` at the sanitize step below would then
14378
+ // crash the recap turn with `TypeError: undefined is not an object (evaluating
14379
+ // 'H.content.filter')`. Normalize to `[]` so the recap surfaces an empty reply
14380
+ // instead of turning a malformed side-channel response into a session-mute crash.
14381
+ const rawContent = Array.isArray(event.message.content) ? event.message.content : [];
14247
14382
  assistantMessage = this.#obfuscator?.hasSecrets()
14248
- ? { ...event.message, content: deobfuscateAssistantContent(this.#obfuscator, event.message.content) }
14249
- : event.message;
14383
+ ? { ...event.message, content: deobfuscateAssistantContent(this.#obfuscator, rawContent) }
14384
+ : { ...event.message, content: rawContent };
14250
14385
  break;
14251
14386
  }
14252
14387
  if (event.type === "error") {
@@ -14280,7 +14415,7 @@ export class AgentSession {
14280
14415
  #buildEphemeralSnapshot(promptText: string): AgentMessage[] {
14281
14416
  const messages = [...this.messages];
14282
14417
  const streaming = this.agent.state.streamMessage;
14283
- if (streaming && streaming.role === "assistant") {
14418
+ if (streaming && streaming.role === "assistant" && Array.isArray(streaming.content)) {
14284
14419
  const preservedBlocks: AssistantMessage["content"] = [];
14285
14420
  // Preserve thinking blocks: DeepSeek-class encoders replay them as
14286
14421
  // `reasoning_content` and reject the request (HTTP 400) when the field
@@ -14749,6 +14884,7 @@ export class AgentSession {
14749
14884
  this.#cancelOwnAsyncJobs();
14750
14885
 
14751
14886
  this.sessionManager.createBranchedSession(leafId);
14887
+
14752
14888
  this.#rehydrateCheckpointRewindState();
14753
14889
  this.sessionManager.appendMessage({
14754
14890
  role: "user",
@@ -14932,6 +15068,7 @@ export class AgentSession {
14932
15068
  if (summaryText) {
14933
15069
  // Create summary at target position (can be null for root)
14934
15070
  const summaryId = this.sessionManager.branchWithSummary(newLeafId, summaryText, summaryDetails, fromExtension);
15071
+
14935
15072
  summaryEntry = this.sessionManager.getEntry(summaryId) as BranchSummaryEntry;
14936
15073
  } else if (newLeafId === null) {
14937
15074
  // No summary, navigating to root - reset leaf
@@ -15016,6 +15153,7 @@ export class AgentSession {
15016
15153
  let totalCacheRead = 0;
15017
15154
  let totalReasoning = 0;
15018
15155
  let totalCacheWrite = 0;
15156
+ let totalTokens = 0;
15019
15157
  let totalCost = 0;
15020
15158
  let totalPremiumRequests = 0;
15021
15159
 
@@ -15036,6 +15174,7 @@ export class AgentSession {
15036
15174
  totalReasoning += assistantMsg.usage.reasoningTokens ?? 0;
15037
15175
  totalCacheRead += assistantMsg.usage.cacheRead;
15038
15176
  totalCacheWrite += assistantMsg.usage.cacheWrite;
15177
+ totalTokens += assistantMsg.usage.totalTokens;
15039
15178
  totalPremiumRequests += assistantMsg.usage.premiumRequests ?? 0;
15040
15179
  totalCost += assistantMsg.usage.cost.total;
15041
15180
  }
@@ -15048,6 +15187,7 @@ export class AgentSession {
15048
15187
  totalReasoning += usage.reasoningTokens ?? 0;
15049
15188
  totalCacheRead += usage.cacheRead;
15050
15189
  totalCacheWrite += usage.cacheWrite;
15190
+ totalTokens += usage.totalTokens;
15051
15191
  totalPremiumRequests += usage.premiumRequests ?? 0;
15052
15192
  totalCost += usage.cost.total;
15053
15193
  }
@@ -15068,7 +15208,7 @@ export class AgentSession {
15068
15208
  reasoning: totalReasoning,
15069
15209
  cacheRead: totalCacheRead,
15070
15210
  cacheWrite: totalCacheWrite,
15071
- total: totalInput + totalOutput + totalCacheRead + totalCacheWrite,
15211
+ total: totalTokens,
15072
15212
  },
15073
15213
  cost: totalCost,
15074
15214
  premiumRequests: totalPremiumRequests,
@@ -15714,6 +15854,7 @@ export class AgentSession {
15714
15854
  let reasoning = 0;
15715
15855
  let cacheRead = 0;
15716
15856
  let cacheWrite = 0;
15857
+ let totalTokens = 0;
15717
15858
  let cost = 0;
15718
15859
  let user = 0;
15719
15860
  let assistant = 0;
@@ -15727,6 +15868,7 @@ export class AgentSession {
15727
15868
  reasoning += assistantMsg.usage.reasoningTokens ?? 0;
15728
15869
  cacheRead += assistantMsg.usage.cacheRead;
15729
15870
  cacheWrite += assistantMsg.usage.cacheWrite;
15871
+ totalTokens += assistantMsg.usage.totalTokens;
15730
15872
  cost += assistantMsg.usage.cost.total;
15731
15873
  }
15732
15874
  }
@@ -15735,7 +15877,7 @@ export class AgentSession {
15735
15877
  model,
15736
15878
  contextWindow: model.contextWindow ?? 0,
15737
15879
  contextTokens,
15738
- tokens: { input, output, reasoning, cacheRead, cacheWrite, total: input + output + cacheRead + cacheWrite },
15880
+ tokens: { input, output, reasoning, cacheRead, cacheWrite, total: totalTokens },
15739
15881
  cost,
15740
15882
  messages: { user, assistant, total: messages.length },
15741
15883
  };