@oh-my-pi/pi-coding-agent 16.3.6 → 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 (771) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/cli.js +3052 -3037
  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 +12 -12
  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
@@ -6,6 +6,7 @@ import * as fs from "node:fs/promises";
6
6
  import * as path from "node:path";
7
7
  import {
8
8
  type Agent,
9
+ AgentBusyError,
9
10
  type AgentMessage,
10
11
  type AgentToolResult,
11
12
  EventLoopKeepalive,
@@ -205,29 +206,37 @@ interface WorkingMessageAccentCacheKey {
205
206
  sessionAccentEnabled: boolean;
206
207
  }
207
208
 
209
+ /**
210
+ * Intern the shimmer palettes for each `WorkingMessageAccent` so `compile()`
211
+ * inside `shimmerSegments` sees a stable palette object between animation
212
+ * ticks. Allocating fresh palette literals every frame guaranteed a cache miss
213
+ * on the Symbol-keyed compiled-ANSI slot and forced `resolveTierAnsi` to walk
214
+ * every tier open/close for the ~30fps loader redraw (issue #4377).
215
+ */
216
+ const workingMessagePaletteCache = new WeakMap<WorkingMessageAccent, { main: ShimmerPalette; hint: ShimmerPalette }>();
217
+
218
+ function workingMessagePalettes(accent: WorkingMessageAccent): { main: ShimmerPalette; hint: ShimmerPalette } {
219
+ let entry = workingMessagePaletteCache.get(accent);
220
+ if (!entry) {
221
+ entry = {
222
+ main: { low: "dim", mid: { ansi: accent.main }, high: { ansi: accent.main }, bold: true },
223
+ hint: { low: "dim", mid: { ansi: accent.dim }, high: { ansi: accent.dim } },
224
+ };
225
+ workingMessagePaletteCache.set(accent, entry);
226
+ }
227
+ return entry;
228
+ }
229
+
208
230
  function renderWorkingMessage(message: string, accent?: WorkingMessageAccent): string {
209
- const palette = accent
210
- ? ({
211
- low: "dim",
212
- mid: { ansi: accent.main },
213
- high: { ansi: accent.main },
214
- bold: true,
215
- } satisfies ShimmerPalette)
216
- : undefined;
231
+ const palettes = accent ? workingMessagePalettes(accent) : undefined;
232
+ const palette = palettes?.main;
217
233
  const hint = interruptHint();
218
234
  if (!message.endsWith(hint)) return shimmerText(message, theme, palette);
219
235
  const header = message.slice(0, -hint.length);
220
- const hintPalette = accent
221
- ? ({
222
- low: "dim",
223
- mid: { ansi: accent.dim },
224
- high: { ansi: accent.dim },
225
- } satisfies ShimmerPalette)
226
- : HINT_SHIMMER_PALETTE;
227
236
  return shimmerSegments(
228
237
  [
229
238
  { text: header, palette },
230
- { text: hint, palette: hintPalette },
239
+ { text: hint, palette: palettes?.hint ?? HINT_SHIMMER_PALETTE },
231
240
  ],
232
241
  theme,
233
242
  );
@@ -635,7 +644,7 @@ export class InteractiveMode implements InteractiveModeContext {
635
644
  // unless the user opts in, and never emits raw escapes on other terminals.
636
645
  setTerminalTextSizing(settings.get("tui.textSizing") && TERMINAL.textSizing);
637
646
  this.chatContainer = new TranscriptContainer();
638
- this.pendingMessagesContainer = new Container();
647
+ this.pendingMessagesContainer = new AnchoredLiveContainer();
639
648
  this.statusContainer = new AnchoredLiveContainer();
640
649
  this.todoContainer = new AnchoredLiveContainer();
641
650
  this.subagentContainer = new AnchoredLiveContainer();
@@ -2614,8 +2623,16 @@ export class InteractiveMode implements InteractiveModeContext {
2614
2623
  // the try/finally is idempotent and kept for the !compactBeforeExecute
2615
2624
  // branch.
2616
2625
  this.session.setPlanReferencePath(options.planFilePath);
2617
- compactOutcome = await this.handleCompactCommand(compactionPrompt, undefined, outcome =>
2618
- this.#applyDeferredPlanModelTransition(outcome, options.executionModel),
2626
+ // Ride the plan-mode distillation prompt through as `internalGuidance`
2627
+ // so it reaches native summarization without leaking into the public
2628
+ // `customInstructions` channel on `session_before_compact` — extensions
2629
+ // there treat that field as user focus and would query-bias the
2630
+ // summary toward the plan boilerplate (issue #4359).
2631
+ compactOutcome = await this.handleCompactCommand(
2632
+ undefined,
2633
+ undefined,
2634
+ outcome => this.#applyDeferredPlanModelTransition(outcome, options.executionModel),
2635
+ compactionPrompt,
2619
2636
  );
2620
2637
  }
2621
2638
  } finally {
@@ -2676,16 +2693,24 @@ export class InteractiveMode implements InteractiveModeContext {
2676
2693
  planFilePath: options.planFilePath,
2677
2694
  contextPreserved: options.preserveContext === true,
2678
2695
  });
2679
- // The executor's first turn must start on an idle session. The agent may still
2680
- // be streaming the post-`resolve` continuation (Agent.#emit is fire-and-forget)
2681
- // or a turn kicked off by the compaction/clear above; prompt() would then throw
2682
- // AgentBusyError ("Failed to finalize approved plan"). Abort the now-irrelevant
2683
- // in-flight turn first — abort() bumps the prompt generation and cancels pending
2684
- // continuations, so nothing re-streams in the synchronous gap before prompt().
2696
+ // A user turn queued during compaction was already fired by
2697
+ // `flushCompactionQueue` before we returned from `handleCompactCommand`; the
2698
+ // old abort-then-prompt path would have discarded that operator turn AND
2699
+ // still surfaced `AgentBusyError` when the queued turn kicked off in the
2700
+ // synchronous gap. Preserve the in-flight work and queue the hidden
2701
+ // execution directive behind it as a synthetic follow-up. If `isStreaming`
2702
+ // flips true between the check and dispatch (the same fire-and-forget race
2703
+ // noted below), catch `AgentBusyError` and fall back to the same queue.
2685
2704
  if (this.session.isStreaming) {
2686
- await this.#abortPlanApprovalTurnSilently();
2705
+ await this.session.followUp(planModePrompt, undefined, { synthetic: true });
2706
+ return;
2707
+ }
2708
+ try {
2709
+ await this.session.prompt(planModePrompt, { synthetic: true });
2710
+ } catch (error) {
2711
+ if (!(error instanceof AgentBusyError)) throw error;
2712
+ await this.session.followUp(planModePrompt, undefined, { synthetic: true });
2687
2713
  }
2688
- await this.session.prompt(planModePrompt, { synthetic: true });
2689
2714
  }
2690
2715
  async #abortPlanApprovalTurnSilently(): Promise<void> {
2691
2716
  this.session.markPlanInternalAbortPending();
@@ -3904,8 +3929,9 @@ export class InteractiveMode implements InteractiveModeContext {
3904
3929
  customInstructions?: string,
3905
3930
  mode?: CompactMode,
3906
3931
  beforeFlush?: (outcome: CompactionOutcome) => void | Promise<void>,
3932
+ internalGuidance?: string,
3907
3933
  ): Promise<CompactionOutcome> {
3908
- return this.#commandController.handleCompactCommand(customInstructions, mode, beforeFlush);
3934
+ return this.#commandController.handleCompactCommand(customInstructions, mode, beforeFlush, internalGuidance);
3909
3935
  }
3910
3936
 
3911
3937
  handleHandoffCommand(customInstructions?: string): Promise<void> {
@@ -2,6 +2,7 @@ import {
2
2
  type AutocompleteItem,
3
3
  type AutocompleteProvider,
4
4
  CombinedAutocompleteProvider,
5
+ findLeadingSlashCommandStart,
5
6
  getKeybindings,
6
7
  type SlashCommand,
7
8
  } from "@oh-my-pi/pi-tui";
@@ -94,11 +95,13 @@ function getPromptActionPrefix(textBeforeCursor: string): string | null {
94
95
  }
95
96
 
96
97
  export class PromptActionAutocompleteProvider implements AutocompleteProvider {
98
+ #commands: SlashCommand[];
97
99
  #baseProvider: CombinedAutocompleteProvider;
98
100
  #actions: PromptActionDefinition[];
99
101
  #basePath: string;
100
102
 
101
103
  constructor(commands: SlashCommand[], basePath: string, actions: PromptActionDefinition[]) {
104
+ this.#commands = commands;
102
105
  this.#baseProvider = new CombinedAutocompleteProvider(commands, basePath);
103
106
  this.#basePath = basePath;
104
107
  this.#actions = actions;
@@ -111,6 +114,21 @@ export class PromptActionAutocompleteProvider implements AutocompleteProvider {
111
114
  ): Promise<{ items: AutocompleteItem[]; prefix: string } | null> {
112
115
  const currentLine = lines[cursorLine] || "";
113
116
  const textBeforeCursor = currentLine.slice(0, cursorCol);
117
+ const leadingSlashStart = findLeadingSlashCommandStart(textBeforeCursor);
118
+ const hasPromptTextBeforeCursorLine = lines.slice(0, cursorLine).some(line => (line || "").trim() !== "");
119
+ const commandText =
120
+ leadingSlashStart !== null && !hasPromptTextBeforeCursorLine
121
+ ? textBeforeCursor.slice(leadingSlashStart)
122
+ : null;
123
+ const spaceIndex = commandText?.indexOf(" ") ?? -1;
124
+ if (commandText !== null && spaceIndex !== -1) {
125
+ const commandName = commandText.slice(1, spaceIndex);
126
+ const command = this.#commands.find(cmd => cmd.name === commandName || cmd.aliases?.includes(commandName));
127
+ if (command && (!("allowArgs" in command) || command.allowArgs !== false)) {
128
+ return this.#baseProvider.getSuggestions(lines, cursorLine, cursorCol);
129
+ }
130
+ }
131
+
114
132
  const promptActionPrefix = getPromptActionPrefix(textBeforeCursor);
115
133
  if (promptActionPrefix) {
116
134
  const query = promptActionPrefix.slice(1).toLowerCase();
@@ -207,6 +207,14 @@ export function shimmerSegments(segments: readonly ShimmerSegment[], theme: Shim
207
207
  const time = Date.now();
208
208
  const intensityFn = mode === "kitt" ? kittIntensity : classicIntensity;
209
209
 
210
+ // Fast-path window: outside `[bandLo, bandHi]` the intensity is guaranteed
211
+ // zero (tier "low"), so we can skip `intensityFn` + `tierFor` entirely for
212
+ // the prefix/suffix of every segment. On the typical ~60-char working
213
+ // message the classic band spans ~12 cells, so ~80% of the per-char loop
214
+ // disappears — the intensity call and the tier compare were the residual
215
+ // per-frame cost after #4353 removed the allocation hotspot (issue #4377).
216
+ const { lo: bandLo, hi: bandHi } = activeBand(mode, time, total);
217
+
210
218
  let out = "";
211
219
  let index = 0;
212
220
  for (const { text, palette } of perSeg) {
@@ -224,7 +232,7 @@ export function shimmerSegments(segments: readonly ShimmerSegment[], theme: Shim
224
232
  const c2 = text.charCodeAt(i + 1);
225
233
  if (c2 >= 0xdc00 && c2 <= 0xdfff) step = 2;
226
234
  }
227
- const tier = tierFor(intensityFn(time, index, total));
235
+ const tier: Tier = index < bandLo || index > bandHi ? "low" : tierFor(intensityFn(time, index, total));
228
236
  if (tier !== runTier) {
229
237
  if (runTier !== null && runEnd > runStart) {
230
238
  const seq = compiled[runTier];
@@ -245,6 +253,34 @@ export function shimmerSegments(segments: readonly ShimmerSegment[], theme: Shim
245
253
  return out;
246
254
  }
247
255
 
256
+ /**
257
+ * Sweep window (code-point indices) outside which the intensity is guaranteed
258
+ * zero for `mode` at `time` over `total` cells. Widening the window is safe —
259
+ * the per-char intensity call still runs inside the window and reports 0 for
260
+ * off-band code points — but narrower windows skip more of the per-char loop.
261
+ */
262
+ function activeBand(mode: "classic" | "kitt", time: number, total: number): { lo: number; hi: number } {
263
+ if (mode === "classic") {
264
+ const period = total + CLASSIC_PADDING * 2;
265
+ const pos = ((time / 1000) * SHIMMER_SPEED_CELLS_PER_S) % period;
266
+ return {
267
+ lo: pos - CLASSIC_PADDING - CLASSIC_BAND_HALF_WIDTH,
268
+ hi: pos - CLASSIC_PADDING + CLASSIC_BAND_HALF_WIDTH,
269
+ };
270
+ }
271
+ const range = total - 1;
272
+ if (range <= 0) return { lo: 0, hi: total };
273
+ const cycleCells = 2 * range;
274
+ const sweep = ((time / 1000) * SHIMMER_SPEED_CELLS_PER_S) % cycleCells;
275
+ const goingRight = sweep < range;
276
+ const head = goingRight ? sweep : cycleCells - sweep;
277
+ // The trail always lies behind the head for the current direction — chars
278
+ // ahead of the head are dark. See {@link kittIntensity} for the exact rule.
279
+ return goingRight
280
+ ? { lo: head - KITT_HEAD_HALF - KITT_TRAIL_LEN, hi: head + KITT_HEAD_HALF }
281
+ : { lo: head - KITT_HEAD_HALF, hi: head + KITT_HEAD_HALF + KITT_TRAIL_LEN };
282
+ }
283
+
248
284
  function countCodePoints(text: string): number {
249
285
  let n = 0;
250
286
  let i = 0;
@@ -0,0 +1,38 @@
1
+ import { describe, expect, it } from "bun:test";
2
+ import type { AssistantMessage, Usage } from "@oh-my-pi/pi-ai";
3
+ import { assistantUsageIsBilled } from "./transcript-render-helpers";
4
+
5
+ function usage(overrides: Partial<Usage> = {}): Usage {
6
+ return {
7
+ input: 0,
8
+ output: 0,
9
+ cacheRead: 0,
10
+ cacheWrite: 0,
11
+ totalTokens: 0,
12
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
13
+ ...overrides,
14
+ };
15
+ }
16
+
17
+ describe("assistantUsageIsBilled", () => {
18
+ it("suppresses the token badge only for turns that consumed nothing", () => {
19
+ expect(assistantUsageIsBilled(usage())).toBe(false);
20
+ });
21
+
22
+ it("preserves cost transparency for empty replies whose prompt still cost input tokens", () => {
23
+ expect(assistantUsageIsBilled(usage({ input: 321 }))).toBe(true);
24
+ expect(assistantUsageIsBilled(usage({ output: 0, cacheRead: 512 }))).toBe(true);
25
+ expect(assistantUsageIsBilled(usage({ cacheWrite: 128 }))).toBe(true);
26
+ expect(assistantUsageIsBilled(usage({ premiumRequests: 1 }))).toBe(true);
27
+ });
28
+
29
+ // Documents the live/resume parity contract for #4532: both paths ask
30
+ // `assistantUsageIsBilled` about `message.usage`, so an empty automated
31
+ // reply that still cost input tokens renders identically on both surfaces.
32
+ it("matches whether the assistant carrier renders visible content", () => {
33
+ const emptyBilledMessage: Pick<AssistantMessage, "usage"> = { usage: usage({ input: 321 }) };
34
+ const emptyFreeMessage: Pick<AssistantMessage, "usage"> = { usage: usage() };
35
+ expect(assistantUsageIsBilled(emptyBilledMessage.usage)).toBe(true);
36
+ expect(assistantUsageIsBilled(emptyFreeMessage.usage)).toBe(false);
37
+ });
38
+ });
@@ -182,3 +182,17 @@ export function resolveAssistantErrorPresentation(
182
182
  }
183
183
  return { kind: "none" };
184
184
  }
185
+
186
+ /**
187
+ * Whether an assistant turn's `usage` reflects work the operator was billed
188
+ * for. Empty automated turns from providers that emit `usage: 0` collapse to
189
+ * `false`, but any input, output, cache, or premium request keeps the row so
190
+ * cost transparency survives — the live path and the resume/rebuild path
191
+ * agree turn-by-turn.
192
+ */
193
+ export function assistantUsageIsBilled(usage: AssistantAgentMessage["usage"]): boolean {
194
+ if (usage.input > 0 || usage.output > 0) return true;
195
+ if (usage.cacheRead > 0 || usage.cacheWrite > 0) return true;
196
+ if ((usage.premiumRequests ?? 0) > 0) return true;
197
+ return false;
198
+ }
@@ -50,6 +50,7 @@ import { buildSkillCommandPrompt, invokeSkillCommandFromText, isKnownSkillComman
50
50
  import { createAssistantMessageComponent } from "./interactive-context-helpers";
51
51
  import {
52
52
  assistantHasVisibleContent,
53
+ assistantUsageIsBilled,
53
54
  buildAsyncResultBlock,
54
55
  buildFileMentionBlock,
55
56
  buildIrcMessageCard,
@@ -463,7 +464,10 @@ export class UiHelpers {
463
464
  this.ctx.pendingTools.set(content.id, component);
464
465
  }
465
466
  }
466
- pendingUsage = this.ctx.settings.get("display.showTokenUsage") ? message.usage : undefined;
467
+ pendingUsage =
468
+ this.ctx.settings.get("display.showTokenUsage") && assistantUsageIsBilled(message.usage)
469
+ ? message.usage
470
+ : undefined;
467
471
  pendingUsageDuration = message.duration;
468
472
  pendingUsageTtft = message.ttft;
469
473
  } else if (message.role === "toolResult") {
@@ -13,7 +13,7 @@ Worth it when the task benefits from decomposition + parallel coverage, or from
13
13
  <helpers>
14
14
  State persists across eval calls, so scout in one call and fan out in the next. Every eval call has:
15
15
 
16
- - `agent(prompt, *, agent="task", model=None, label=None, schema=None, isolated=None, apply=None, merge=None, handle=False)` — run ONE subagent; returns its final text, or the validated object when `schema` (a JSON Schema dict) is given. With `schema` the subagent is forced to emit structured output that is validated for you — branch on the object, not on parsed prose. `agent` picks a discovered agent ("explore", "reviewer", …); `label` names the artifact. Shared background goes in a `local://` file referenced from each prompt, not a parameter. Subagents are told their final text IS the return value, so they hand back raw data. `agent()` blocks until the subagent finishes; eval-spawned agents nest at most 3 deep. Pass `isolated=True` to run the spawn in a copy-on-write worktree so parallel `agent()` calls can edit overlapping files safely — strict opt-in, mirrors the `task` tool, defaults off regardless of `task.isolation.mode`; `isolated=True` while the setting is `"none"` errors out instead of silently downgrading. With isolation, `apply=False` keeps changes in the worktree, and `merge=False` forces patch mode even when the setting is `"branch"`. Captured root patch path, branch name, nested repo patches, and apply summary reach the workflow through `handle=True` — combine it with `apply=False` (or `apply=False, schema=…`) and read `node["patch_path"]`, `node["branch_name"]`, `node["nested_patches"]`, `node["changes_applied"]`, `node["isolation_summary"]` (JS: same keys camelCased) to recover artifacts.
16
+ - `agent(prompt, *, agent="task", model=None, label=None, schema=None, isolated=None, apply=None, merge=None, handle=False)` — run ONE subagent; returns its final text, or the validated object when `schema` (a JSON Schema dict) is given. With `schema` the subagent is forced to emit structured output that is validated for you — branch on the object, not on parsed prose. `agent` picks a discovered agent ("explore", "reviewer", …); `label` names the artifact. Shared background goes in a `local://` file referenced from each prompt, not a parameter. Subagents are told their final text IS the return value, so they hand back raw data. `agent()` blocks until the subagent finishes. Recursion follows `task.maxRecursionDepth` (default 2; `-1` uses eval's hard cap 3): main agent depth = 0, each `agent()` child increments depth by 1, and a spawner may call `agent()` only while its current `taskDepth < effective cap`. Pass `isolated=True` to run the spawn in a copy-on-write worktree so parallel `agent()` calls can edit overlapping files safely — strict opt-in, mirrors the `task` tool, defaults off regardless of `task.isolation.mode`; `isolated=True` while the setting is `"none"` errors out instead of silently downgrading. With isolation, `apply=False` keeps changes in the worktree, and `merge=False` forces patch mode even when the setting is `"branch"`. Captured root patch path, branch name, nested repo patches, and apply summary reach the workflow through `handle=True` — combine it with `apply=False` (or `apply=False, schema=…`) and read `node["patch_path"]`, `node["branch_name"]`, `node["nested_patches"]`, `node["changes_applied"]`, `node["isolation_summary"]` (JS: same keys camelCased) to recover artifacts.
17
17
  - `parallel(thunks)` — run zero-arg callables concurrently through a bounded pool, preserving input order; returns once all finish. The pool is bounded by the session's `task` concurrency — don't hand-tune it; fan out as wide as the work divides. A thunk that raises propagates — wrap risky work in `try/except` inside the thunk to keep partial results. In a loop, bind each closure's value with a default arg (`lambda d=d: …`) or every thunk captures the last one.
18
18
  - `pipeline(items, *stages)` — map items through `stages` left-to-right. There is a BARRIER between stages: ALL items clear stage N before stage N+1 begins. Each stage is a one-arg callable; stage 1 gets the original item, later stages get the previous result. Same pool width as `parallel()`.
19
19
  - `completion(prompt, *, model="default", system=None, schema=None)` — oneshot, stateless model call (no tools, no history). Tiers: "smol", "default", "slow". Cheap classification/scoring inside a fan-out.
@@ -1,10 +1,10 @@
1
- Runs bash in a shell session — terminal ops: git, bun, cargo, python.
1
+ Runs commands in the embedded shell — terminal ops: git, bun, cargo, python.
2
2
 
3
3
  # When to use bash — and when not to
4
4
 
5
- Bash invokes **real binaries** with simple args. It is NOT a scripting surface.
5
+ The shell invokes **real binaries** with simple args. It is NOT full GNU Bash.
6
6
 
7
- Use bash ONLY for: a single binary call, or one short pipeline that COMPUTES a fact (`wc -l`, `sort | uniq -c`, `comm`, `diff`, a checksum, `git status`).
7
+ Use bash ONLY for: a single binary call, or one short pipeline that COMPUTES a fact and does not depend on shell-specific regex/quoting (`wc -l`, `sort | uniq -c`, `comm`, `diff`, a checksum, `git status`).
8
8
 
9
9
  Anything below → `eval` cell, not bash:
10
10
  - Inline interpreter scripts (`-e`/`-c`/`--eval`) when an eval runtime exists for that language
@@ -13,6 +13,7 @@ Anything below → `eval` cell, not bash:
13
13
  - Pipelines with more than two stages, or stages that need control flow or quote/JSON escaping
14
14
  - Multiline commands, `&&`-chains mixing control flow
15
15
  - Quote/JSON escaping that fights the shell
16
+ - GNU grep BRE extensions are not guaranteed in the embedded shell: use `grep -E 'json|tool'` for alternation instead of `grep 'json\|tool'`; use the built-in `grep` tool with `pattern: "json|tool"` (Rust regex, so `\bword\b` works there), or `eval` for exact text processing.
16
17
 
17
18
  <instruction>
18
19
  - `cwd` sets the working dir, not `cd dir && …`
@@ -22,13 +23,14 @@ Anything below → `eval` cell, not bash:
22
23
  - `;` only when later commands should run despite earlier failures
23
24
  - Multiple bash calls per message run concurrently. NEVER split order-dependent commands across parallel calls — chain with `&&` in one call.
24
25
  - Internal URIs (`skill://`, `agent://`, …) auto-resolve to FS paths
26
+ - Need exact pipeline semantics (`cmd | head`, multi-stage filtering) or output truncation? Prefer `eval` and process the stream directly.
25
27
  {{#if asyncEnabled}}
26
28
  - `async: true` for long-running commands when you don't need immediate output: returns a background job ID; result delivered as a follow-up.
27
29
  {{/if}}
28
30
  </instruction>
29
31
 
30
32
  <critical>
31
- - Bash invokes real binaries with simple args; it is NOT a scripting surface. Loops, conditionals, heredocs, inline interpreter scripts (`-e`/`-c`/`--eval`) when an eval runtime exists, several piped stages, or quote/JSON escaping mean you're writing a program → use `eval` cells: restartable, stateful, and free of shell-quoting traps.
33
+ - The embedded shell invokes real binaries with simple args; it is NOT full GNU Bash. Loops, conditionals, heredocs, inline interpreter scripts (`-e`/`-c`/`--eval`) when an eval runtime exists, several piped stages, exact pipeline semantics, or quote/JSON escaping mean you're writing a program → use `eval` cells: restartable, stateful, and free of shell-quoting traps.
32
34
  </critical>
33
35
 
34
36
  <output>
@@ -39,9 +41,9 @@ Anything below → `eval` cell, not bash:
39
41
  {{#if asyncEnabled}}
40
42
  # Timeout and async
41
43
 
42
- - `timeout` (seconds) caps wall-clock duration; the process is killed on elapse.
43
- - `async: true` defers only reporting — it does NOT extend the timeout; a daemon run with `async: true` is still killed when `timeout` elapses.
44
- - Long-running daemons (dev servers, watchers): pass a large explicit `timeout`. The shell session persists across calls, so `cmd &` keeps running between bash calls.
44
+ - `timeout` is seconds, clamped to `1..3600`; the process is killed on elapse.
45
+ - `async: true` defers only reporting — it does NOT extend the timeout; a daemon with `async: true` is still killed at the clamped timeout.
46
+ - Need >3600s? Detach/manage lifecycle yourself (`cmd &`, supervisor, self-restarting script). The shell session persists across calls.
45
47
  {{/if}}
46
48
  {{#if autoBackgroundEnabled}}
47
49
 
@@ -1,7 +1,7 @@
1
1
  Greps files using regex.
2
2
 
3
3
  <instruction>
4
- - Rust regex (RE2-style) no lookaround/backreferences; use line anchors or post-filters instead of (?!…)/(?<!…).
4
+ - Rust regex (RE2-style): alternation is `foo|bar`, not GNU BRE-style `foo\|bar`; Rust word boundaries like `\bword\b` are supported. Use line anchors or post-filters instead of lookaround/backreferences.
5
5
  - `path`: SHOULD scope to a known path (e.g. `src`); pass several as a delimited list (`src; tests`).
6
6
  - Cross-line patterns detected from literal `\n` or `\\n` in `pattern`.
7
7
  </instruction>
@@ -6,3 +6,5 @@ Use only with ids returned by the `recall` tool. Operations:
6
6
  - `invalidate`: softly supersede a working or episodic memory, optionally pointing at `replacement_id`.
7
7
 
8
8
  Prefer `invalidate` when a memory became stale but its history may still be useful. Use `forget` only for content that should be hard-deleted.
9
+
10
+ **Always read the full memory before `update`.** Recall results are clipped previews (the trailing `…` marks a truncation and `full_length` reports the original size); `update` replaces content wholesale, so overwriting the preview would delete the unseen tail. Fetch the row first with `read memory://<id>`, then pass the merged content in `content`.
@@ -3,3 +3,5 @@ Search long-term memory for relevant information. Returns raw matching entries r
3
3
  Use proactively — before answering questions about past conversations, user preferences, project decisions, or any topic where prior context would help accuracy. When in doubt, recall first.
4
4
 
5
5
  Prefer `recall` when you need specific facts or entries. Use `reflect` instead when you need a synthesized answer across many memories.
6
+
7
+ Content in each result is a preview. A trailing `…` marks a truncation (`truncated: true`, `full_length` gives the original size). Fetch the full row with `read memory://<id>` — required before any `memory_edit update`.
package/src/sdk.ts CHANGED
@@ -31,14 +31,17 @@ import { type Rule, ruleCapability, setActiveRules } from "./capability/rule";
31
31
  import { bucketRules } from "./capability/rule-buckets";
32
32
  import { shouldEnableAppendOnlyContext } from "./config/append-only-context-mode";
33
33
  import { shouldInlineToolDescriptors } from "./config/inline-tool-descriptors-mode";
34
- import { ModelRegistry } from "./config/model-registry";
34
+ import { isAuthenticated, kNoAuth, ModelRegistry } from "./config/model-registry";
35
35
  import {
36
+ formatModelSelectorValue,
36
37
  formatModelString,
38
+ formatModelStringWithRouting,
37
39
  getModelMatchPreferences,
38
40
  parseModelPattern,
39
41
  parseModelString,
40
42
  pickDefaultAvailableModel,
41
43
  resolveAllowedModels,
44
+ resolveConfiguredModelPatterns,
42
45
  resolveModelRoleValue,
43
46
  } from "./config/model-resolver";
44
47
  import { loadPromptTemplates as loadPromptTemplatesInternal, type PromptTemplate } from "./config/prompt-templates";
@@ -391,9 +394,13 @@ export interface CreateAgentSessionOptions {
391
394
 
392
395
  /** Model to use. Default: from settings, else first available */
393
396
  model?: Model;
394
- /** Raw model pattern string (e.g. from --model CLI flag) to resolve after extensions load.
397
+ /** Raw model pattern(s) (e.g. from --model CLI flag) to resolve after extensions load.
395
398
  * Used when model lookup is deferred because extension-provided models aren't registered yet. */
396
- modelPattern?: string;
399
+ modelPattern?: string | string[];
400
+ /** Authenticated fallback selector for deferred subagent model patterns. */
401
+ modelPatternAuthFallback?: string;
402
+ /** Role name used to install retry fallbacks after deferred subagent patterns resolve. */
403
+ modelPatternFallbackRole?: string;
397
404
  /** Thinking selector. Default: from settings, else unset */
398
405
  thinkingLevel?: ConfiguredThinkingLevel;
399
406
  /** Models available for cycling (Ctrl+P in interactive mode) */
@@ -1246,7 +1253,12 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
1246
1253
  const hasThinkingEntry = existingBranch.some(entry => entry.type === "thinking_level_change");
1247
1254
  const hasServiceTierEntry = existingBranch.some(entry => entry.type === "service_tier_change");
1248
1255
 
1249
- const hasExplicitModel = options.model !== undefined || options.modelPattern !== undefined;
1256
+ const deferredModelPatterns = Array.isArray(options.modelPattern)
1257
+ ? options.modelPattern.map(pattern => pattern.trim()).filter(Boolean)
1258
+ : options.modelPattern?.trim()
1259
+ ? [options.modelPattern.trim()]
1260
+ : [];
1261
+ const hasExplicitModel = options.model !== undefined || deferredModelPatterns.length > 0;
1250
1262
  const modelMatchPreferences = getModelMatchPreferences(settings);
1251
1263
  const allowedModels = await logger.time("resolveAllowedModels", () =>
1252
1264
  resolveAllowedModels(modelRegistry, settings, modelMatchPreferences),
@@ -1958,23 +1970,111 @@ export async function createAgentSession(options: CreateAgentSessionOptions = {}
1958
1970
  }
1959
1971
  }
1960
1972
  }
1961
- // Resolve deferred --model pattern now that extension models are registered.
1962
- if (!model && options.modelPattern) {
1973
+ // Resolve deferred --model/subagent patterns now that extension models are
1974
+ // registered. Expand role aliases (`pi/smol`) and comma chains to concrete
1975
+ // selectors first so deferred resolution accepts everything the immediate
1976
+ // path (resolveModelOverride → resolveModelRoleValue) accepts.
1977
+ if (!model && deferredModelPatterns.length > 0) {
1978
+ const expandedModelPatterns = resolveConfiguredModelPatterns(deferredModelPatterns, settings);
1963
1979
  const availableModels = modelRegistry.getAll();
1964
1980
  const matchPreferences = getModelMatchPreferences(settings);
1965
- const { model: resolved } = parseModelPattern(options.modelPattern, availableModels, matchPreferences);
1966
- if (resolved) {
1967
- model = resolved;
1981
+ for (let patternIndex = 0; patternIndex < expandedModelPatterns.length; patternIndex += 1) {
1982
+ const pattern = expandedModelPatterns[patternIndex];
1983
+ const primary = parseModelPattern(pattern, availableModels, matchPreferences);
1984
+ if (!primary.model) continue;
1985
+ let selectedModel = primary.model;
1986
+ let selectedThinkingLevel = primary.thinkingLevel;
1987
+ let selectedExplicitThinkingLevel = primary.explicitThinkingLevel;
1988
+ let authFallbackUsed = false;
1989
+ if (options.modelPatternAuthFallback) {
1990
+ const primaryKey = await modelRegistry.getApiKey(primary.model);
1991
+ if (primaryKey !== kNoAuth && !isAuthenticated(primaryKey)) {
1992
+ const fallback = parseModelPattern(
1993
+ options.modelPatternAuthFallback,
1994
+ availableModels,
1995
+ matchPreferences,
1996
+ );
1997
+ if (fallback.model) {
1998
+ const fallbackKey = await modelRegistry.getApiKey(fallback.model);
1999
+ if (isAuthenticated(fallbackKey)) {
2000
+ selectedModel = fallback.model;
2001
+ selectedThinkingLevel = fallback.thinkingLevel;
2002
+ selectedExplicitThinkingLevel = fallback.explicitThinkingLevel;
2003
+ authFallbackUsed = true;
2004
+ }
2005
+ }
2006
+ }
2007
+ }
2008
+ if (!authFallbackUsed && options.modelPatternFallbackRole) {
2009
+ const primarySelector = formatModelSelectorValue(
2010
+ formatModelStringWithRouting(primary.model),
2011
+ primary.thinkingLevel,
2012
+ );
2013
+ const seenSelectors = new Set<string>([primarySelector]);
2014
+ const fallbackSelectors: string[] = [];
2015
+ for (const fallbackPattern of expandedModelPatterns.slice(patternIndex + 1)) {
2016
+ const fallback = parseModelPattern(fallbackPattern, availableModels, matchPreferences);
2017
+ if (!fallback.model) continue;
2018
+ const fallbackSelector = formatModelSelectorValue(
2019
+ formatModelStringWithRouting(fallback.model),
2020
+ fallback.thinkingLevel,
2021
+ );
2022
+ if (seenSelectors.has(fallbackSelector)) continue;
2023
+ seenSelectors.add(fallbackSelector);
2024
+ fallbackSelectors.push(fallbackSelector);
2025
+ }
2026
+ if (fallbackSelectors.length > 0) {
2027
+ const modelRoles: Record<string, string> = {};
2028
+ const existingRoles = settings.getModelRoles();
2029
+ for (const role in existingRoles) {
2030
+ const selector = existingRoles[role];
2031
+ if (selector) {
2032
+ modelRoles[role] = selector;
2033
+ }
2034
+ }
2035
+ modelRoles[options.modelPatternFallbackRole] = primarySelector;
2036
+ settings.override("modelRoles", modelRoles);
2037
+ const fallbackChains: Record<string, string[]> = {
2038
+ [options.modelPatternFallbackRole]: fallbackSelectors,
2039
+ };
2040
+ const existingFallbackChains = settings.get("retry.fallbackChains");
2041
+ for (const role in existingFallbackChains) {
2042
+ if (role !== options.modelPatternFallbackRole) {
2043
+ fallbackChains[role] = existingFallbackChains[role];
2044
+ }
2045
+ }
2046
+ settings.override("retry.fallbackChains", fallbackChains);
2047
+ }
2048
+ }
2049
+ model = selectedModel;
1968
2050
  modelFallbackMessage = undefined;
1969
- } else {
1970
- modelFallbackMessage = `Model "${options.modelPattern}" not found`;
2051
+ if (selectedExplicitThinkingLevel) {
2052
+ restoredSessionThinkingLevel = selectedThinkingLevel;
2053
+ }
2054
+ thinkingLevel = pickInitialThinkingLevel(selectedModel);
2055
+ autoThinking = thinkingLevel === AUTO_THINKING;
2056
+ effectiveThinkingLevel = concreteThinkingLevel(thinkingLevel);
2057
+ effectiveThinkingLevel = logger.time("resolveThinkingLevelForModel", () =>
2058
+ autoThinking
2059
+ ? resolveProvisionalAutoLevel(selectedModel)
2060
+ : resolveThinkingLevelForModel(selectedModel, effectiveThinkingLevel),
2061
+ );
2062
+ preconnectModelHost(selectedModel.baseUrl);
2063
+ break;
2064
+ }
2065
+ if (!model) {
2066
+ const requested =
2067
+ deferredModelPatterns.length === 1
2068
+ ? `"${deferredModelPatterns[0]}"`
2069
+ : `one of ${deferredModelPatterns.map(pattern => `"${pattern}"`).join(", ")}`;
2070
+ modelFallbackMessage = `Model ${requested} not found`;
1971
2071
  }
1972
2072
  }
1973
2073
 
1974
2074
  // Fall back to first available model with a valid API key, honoring the
1975
2075
  // path-scoped `enabledModels` allow-list when configured. Skip when the
1976
2076
  // user explicitly requested a model via --model that wasn't found.
1977
- if (!model && !options.modelPattern) {
2077
+ if (!model && deferredModelPatterns.length === 0) {
1978
2078
  // Re-resolve the allowed set: extension factories above may have
1979
2079
  // registered providers/models that weren't visible at startup.
1980
2080
  const fallbackCandidates = await resolveAllowedModels(modelRegistry, settings, modelMatchPreferences);