@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
@@ -1,5 +1,5 @@
1
1
  import type { AuthStorage, FetchImpl } from "@oh-my-pi/pi-ai";
2
- import type { SearchProviderId, SearchResponse } from "../types";
2
+ import type { SearchProviderId, SearchResponse } from "../types.js";
3
3
  /**
4
4
  * Shared web search parameters passed to providers.
5
5
  *
@@ -5,9 +5,9 @@
5
5
  * SearchResponse shape used by the web search tool.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  export interface BraveSearchParams {
12
12
  query: string;
13
13
  num_results?: number;
@@ -1,7 +1,7 @@
1
1
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
2
- import type { SearchResponse } from "../../../web/search/types";
3
- import type { SearchParams } from "./base";
4
- import { SearchProvider } from "./base";
2
+ import type { SearchResponse } from "../../../web/search/types.js";
3
+ import type { SearchParams } from "./base.js";
4
+ import { SearchProvider } from "./base.js";
5
5
  export interface CodexSearchParams {
6
6
  signal?: AbortSignal;
7
7
  fetch?: FetchImpl;
@@ -1,7 +1,7 @@
1
1
  import type { AuthStorage } from "@oh-my-pi/pi-ai";
2
- import type { SearchResponse } from "../../../web/search/types";
3
- import type { SearchParams } from "./base";
4
- import { SearchProvider } from "./base";
2
+ import type { SearchResponse } from "../../../web/search/types.js";
3
+ import type { SearchParams } from "./base.js";
4
+ import { SearchProvider } from "./base.js";
5
5
  /** Execute a DuckDuckGo web search via the no-JS HTML frontend. */
6
6
  export declare function searchDuckDuckGo(params: SearchParams): Promise<SearchResponse>;
7
7
  /** Search provider for DuckDuckGo (no API key required). */
@@ -7,9 +7,9 @@
7
7
  * them into a combined `answer` string on the SearchResponse.
8
8
  */
9
9
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
10
- import type { SearchResponse } from "../../../web/search/types";
11
- import type { SearchParams } from "./base";
12
- import { SearchProvider } from "./base";
10
+ import type { SearchResponse } from "../../../web/search/types.js";
11
+ import type { SearchParams } from "./base.js";
12
+ import { SearchProvider } from "./base.js";
13
13
  /** Reset Exa request pacing state for isolated provider tests. */
14
14
  export declare function resetExaSearchThrottleForTest(): void;
15
15
  type ExaSearchType = "neural" | "fast" | "auto" | "deep";
@@ -5,9 +5,9 @@
5
5
  * SearchResponse shape used by the web search tool.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  export interface FirecrawlSearchParams {
12
12
  query: string;
13
13
  num_results?: number;
@@ -9,9 +9,9 @@
9
9
  * endpoint.
10
10
  */
11
11
  import { type AuthStorage, type FetchImpl, type OAuthAccess } from "@oh-my-pi/pi-ai";
12
- import type { SearchResponse } from "../../../web/search/types";
13
- import type { SearchParams } from "./base";
14
- import { SearchProvider } from "./base";
12
+ import type { SearchResponse } from "../../../web/search/types.js";
13
+ import type { SearchParams } from "./base.js";
14
+ import { SearchProvider } from "./base.js";
15
15
  declare const GEMINI_PROVIDERS: readonly ["google-gemini-cli", "google-antigravity"];
16
16
  type GeminiProviderId = (typeof GEMINI_PROVIDERS)[number];
17
17
  interface GeminiToolParams {
@@ -5,9 +5,9 @@
5
5
  * cleaned content.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  type SearchParamsWithFetch = SearchParams & {
12
12
  fetch?: FetchImpl;
13
13
  };
@@ -4,9 +4,9 @@
4
4
  * Thin wrapper that adapts shared Kagi API utilities to SearchResponse shape.
5
5
  */
6
6
  import type { AuthStorage, FetchImpl } from "@oh-my-pi/pi-ai";
7
- import type { SearchResponse } from "../../../web/search/types";
8
- import type { SearchParams } from "./base";
9
- import { SearchProvider } from "./base";
7
+ import type { SearchResponse } from "../../../web/search/types.js";
8
+ import type { SearchParams } from "./base.js";
9
+ import { SearchProvider } from "./base.js";
10
10
  type SearchParamsWithFetch = SearchParams & {
11
11
  fetch?: FetchImpl;
12
12
  };
@@ -5,9 +5,9 @@
5
5
  * Endpoint: POST https://api.kimi.com/coding/v1/search
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  type SearchParamsWithFetch = SearchParams & {
12
12
  fetch?: FetchImpl;
13
13
  };
@@ -1,7 +1,7 @@
1
1
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
2
- import type { SearchResponse } from "../../../web/search/types";
3
- import type { SearchParams } from "./base";
4
- import { SearchProvider } from "./base";
2
+ import type { SearchResponse } from "../../../web/search/types.js";
3
+ import type { SearchParams } from "./base.js";
4
+ import { SearchProvider } from "./base.js";
5
5
  export declare function searchParallel(params: {
6
6
  query: string;
7
7
  num_results?: number;
@@ -8,9 +8,9 @@
8
8
  * - Anonymous via `www.perplexity.ai/rest/sse/perplexity_ask`
9
9
  */
10
10
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
11
- import type { SearchResponse } from "../../../web/search/types";
12
- import type { SearchParams } from "./base";
13
- import { SearchProvider } from "./base";
11
+ import type { SearchResponse } from "../../../web/search/types.js";
12
+ import type { SearchParams } from "./base.js";
13
+ import { SearchProvider } from "./base.js";
14
14
  export interface PerplexitySearchParams {
15
15
  signal?: AbortSignal;
16
16
  query: string;
@@ -25,9 +25,9 @@
25
25
  * Reference: https://docs.searxng.org/dev/search_api.html
26
26
  */
27
27
  import type { AuthStorage, FetchImpl } from "@oh-my-pi/pi-ai";
28
- import type { SearchResponse } from "../../../web/search/types";
29
- import type { SearchParams } from "./base";
30
- import { SearchProvider } from "./base";
28
+ import type { SearchResponse } from "../../../web/search/types.js";
29
+ import type { SearchParams } from "./base.js";
30
+ import { SearchProvider } from "./base.js";
31
31
  /** Execute SearXNG web search. */
32
32
  export declare function searchSearXNG(params: {
33
33
  query: string;
@@ -5,9 +5,9 @@
5
5
  * Endpoint: POST https://api.synthetic.new/v2/search
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  type SearchParamsWithFetch = SearchParams & {
12
12
  fetch?: FetchImpl;
13
13
  };
@@ -5,9 +5,9 @@
5
5
  * optional synthesized answer.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  export interface TavilySearchParams {
12
12
  query: string;
13
13
  num_results?: number;
@@ -5,9 +5,9 @@
5
5
  * SearchResponse shape used by the web search tool.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  export interface TinyFishSearchParams {
12
12
  query: string;
13
13
  num_results?: number;
@@ -1,5 +1,5 @@
1
- import type { AgentStorage } from "../../../session/agent-storage";
2
- import { SearchProviderError, type SearchProviderId, type SearchSource } from "../../../web/search/types";
1
+ import type { AgentStorage } from "../../../session/agent-storage.js";
2
+ import { SearchProviderError, type SearchProviderId, type SearchSource } from "../../../web/search/types.js";
3
3
  /**
4
4
  * Search for an API credential by checking an env-derived key first,
5
5
  * then falling back to agent.db stored credentials for the given providers.
@@ -1,7 +1,7 @@
1
1
  import { type AuthStorage } from "@oh-my-pi/pi-ai";
2
- import type { SearchResponse } from "../../../web/search/types";
3
- import type { SearchParams } from "./base";
4
- import { SearchProvider } from "./base";
2
+ import type { SearchResponse } from "../../../web/search/types.js";
3
+ import type { SearchParams } from "./base.js";
4
+ import { SearchProvider } from "./base.js";
5
5
  /** Execute xAI Responses API web search. */
6
6
  export declare function searchXAI(params: SearchParams): Promise<SearchResponse>;
7
7
  /** Search provider for xAI web search. */
@@ -5,9 +5,9 @@
5
5
  * the unified SearchResponse shape used by the web search tool.
6
6
  */
7
7
  import { type AuthStorage, type FetchImpl } from "@oh-my-pi/pi-ai";
8
- import type { SearchResponse } from "../../../web/search/types";
9
- import type { SearchParams } from "./base";
10
- import { SearchProvider } from "./base";
8
+ import type { SearchResponse } from "../../../web/search/types.js";
9
+ import type { SearchParams } from "./base.js";
10
+ import { SearchProvider } from "./base.js";
11
11
  export interface ZaiSearchParams {
12
12
  query: string;
13
13
  num_results?: number;
@@ -4,9 +4,9 @@
4
4
  * Tree-based rendering with collapsed/expanded states for web search results.
5
5
  */
6
6
  import type { Component } from "@oh-my-pi/pi-tui";
7
- import type { RenderResultOptions } from "../../extensibility/custom-tools/types";
8
- import { type Theme } from "../../modes/theme/theme";
9
- import type { SearchResponse } from "./types";
7
+ import type { RenderResultOptions } from "../../extensibility/custom-tools/types.js";
8
+ import { type Theme } from "../../modes/theme/theme.js";
9
+ import type { SearchResponse } from "./types.js";
10
10
  export interface SearchRenderDetails {
11
11
  response: SearchResponse;
12
12
  error?: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@oh-my-pi/pi-coding-agent",
4
- "version": "16.3.6",
4
+ "version": "16.3.7",
5
5
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://omp.sh",
7
7
  "author": "Can Boluk",
@@ -56,17 +56,17 @@
56
56
  "@agentclientprotocol/sdk": "0.25.0",
57
57
  "@babel/parser": "^7.29.7",
58
58
  "@mozilla/readability": "^0.6.0",
59
- "@oh-my-pi/hashline": "16.3.6",
60
- "@oh-my-pi/omp-stats": "16.3.6",
61
- "@oh-my-pi/pi-agent-core": "16.3.6",
62
- "@oh-my-pi/pi-ai": "16.3.6",
63
- "@oh-my-pi/pi-catalog": "16.3.6",
64
- "@oh-my-pi/pi-mnemopi": "16.3.6",
65
- "@oh-my-pi/pi-natives": "16.3.6",
66
- "@oh-my-pi/pi-tui": "16.3.6",
67
- "@oh-my-pi/pi-utils": "16.3.6",
68
- "@oh-my-pi/pi-wire": "16.3.6",
69
- "@oh-my-pi/snapcompact": "16.3.6",
59
+ "@oh-my-pi/hashline": "16.3.7",
60
+ "@oh-my-pi/omp-stats": "16.3.7",
61
+ "@oh-my-pi/pi-agent-core": "16.3.7",
62
+ "@oh-my-pi/pi-ai": "16.3.7",
63
+ "@oh-my-pi/pi-catalog": "16.3.7",
64
+ "@oh-my-pi/pi-mnemopi": "16.3.7",
65
+ "@oh-my-pi/pi-natives": "16.3.7",
66
+ "@oh-my-pi/pi-tui": "16.3.7",
67
+ "@oh-my-pi/pi-utils": "16.3.7",
68
+ "@oh-my-pi/pi-wire": "16.3.7",
69
+ "@oh-my-pi/snapcompact": "16.3.7",
70
70
  "@opentelemetry/api": "^1.9.1",
71
71
  "@opentelemetry/context-async-hooks": "^2.7.1",
72
72
  "@opentelemetry/exporter-trace-otlp-proto": "^0.218.0",
@@ -164,6 +164,65 @@ describe("advisor", () => {
164
164
  expect(md).toContain("[irc]");
165
165
  expect(md).not.toContain("<primary-context");
166
166
  });
167
+
168
+ it("omits hidden non-primary custom messages while keeping visible custom messages", () => {
169
+ const hiddenPrelude = {
170
+ role: "custom",
171
+ customType: "eager-todo-prelude",
172
+ content: "<system-reminder>Task delegation is enabled",
173
+ display: false,
174
+ timestamp: 1,
175
+ } as AgentMessage;
176
+ const hiddenHookMessage = {
177
+ role: "hookMessage",
178
+ customType: "hidden-hook-reminder",
179
+ content: "Hidden hook reminder should never reach advisor history",
180
+ display: false,
181
+ timestamp: 2,
182
+ } as AgentMessage;
183
+ const visibleCustom = {
184
+ role: "custom",
185
+ customType: "visible-status",
186
+ content: "Visible custom update",
187
+ display: true,
188
+ timestamp: 3,
189
+ } as AgentMessage;
190
+
191
+ const md = formatSessionHistoryMarkdown([hiddenPrelude, hiddenHookMessage, visibleCustom], {
192
+ expandPrimaryContext: true,
193
+ });
194
+
195
+ expect(md).toContain("[visible-status] Visible custom update");
196
+ expect(md).not.toContain("eager-todo-prelude");
197
+ expect(md).not.toContain("system-reminder");
198
+ expect(md).not.toContain("Task delegation");
199
+ expect(md).not.toContain("hidden-hook-reminder");
200
+ expect(md).not.toContain("Hidden hook reminder");
201
+ });
202
+
203
+ it("keeps hidden image descriptions because they are the text transcript for attached images", () => {
204
+ const imageDescription = {
205
+ role: "custom",
206
+ customType: "image-attachment-description",
207
+ content: [{ type: "text", text: '<image path="local://session/cat.png">cat on a keyboard</image>' }],
208
+ display: false,
209
+ timestamp: 1,
210
+ } as AgentMessage;
211
+ const hiddenPrelude = {
212
+ role: "custom",
213
+ customType: "eager-todo-prelude",
214
+ content: "<system-reminder>Task delegation is enabled",
215
+ display: false,
216
+ timestamp: 2,
217
+ } as AgentMessage;
218
+
219
+ const md = formatSessionHistoryMarkdown([imageDescription, hiddenPrelude], { expandPrimaryContext: true });
220
+
221
+ expect(md).toContain("[image-attachment-description]");
222
+ expect(md).toContain("cat on a keyboard");
223
+ expect(md).not.toContain("eager-todo-prelude");
224
+ expect(md).not.toContain("Task delegation");
225
+ });
167
226
  });
168
227
 
169
228
  describe("formatSessionHistoryMarkdown expandEditDiffs", () => {
@@ -35,13 +35,14 @@ const DIFFICULTY_SYSTEM_PROMPT = prompt.render(difficultySystemPrompt);
35
35
  const MAX_INPUT_CHARS = 6000;
36
36
  const HEAD_CHARS = 4000;
37
37
  const TAIL_CHARS = 2000;
38
- /** The online answer is a single word; keep budgets tiny for non-reasoning backends. */
39
- const ANSWER_MAX_TOKENS = 8;
40
38
  /** Local classifiers occasionally need more room for chat-template boilerplate. */
41
39
  const LOCAL_ANSWER_MAX_TOKENS = 16;
42
40
  /**
43
- * Reasoning backends ignore `disableReasoning` on some providers, so reserve
44
- * enough output room for the keyword to still land after unavoidable thinking.
41
+ * Online classifier budget. Sized to survive backends that ignore
42
+ * `disableReasoning` (e.g. Qwen3 via llama.cpp catalogued `reasoning: false`
43
+ * but still emitting thinking): the classifier keyword needs to land after any
44
+ * unavoidable thinking preamble. `maxTokens` is a hard cap — non-thinking
45
+ * completions still return in a handful of tokens (issue #4355).
45
46
  */
46
47
  const REASONING_SAFE_MAX_TOKENS = 1024;
47
48
 
@@ -85,7 +86,7 @@ async function classifyOnline(input: string, deps: ClassifyDifficultyDeps): Prom
85
86
  }
86
87
  // Resolve metadata after getApiKey so the session-sticky credential is recorded first.
87
88
  const metadata = deps.metadataResolver?.(model.provider);
88
- const maxTokens = model.reasoning ? Math.max(ANSWER_MAX_TOKENS, REASONING_SAFE_MAX_TOKENS) : ANSWER_MAX_TOKENS;
89
+ const maxTokens = REASONING_SAFE_MAX_TOKENS;
89
90
 
90
91
  const response = await completeSimple(
91
92
  model,
@@ -21,6 +21,9 @@ const BACKOFF_BASE_MS = 1_000;
21
21
  const BACKOFF_MAX_MS = 30_000;
22
22
  /** Max enveloped frames buffered while a reconnect is pending; overflow is dropped. */
23
23
  const MAX_PENDING_SENDS = 256;
24
+ const WS_BACKPRESSURE_THRESHOLD = 64 * 1024;
25
+ const WS_BACKPRESSURE_DRAIN_THRESHOLD = 32 * 1024;
26
+ const WS_BACKPRESSURE_DRAIN_RETRY_MS = 25;
24
27
 
25
28
  export interface CollabSocketOptions {
26
29
  /** wss://host[:port]/r/<roomId> — no query string. */
@@ -40,6 +43,7 @@ export class CollabSocket {
40
43
  readonly #opts: CollabSocketOptions;
41
44
  #ws: WebSocket | null = null;
42
45
  #retryTimer: NodeJS.Timeout | undefined;
46
+ #backpressureDrainTimer: NodeJS.Timeout | undefined;
43
47
  #attempt = 0;
44
48
  /** Terminal state: intentional close or fatal failure. Cleared by connect(). */
45
49
  #closed = false;
@@ -72,28 +76,84 @@ export class CollabSocket {
72
76
  logger.debug("collab: dropping frame, socket closed", { t: frame.t });
73
77
  return;
74
78
  }
79
+ const openWs = this.#ws;
80
+ if (openWs && openWs.readyState === WebSocket.OPEN) this.#drainPendingSends(openWs);
75
81
  const sealed = await seal(this.#opts.key, frame);
76
82
  const envelope = packEnvelope(targetPeer, sealed);
77
83
  const ws = this.#ws;
78
84
  if (ws && ws.readyState === WebSocket.OPEN) {
85
+ if (this.#pendingSends.length > 0) {
86
+ this.#enqueuePendingSend(envelope, frame.t);
87
+ if (ws.bufferedAmount < WS_BACKPRESSURE_DRAIN_THRESHOLD) {
88
+ this.#drainPendingSends(ws);
89
+ } else {
90
+ this.#scheduleBackpressureDrain(ws);
91
+ }
92
+ return;
93
+ }
94
+ if (ws.bufferedAmount >= WS_BACKPRESSURE_THRESHOLD) {
95
+ this.#enqueuePendingSend(envelope, frame.t);
96
+ this.#scheduleBackpressureDrain(ws);
97
+ return;
98
+ }
79
99
  ws.send(envelope);
80
100
  return;
81
101
  }
82
- if (this.#pendingSends.length >= MAX_PENDING_SENDS) {
83
- logger.debug("collab: dropping frame, reconnect buffer full", { t: frame.t });
84
- return;
85
- }
86
- this.#pendingSends.push(envelope);
102
+ this.#enqueuePendingSend(envelope, frame.t);
87
103
  })
88
104
  .catch((err: unknown) => {
89
105
  logger.debug("collab: send failed", { error: String(err) });
90
106
  });
91
107
  }
92
108
 
109
+ #enqueuePendingSend(envelope: Uint8Array, frameType: CollabFrame["t"]): void {
110
+ if (this.#pendingSends.length >= MAX_PENDING_SENDS) {
111
+ logger.debug("collab: dropping frame, reconnect buffer full", { t: frameType });
112
+ return;
113
+ }
114
+ this.#pendingSends.push(envelope);
115
+ }
116
+
117
+ #drainPendingSends(ws: WebSocket): void {
118
+ while (
119
+ this.#pendingSends.length > 0 &&
120
+ ws.readyState === WebSocket.OPEN &&
121
+ ws.bufferedAmount < WS_BACKPRESSURE_DRAIN_THRESHOLD
122
+ ) {
123
+ const envelope = this.#pendingSends.shift();
124
+ if (!envelope) return;
125
+ ws.send(envelope);
126
+ }
127
+ }
128
+
129
+ #scheduleBackpressureDrain(ws: WebSocket): void {
130
+ if (this.#backpressureDrainTimer !== undefined) return;
131
+ this.#backpressureDrainTimer = setTimeout(() => {
132
+ this.#backpressureDrainTimer = undefined;
133
+ this.#sendChain = this.#sendChain
134
+ .then(async () => {
135
+ if (this.#closed || this.#ws !== ws || ws.readyState !== WebSocket.OPEN) return;
136
+ this.#drainPendingSends(ws);
137
+ if (this.#pendingSends.length > 0) this.#scheduleBackpressureDrain(ws);
138
+ })
139
+ .catch((err: unknown) => {
140
+ logger.debug("collab: backpressure drain failed", { error: String(err) });
141
+ });
142
+ }, WS_BACKPRESSURE_DRAIN_RETRY_MS);
143
+ }
144
+
145
+ #clearBackpressureDrain(): void {
146
+ if (this.#backpressureDrainTimer !== undefined) {
147
+ clearTimeout(this.#backpressureDrainTimer);
148
+ this.#backpressureDrainTimer = undefined;
149
+ }
150
+ }
151
+
93
152
  /** Intentional close: clears any retry timer, suppresses reconnect. A later connect() starts fresh. */
94
153
  close(): void {
95
154
  const hadActivity = this.#ws !== null || this.#retryTimer !== undefined;
96
155
  this.#clearRetry();
156
+ this.#clearBackpressureDrain();
97
157
  const wasClosed = this.#closed;
98
158
  this.#closed = true;
99
159
  this.#pendingSends.length = 0;
@@ -110,14 +170,17 @@ export class CollabSocket {
110
170
  }
111
171
 
112
172
  #openSocket(): void {
173
+ this.#clearBackpressureDrain();
113
174
  const ws = new WebSocket(`${this.#opts.wsUrl}?role=${this.#opts.role}`);
114
175
  ws.binaryType = "arraybuffer";
115
176
  this.#ws = ws;
116
177
  ws.onopen = () => {
117
178
  if (this.#ws !== ws) return;
118
179
  this.#attempt = 0;
119
- for (const envelope of this.#pendingSends) ws.send(envelope);
120
- this.#pendingSends.length = 0;
180
+ if (this.#pendingSends.length > 0) {
181
+ this.#drainPendingSends(ws);
182
+ if (this.#pendingSends.length > 0) this.#scheduleBackpressureDrain(ws);
183
+ }
121
184
  this.onOpen?.();
122
185
  };
123
186
  ws.onmessage = (event: MessageEvent) => {
@@ -129,6 +192,7 @@ export class CollabSocket {
129
192
  };
130
193
  ws.onclose = (event: CloseEvent) => {
131
194
  if (this.#ws !== ws) return;
195
+ this.#clearBackpressureDrain();
132
196
  this.#ws = null;
133
197
  this.#handleClose(event.code, event.reason);
134
198
  };
@@ -167,6 +231,7 @@ export class CollabSocket {
167
231
 
168
232
  #handleClose(code: number, reason: string): void {
169
233
  if (this.#closed) return;
234
+ this.#clearBackpressureDrain();
170
235
  const fatalReason = FATAL_CLOSE_REASONS[code];
171
236
  if (fatalReason !== undefined) {
172
237
  this.#closed = true;
@@ -186,6 +251,7 @@ export class CollabSocket {
186
251
  this.#pendingSends.length = 0;
187
252
  const ws = this.#ws;
188
253
  this.#ws = null;
254
+ this.#clearBackpressureDrain();
189
255
  if (ws) {
190
256
  try {
191
257
  ws.close(1000);
@@ -48,6 +48,13 @@ const STARTUP_MODEL_CACHE_PROVIDER_IDS: readonly string[] = [
48
48
  // packages/ai/src/registry/lm-studio.ts, and packages/ai/src/registry/vllm.ts.
49
49
  const LOCAL_PROVIDER_PLACEHOLDERS = new Set<string>(["llama-cpp-local", "lm-studio-local", "vllm-local"]);
50
50
 
51
+ /**
52
+ * Hard bound for extension-provided fetchDynamicModels to prevent indefinite hangs
53
+ * during runtime provider discovery. Uses a cancellable manual timer (not AbortSignal.timeout)
54
+ * so a successful fast path does not leave an armed timeout signal for concurrent GC.
55
+ */
56
+ const RUNTIME_DYNAMIC_MODEL_FETCH_TIMEOUT_MS = 15_000;
57
+
51
58
  import type { ApiKeyResolver, FetchImpl } from "@oh-my-pi/pi-ai";
52
59
  import { registerOAuthProvider, unregisterOAuthProviders } from "@oh-my-pi/pi-ai/oauth";
53
60
  import type { OAuthCredentials, OAuthLoginCallbacks } from "@oh-my-pi/pi-ai/oauth/types";
@@ -81,6 +88,24 @@ function isDiscoveryBearerApiKey(apiKey: string | undefined | null): apiKey is s
81
88
  return isAuthenticated(apiKey) && !LOCAL_PROVIDER_PLACEHOLDERS.has(apiKey);
82
89
  }
83
90
 
91
+ /**
92
+ * Wraps an extension-provided fetchDynamicModels call with a hard timeout.
93
+ * Uses a cancellable manual timer (not AbortSignal.timeout) so that a fast
94
+ * successful path does not leave an armed timeout signal for concurrent GC.
95
+ * The inner fetcher does not receive a signal (extension contract has none).
96
+ */
97
+ async function withRuntimeDynamicModelsTimeout<T>(timeoutMs: number, run: () => Promise<T>): Promise<T> {
98
+ const { promise: timeoutPromise, reject: timeoutReject } = Promise.withResolvers<never>();
99
+ const timer = setTimeout(() => {
100
+ timeoutReject(new Error(`fetchDynamicModels timed out after ${timeoutMs}ms`));
101
+ }, timeoutMs);
102
+ try {
103
+ return await Promise.race([run(), timeoutPromise]);
104
+ } finally {
105
+ clearTimeout(timer);
106
+ }
107
+ }
108
+
84
109
  /** Provider override config (baseUrl, headers, apiKey, compat, transport) without custom models */
85
110
  interface ProviderOverride {
86
111
  baseUrl?: string;
@@ -240,6 +265,13 @@ interface CustomModelsResult {
240
265
  }
241
266
 
242
267
  const commandValueCache = new Map<string, string>();
268
+ // Failed `!command` resolutions (non-zero exit, empty stdout) are negative-cached
269
+ // with a TTL instead of forever: a transient failure (locked password manager,
270
+ // network hiccup) must not disable the key until process restart, but re-running
271
+ // the command on every resolution would restore the execSync storm this cache
272
+ // exists to prevent. One probe per TTL window bounds both.
273
+ const COMMAND_FAILURE_RETRY_MS = 30_000;
274
+ const commandFailureRetryAt = new Map<string, number>();
243
275
 
244
276
  function isCommandConfigValue(valueConfig: string | undefined): valueConfig is string {
245
277
  return valueConfig?.startsWith("!") === true;
@@ -248,13 +280,20 @@ function isCommandConfigValue(valueConfig: string | undefined): valueConfig is s
248
280
  function resolveCommandConfig(command: string): string | undefined {
249
281
  const cached = commandValueCache.get(command);
250
282
  if (cached !== undefined) return cached;
283
+ const retryAt = commandFailureRetryAt.get(command);
284
+ if (retryAt !== undefined && Date.now() < retryAt) return undefined;
251
285
  try {
252
286
  const stdout = execSync(command, { encoding: "utf8", timeout: 10_000, windowsHide: true });
253
287
  const trimmed = stdout.trim();
254
- if (trimmed.length === 0) return undefined;
288
+ if (trimmed.length === 0) {
289
+ commandFailureRetryAt.set(command, Date.now() + COMMAND_FAILURE_RETRY_MS);
290
+ return undefined;
291
+ }
292
+ commandFailureRetryAt.delete(command);
255
293
  commandValueCache.set(command, trimmed);
256
294
  return trimmed;
257
295
  } catch {
296
+ commandFailureRetryAt.set(command, Date.now() + COMMAND_FAILURE_RETRY_MS);
258
297
  return undefined;
259
298
  }
260
299
  }
@@ -2134,7 +2173,9 @@ export class ModelRegistry {
2134
2173
  fetchDynamicModels: async () => {
2135
2174
  const apiKey = await this.#peekApiKeyForProvider(providerName);
2136
2175
  const resolvedKey = isAuthenticated(apiKey) ? apiKey : undefined;
2137
- const modelDefs = await fetcher(resolvedKey);
2176
+ const modelDefs = await withRuntimeDynamicModelsTimeout(RUNTIME_DYNAMIC_MODEL_FETCH_TIMEOUT_MS, () =>
2177
+ fetcher(resolvedKey),
2178
+ );
2138
2179
  const results: Model<Api>[] = [];
2139
2180
  for (const modelDef of modelDefs) {
2140
2181
  const overlay = buildCustomModelOverlay(
@@ -864,7 +864,7 @@ function getModelRoleAlias(value: string): ModelRole | undefined {
864
864
 
865
865
  function normalizeModelPatternList(value: string | string[] | undefined): string[] {
866
866
  if (!value) return [];
867
- const patterns = Array.isArray(value) ? value : value.split(",");
867
+ const patterns = Array.isArray(value) ? value.flatMap(pattern => pattern.split(",")) : value.split(",");
868
868
  return patterns.map(pattern => pattern.trim()).filter(Boolean);
869
869
  }
870
870