@prometheus-ai/agent 0.5.3 → 0.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1160) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/cli.js +25110 -0
  3. package/dist/types/async/index.d.ts +0 -1
  4. package/dist/types/async/job-manager.d.ts +33 -0
  5. package/dist/types/autolearn/controller.d.ts +25 -0
  6. package/dist/types/autolearn/managed-skills.d.ts +45 -0
  7. package/dist/types/autoresearch/state.d.ts +1 -1
  8. package/dist/types/autoresearch/tools/init-experiment.d.ts +1 -1
  9. package/dist/types/autoresearch/tools/log-experiment.d.ts +1 -1
  10. package/dist/types/autoresearch/tools/run-experiment.d.ts +1 -1
  11. package/dist/types/autoresearch/tools/update-notes.d.ts +1 -1
  12. package/dist/types/autoresearch/types.d.ts +1 -1
  13. package/dist/types/capability/context-file.d.ts +0 -13
  14. package/dist/types/capability/mcp.d.ts +1 -0
  15. package/dist/types/capability/rule-buckets.d.ts +1 -1
  16. package/dist/types/capability/rule.d.ts +6 -1
  17. package/dist/types/capability/types.d.ts +0 -4
  18. package/dist/types/cli/args.d.ts +23 -3
  19. package/dist/types/cli/bench-cli.d.ts +78 -0
  20. package/dist/types/cli/claude-trace-cli.d.ts +7 -0
  21. package/dist/types/cli/dry-balance-cli.d.ts +16 -2
  22. package/dist/types/cli/gallery-cli.d.ts +43 -0
  23. package/dist/types/cli/gallery-fixtures/agentic.d.ts +2 -0
  24. package/dist/types/cli/gallery-fixtures/codeintel.d.ts +3 -0
  25. package/dist/types/cli/gallery-fixtures/edit.d.ts +3 -0
  26. package/dist/types/cli/gallery-fixtures/fs.d.ts +2 -0
  27. package/dist/types/cli/gallery-fixtures/index.d.ts +4 -0
  28. package/dist/types/cli/gallery-fixtures/interaction.d.ts +3 -0
  29. package/dist/types/cli/gallery-fixtures/memory.d.ts +2 -0
  30. package/dist/types/cli/gallery-fixtures/misc.d.ts +3 -0
  31. package/dist/types/cli/gallery-fixtures/search.d.ts +3 -0
  32. package/dist/types/cli/gallery-fixtures/shell.d.ts +3 -0
  33. package/dist/types/cli/gallery-fixtures/types.d.ts +55 -0
  34. package/dist/types/cli/gallery-fixtures/web.d.ts +2 -0
  35. package/dist/types/cli/gallery-screenshot.d.ts +35 -0
  36. package/dist/types/cli/gateway-cli.d.ts +4 -0
  37. package/dist/types/cli/grievances-cli.d.ts +1 -1
  38. package/dist/types/cli/list-models.d.ts +6 -14
  39. package/dist/types/cli/models-cli.d.ts +49 -0
  40. package/dist/types/cli/session-picker.d.ts +1 -1
  41. package/dist/types/cli/setup-cli.d.ts +1 -1
  42. package/dist/types/cli/setup-model-picker.d.ts +14 -0
  43. package/dist/types/cli/startup-cwd.d.ts +2 -0
  44. package/dist/types/cli/update-cli.d.ts +13 -40
  45. package/dist/types/cli/usage-cli.d.ts +81 -0
  46. package/dist/types/cli-commands.d.ts +12 -0
  47. package/dist/types/collab/crypto.d.ts +7 -0
  48. package/dist/types/collab/guest.d.ts +37 -0
  49. package/dist/types/collab/host.d.ts +29 -0
  50. package/dist/types/collab/protocol.d.ts +119 -0
  51. package/dist/types/collab/relay-client.d.ts +22 -0
  52. package/dist/types/commands/bench.d.ts +29 -0
  53. package/dist/types/commands/gallery.d.ts +47 -0
  54. package/dist/types/commands/gateway.d.ts +3 -0
  55. package/dist/types/commands/install.d.ts +1 -1
  56. package/dist/types/commands/join.d.ts +12 -0
  57. package/dist/types/commands/launch.d.ts +8 -4
  58. package/dist/types/commands/models.d.ts +33 -0
  59. package/dist/types/commands/read.d.ts +1 -1
  60. package/dist/types/commands/say.d.ts +24 -0
  61. package/dist/types/commands/token.d.ts +25 -0
  62. package/dist/types/commands/usage.d.ts +34 -0
  63. package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
  64. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
  65. package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
  66. package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
  67. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
  68. package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
  69. package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
  70. package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
  71. package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
  72. package/dist/types/commit/analysis/conventional.d.ts +2 -2
  73. package/dist/types/commit/analysis/summary.d.ts +2 -2
  74. package/dist/types/commit/changelog/generate.d.ts +3 -3
  75. package/dist/types/commit/changelog/index.d.ts +2 -2
  76. package/dist/types/commit/map-reduce/index.d.ts +3 -3
  77. package/dist/types/commit/map-reduce/map-phase.d.ts +2 -2
  78. package/dist/types/commit/map-reduce/reduce-phase.d.ts +2 -2
  79. package/dist/types/commit/model-selection.d.ts +10 -4
  80. package/dist/types/commit/shared-llm.d.ts +1 -1
  81. package/dist/types/config/api-key-resolver.d.ts +43 -0
  82. package/dist/types/config/append-only-context-mode.d.ts +2 -1
  83. package/dist/types/config/keybindings.d.ts +12 -7
  84. package/dist/types/config/model-discovery.d.ts +57 -0
  85. package/dist/types/config/model-equivalence.d.ts +1 -1
  86. package/dist/types/config/model-registry.d.ts +86 -222
  87. package/dist/types/config/model-resolver.d.ts +43 -12
  88. package/dist/types/config/model-roles.d.ts +29 -0
  89. package/dist/types/config/models-config-schema.d.ts +536 -43
  90. package/dist/types/config/models-config.d.ts +391 -0
  91. package/dist/types/config/settings-schema.d.ts +1211 -324
  92. package/dist/types/config/settings.d.ts +15 -3
  93. package/dist/types/dap/config.d.ts +14 -1
  94. package/dist/types/dap/types.d.ts +10 -0
  95. package/dist/types/debug/log-viewer.d.ts +1 -1
  96. package/dist/types/debug/raw-sse.d.ts +1 -1
  97. package/dist/types/debug/report-bundle.d.ts +3 -0
  98. package/dist/types/debug/terminal-info.d.ts +0 -1
  99. package/dist/types/discovery/at-imports.d.ts +15 -0
  100. package/dist/types/discovery/prometheus-extension-roots.d.ts +7 -7
  101. package/dist/types/edit/diff.d.ts +3 -2
  102. package/dist/types/edit/file-snapshot-store.d.ts +18 -0
  103. package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
  104. package/dist/types/edit/hashline/params.d.ts +1 -1
  105. package/dist/types/edit/index.d.ts +0 -1
  106. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  107. package/dist/types/edit/modes/patch.d.ts +1 -1
  108. package/dist/types/edit/modes/replace.d.ts +1 -1
  109. package/dist/types/edit/renderer.d.ts +1 -0
  110. package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
  111. package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
  112. package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
  113. package/dist/types/eval/backend.d.ts +7 -2
  114. package/dist/types/eval/bridge-timeout.d.ts +1 -1
  115. package/dist/types/eval/completion-bridge.d.ts +25 -0
  116. package/dist/types/eval/idle-timeout.d.ts +1 -5
  117. package/dist/types/eval/js/context-manager.d.ts +1 -0
  118. package/dist/types/eval/js/executor.d.ts +2 -0
  119. package/dist/types/eval/js/index.d.ts +1 -1
  120. package/dist/types/eval/js/shared/helpers.d.ts +7 -1
  121. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
  122. package/dist/types/eval/js/shared/runtime.d.ts +6 -1
  123. package/dist/types/eval/js/worker-protocol.d.ts +6 -0
  124. package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
  125. package/dist/types/eval/py/executor.d.ts +12 -0
  126. package/dist/types/eval/py/index.d.ts +1 -1
  127. package/dist/types/eval/py/kernel.d.ts +6 -1
  128. package/dist/types/eval/py/runtime.d.ts +9 -0
  129. package/dist/types/exa/index.d.ts +1 -19
  130. package/dist/types/exa/mcp-client.d.ts +10 -3
  131. package/dist/types/exa/types.d.ts +0 -83
  132. package/dist/types/exec/bash-executor.d.ts +7 -0
  133. package/dist/types/export/custom-share.d.ts +1 -2
  134. package/dist/types/export/html/index.d.ts +39 -0
  135. package/dist/types/export/html/template-js.d.ts +2 -0
  136. package/dist/types/export/share.d.ts +61 -0
  137. package/dist/types/export/ttsr.d.ts +14 -0
  138. package/dist/types/extensibility/custom-commands/types.d.ts +9 -4
  139. package/dist/types/extensibility/custom-tools/loader.d.ts +30 -4
  140. package/dist/types/extensibility/custom-tools/types.d.ts +16 -8
  141. package/dist/types/extensibility/extensions/index.d.ts +1 -1
  142. package/dist/types/extensibility/extensions/loader.d.ts +20 -1
  143. package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
  144. package/dist/types/extensibility/extensions/runner.d.ts +5 -2
  145. package/dist/types/extensibility/extensions/types.d.ts +72 -11
  146. package/dist/types/extensibility/hooks/index.d.ts +2 -1
  147. package/dist/types/extensibility/hooks/loader.d.ts +1 -1
  148. package/dist/types/extensibility/hooks/types.d.ts +11 -5
  149. package/dist/types/extensibility/{legacy-pi-ai-shim.d.ts → legacy-package-ai-shim.d.ts} +2 -2
  150. package/dist/types/extensibility/plugins/{legacy-pi-compat.d.ts → legacy-package-compat.d.ts} +20 -3
  151. package/dist/types/extensibility/plugins/loader.d.ts +11 -0
  152. package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
  153. package/dist/types/extensibility/plugins/types.d.ts +2 -2
  154. package/dist/types/extensibility/shared-events.d.ts +3 -3
  155. package/dist/types/extensibility/skills.d.ts +10 -0
  156. package/dist/types/extensibility/slash-commands.d.ts +1 -11
  157. package/dist/types/gateway/adapters/telegram/access.d.ts +4 -1
  158. package/dist/types/gateway/adapters/telegram/setup-api.d.ts +1 -1
  159. package/dist/types/gateway/adapters/telegram/webhook.d.ts +1 -1
  160. package/dist/types/gateway/types.d.ts +1 -1
  161. package/dist/types/goals/guided-setup.d.ts +18 -0
  162. package/dist/types/goals/state.d.ts +1 -1
  163. package/dist/types/goals/tools/goal-tool.d.ts +1 -1
  164. package/dist/types/hindsight/mental-models.d.ts +17 -8
  165. package/dist/types/hindsight/transcript.d.ts +1 -1
  166. package/dist/types/index.d.ts +5 -0
  167. package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
  168. package/dist/types/internal-urls/history-protocol.d.ts +14 -0
  169. package/dist/types/internal-urls/index.d.ts +1 -0
  170. package/dist/types/internal-urls/local-protocol.d.ts +14 -2
  171. package/dist/types/internal-urls/types.d.ts +1 -1
  172. package/dist/types/irc/bus.d.ts +79 -0
  173. package/dist/types/lib/xai-http.d.ts +1 -1
  174. package/dist/types/lsp/client.d.ts +10 -0
  175. package/dist/types/lsp/config.d.ts +2 -2
  176. package/dist/types/lsp/edits.d.ts +9 -0
  177. package/dist/types/lsp/format-options.d.ts +32 -0
  178. package/dist/types/lsp/index.d.ts +2 -7
  179. package/dist/types/lsp/types.d.ts +13 -1
  180. package/dist/types/lsp/utils.d.ts +6 -2
  181. package/dist/types/main.d.ts +23 -8
  182. package/dist/types/mcp/json-rpc.d.ts +5 -0
  183. package/dist/types/mcp/manager.d.ts +8 -0
  184. package/dist/types/mcp/oauth-discovery.d.ts +6 -1
  185. package/dist/types/mcp/oauth-flow.d.ts +13 -3
  186. package/dist/types/mcp/startup-events.d.ts +11 -0
  187. package/dist/types/mcp/tool-bridge.d.ts +2 -0
  188. package/dist/types/mcp/transports/stdio.d.ts +13 -0
  189. package/dist/types/mcp/types.d.ts +2 -0
  190. package/dist/types/memories/index.d.ts +7 -15
  191. package/dist/types/memories/storage.d.ts +0 -10
  192. package/dist/types/memory-backend/index.d.ts +3 -1
  193. package/dist/types/memory-backend/local-backend.d.ts +4 -3
  194. package/dist/types/memory-backend/resolve.d.ts +2 -2
  195. package/dist/types/memory-backend/runtime.d.ts +4 -0
  196. package/dist/types/memory-backend/types.d.ts +67 -2
  197. package/dist/types/mnemopi/config.d.ts +31 -1
  198. package/dist/types/mnemopi/state.d.ts +40 -2
  199. package/dist/types/modes/acp/acp-agent.d.ts +1 -2
  200. package/dist/types/modes/components/agent-dashboard.d.ts +17 -1
  201. package/dist/types/modes/components/agent-hub.d.ts +82 -0
  202. package/dist/types/modes/components/assistant-message.d.ts +5 -12
  203. package/dist/types/modes/components/bash-execution.d.ts +1 -1
  204. package/dist/types/modes/components/chat-block.d.ts +64 -0
  205. package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
  206. package/dist/types/modes/components/compaction-summary-message.d.ts +25 -5
  207. package/dist/types/modes/components/copy-selector.d.ts +1 -1
  208. package/dist/types/modes/components/custom-editor.d.ts +49 -2
  209. package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
  210. package/dist/types/modes/components/dynamic-border.d.ts +1 -1
  211. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +1 -1
  212. package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
  213. package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
  214. package/dist/types/modes/components/footer.d.ts +1 -1
  215. package/dist/types/modes/components/hook-editor.d.ts +5 -0
  216. package/dist/types/modes/components/hook-input.d.ts +4 -0
  217. package/dist/types/modes/components/hook-selector.d.ts +5 -7
  218. package/dist/types/modes/components/index.d.ts +1 -0
  219. package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
  220. package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
  221. package/dist/types/modes/components/mcp-add-wizard.d.ts +2 -1
  222. package/dist/types/modes/components/model-selector.d.ts +1 -1
  223. package/dist/types/modes/components/oauth-selector.d.ts +10 -1
  224. package/dist/types/modes/components/overlay-box.d.ts +17 -0
  225. package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
  226. package/dist/types/modes/components/plan-toc.d.ts +41 -0
  227. package/dist/types/modes/components/read-tool-group.d.ts +8 -0
  228. package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
  229. package/dist/types/modes/components/segment-track.d.ts +11 -6
  230. package/dist/types/modes/components/session-selector.d.ts +18 -9
  231. package/dist/types/modes/components/settings-defs.d.ts +9 -2
  232. package/dist/types/modes/components/settings-selector.d.ts +17 -4
  233. package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
  234. package/dist/types/modes/components/status-line/component.d.ts +61 -0
  235. package/dist/types/modes/components/status-line/index.d.ts +1 -0
  236. package/dist/types/modes/components/status-line/types.d.ts +47 -3
  237. package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
  238. package/dist/types/modes/components/tool-execution.d.ts +49 -2
  239. package/dist/types/modes/components/transcript-container.d.ts +76 -26
  240. package/dist/types/modes/components/tree-selector.d.ts +2 -2
  241. package/dist/types/modes/components/ttsr-notification.d.ts +5 -1
  242. package/dist/types/modes/components/usage-row.d.ts +3 -0
  243. package/dist/types/modes/components/user-message-selector.d.ts +1 -1
  244. package/dist/types/modes/components/user-message.d.ts +2 -1
  245. package/dist/types/modes/components/visual-truncate.d.ts +1 -1
  246. package/dist/types/modes/components/welcome.d.ts +12 -2
  247. package/dist/types/modes/controllers/command-controller.d.ts +3 -2
  248. package/dist/types/modes/controllers/event-controller.d.ts +7 -1
  249. package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -1
  250. package/dist/types/modes/controllers/input-controller.d.ts +25 -3
  251. package/dist/types/modes/controllers/mcp-command-controller.d.ts +8 -0
  252. package/dist/types/modes/controllers/selector-controller.d.ts +5 -2
  253. package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
  254. package/dist/types/modes/controllers/streaming-reveal.d.ts +22 -0
  255. package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
  256. package/dist/types/modes/controllers/tool-args-reveal.d.ts +43 -0
  257. package/dist/types/modes/gradient-highlight.d.ts +9 -4
  258. package/dist/types/modes/image-references.d.ts +14 -3
  259. package/dist/types/modes/index.d.ts +8 -7
  260. package/dist/types/modes/interactive-mode.d.ts +92 -16
  261. package/dist/types/modes/magic-keywords.d.ts +14 -2
  262. package/dist/types/modes/markdown-prose.d.ts +1 -1
  263. package/dist/types/modes/oauth-manual-input.d.ts +7 -0
  264. package/dist/types/modes/rpc/rpc-client.d.ts +48 -2
  265. package/dist/types/modes/rpc/rpc-mode.d.ts +67 -2
  266. package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
  267. package/dist/types/modes/rpc/rpc-types.d.ts +113 -1
  268. package/dist/types/modes/runtime-init.d.ts +4 -0
  269. package/dist/types/modes/session-observer-registry.d.ts +9 -0
  270. package/dist/types/modes/setup-version.d.ts +11 -0
  271. package/dist/types/modes/setup-wizard/index.d.ts +7 -2
  272. package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
  273. package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +4 -1
  274. package/dist/types/modes/setup-wizard/scenes/types.d.ts +11 -2
  275. package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +6 -2
  276. package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
  277. package/dist/types/modes/theme/theme.d.ts +42 -7
  278. package/dist/types/modes/types.d.ts +62 -13
  279. package/dist/types/modes/utils/context-usage.d.ts +6 -1
  280. package/dist/types/modes/utils/copy-targets.d.ts +21 -1
  281. package/dist/types/modes/utils/ui-helpers.d.ts +4 -4
  282. package/dist/types/modes/workflow.d.ts +3 -3
  283. package/dist/types/plan-mode/approved-plan.d.ts +27 -8
  284. package/dist/types/plan-mode/plan-protection.d.ts +4 -4
  285. package/dist/types/registry/agent-lifecycle.d.ts +51 -0
  286. package/dist/types/registry/agent-registry.d.ts +33 -5
  287. package/dist/types/sdk.d.ts +46 -4
  288. package/dist/types/secrets/index.d.ts +1 -1
  289. package/dist/types/secrets/obfuscator.d.ts +9 -3
  290. package/dist/types/session/agent-session.d.ts +136 -66
  291. package/dist/types/session/agent-storage.d.ts +2 -1
  292. package/dist/types/session/auth-broker-config.d.ts +4 -0
  293. package/dist/types/session/auth-storage.d.ts +1 -1
  294. package/dist/types/session/codex-auto-reset.d.ts +111 -0
  295. package/dist/types/session/indexed-session-storage.d.ts +3 -3
  296. package/dist/types/session/messages.d.ts +26 -15
  297. package/dist/types/session/session-context.d.ts +39 -0
  298. package/dist/types/session/session-entries.d.ts +159 -0
  299. package/dist/types/session/session-history-format.d.ts +12 -0
  300. package/dist/types/session/session-listing.d.ts +69 -0
  301. package/dist/types/session/session-loader.d.ts +16 -0
  302. package/dist/types/session/session-manager.d.ts +107 -440
  303. package/dist/types/session/session-migrations.d.ts +12 -0
  304. package/dist/types/session/session-paths.d.ts +25 -0
  305. package/dist/types/session/session-persistence.d.ts +8 -0
  306. package/dist/types/session/session-storage.d.ts +11 -7
  307. package/dist/types/session/snapcompact-inline.d.ts +145 -0
  308. package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
  309. package/dist/types/session/streaming-output.d.ts +46 -0
  310. package/dist/types/session/tool-choice-queue.d.ts +6 -6
  311. package/dist/types/session/yield-queue.d.ts +10 -1
  312. package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
  313. package/dist/types/slash-commands/available-commands.d.ts +34 -0
  314. package/dist/types/slash-commands/builtin-registry.d.ts +10 -0
  315. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
  316. package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
  317. package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
  318. package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
  319. package/dist/types/slash-commands/types.d.ts +5 -9
  320. package/dist/types/ssh/connection-manager.d.ts +8 -0
  321. package/dist/types/stt/asr-client.d.ts +90 -0
  322. package/dist/types/stt/asr-protocol.d.ts +97 -0
  323. package/dist/types/stt/asr-worker.d.ts +2 -0
  324. package/dist/types/stt/downloader.d.ts +38 -0
  325. package/dist/types/stt/endpointer.d.ts +59 -0
  326. package/dist/types/stt/index.d.ts +5 -1
  327. package/dist/types/stt/models.d.ts +120 -0
  328. package/dist/types/stt/recorder.d.ts +17 -0
  329. package/dist/types/stt/stt-controller.d.ts +6 -0
  330. package/dist/types/stt/transcriber.d.ts +5 -7
  331. package/dist/types/stt/wav.d.ts +29 -0
  332. package/dist/types/system-prompt.d.ts +9 -1
  333. package/dist/types/task/commands.d.ts +1 -1
  334. package/dist/types/task/discovery.d.ts +1 -2
  335. package/dist/types/task/executor.d.ts +61 -2
  336. package/dist/types/task/index.d.ts +37 -6
  337. package/dist/types/task/output-manager.d.ts +0 -7
  338. package/dist/types/task/parallel.d.ts +2 -2
  339. package/dist/types/task/prometheus-command.d.ts +2 -2
  340. package/dist/types/task/render.d.ts +20 -7
  341. package/dist/types/task/repair-args.d.ts +8 -7
  342. package/dist/types/task/types.d.ts +109 -52
  343. package/dist/types/task/worktree.d.ts +2 -0
  344. package/dist/types/telemetry-export.d.ts +2 -2
  345. package/dist/types/thinking.d.ts +4 -0
  346. package/dist/types/tiny/models.d.ts +1 -1
  347. package/dist/types/tiny/title-client.d.ts +12 -1
  348. package/dist/types/tiny/title-protocol.d.ts +1 -0
  349. package/dist/types/tools/archive-reader.d.ts +5 -0
  350. package/dist/types/tools/ask.d.ts +6 -1
  351. package/dist/types/tools/ast-edit.d.ts +4 -1
  352. package/dist/types/tools/ast-grep.d.ts +4 -1
  353. package/dist/types/tools/bash.d.ts +5 -2
  354. package/dist/types/tools/browser/attach.d.ts +4 -4
  355. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
  356. package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
  357. package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
  358. package/dist/types/tools/browser/registry.d.ts +17 -3
  359. package/dist/types/tools/browser/render.d.ts +2 -0
  360. package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
  361. package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
  362. package/dist/types/tools/browser/tab-worker.d.ts +18 -1
  363. package/dist/types/tools/browser.d.ts +3 -1
  364. package/dist/types/tools/checkpoint.d.ts +1 -1
  365. package/dist/types/tools/conflict-detect.d.ts +16 -0
  366. package/dist/types/tools/debug.d.ts +1 -1
  367. package/dist/types/tools/eval-render.d.ts +1 -8
  368. package/dist/types/tools/eval.d.ts +9 -1
  369. package/dist/types/tools/fetch.d.ts +17 -8
  370. package/dist/types/tools/find.d.ts +1 -8
  371. package/dist/types/tools/gh-cache-invalidation.d.ts +6 -0
  372. package/dist/types/tools/gh.d.ts +4 -1
  373. package/dist/types/tools/github-cache.d.ts +19 -0
  374. package/dist/types/tools/grouped-file-output.d.ts +46 -12
  375. package/dist/types/tools/image-gen.d.ts +1 -1
  376. package/dist/types/tools/index.d.ts +89 -8
  377. package/dist/types/tools/inspect-image.d.ts +1 -1
  378. package/dist/types/tools/irc.d.ts +79 -39
  379. package/dist/types/tools/job.d.ts +8 -2
  380. package/dist/types/tools/learn.d.ts +51 -0
  381. package/dist/types/tools/manage-skill.d.ts +40 -0
  382. package/dist/types/tools/memory-edit.d.ts +2 -2
  383. package/dist/types/tools/memory-recall.d.ts +1 -1
  384. package/dist/types/tools/memory-reflect.d.ts +1 -1
  385. package/dist/types/tools/memory-render.d.ts +4 -1
  386. package/dist/types/tools/memory-retain.d.ts +1 -1
  387. package/dist/types/tools/path-utils.d.ts +17 -5
  388. package/dist/types/tools/plan-mode-guard.d.ts +18 -9
  389. package/dist/types/tools/read.d.ts +3 -2
  390. package/dist/types/tools/render-mermaid.d.ts +1 -1
  391. package/dist/types/tools/render-utils.d.ts +47 -27
  392. package/dist/types/tools/renderers.d.ts +10 -2
  393. package/dist/types/tools/report-tool-issue.d.ts +6 -1
  394. package/dist/types/tools/resolve.d.ts +1 -1
  395. package/dist/types/tools/review.d.ts +1 -1
  396. package/dist/types/tools/search-tool-bm25.d.ts +1 -1
  397. package/dist/types/tools/search.d.ts +7 -3
  398. package/dist/types/tools/sqlite-reader.d.ts +4 -0
  399. package/dist/types/tools/ssh.d.ts +2 -1
  400. package/dist/types/tools/todo.d.ts +7 -15
  401. package/dist/types/tools/tool-result.d.ts +2 -0
  402. package/dist/types/tools/tool-timeouts.d.ts +1 -1
  403. package/dist/types/tools/tts.d.ts +26 -1
  404. package/dist/types/tools/write.d.ts +6 -3
  405. package/dist/types/tools/yield.d.ts +8 -0
  406. package/dist/types/tts/downloader.d.ts +20 -0
  407. package/dist/types/tts/index.d.ts +8 -0
  408. package/dist/types/tts/models.d.ts +82 -0
  409. package/dist/types/tts/player.d.ts +32 -0
  410. package/dist/types/tts/runtime.d.ts +6 -0
  411. package/dist/types/tts/streaming-player.d.ts +41 -0
  412. package/dist/types/tts/tts-client.d.ts +93 -0
  413. package/dist/types/tts/tts-protocol.d.ts +95 -0
  414. package/dist/types/tts/tts-worker.d.ts +2 -0
  415. package/dist/types/tts/vocalizer.d.ts +41 -0
  416. package/dist/types/tts/wav.d.ts +8 -0
  417. package/dist/types/tui/code-cell.d.ts +0 -2
  418. package/dist/types/tui/hyperlink.d.ts +13 -7
  419. package/dist/types/tui/output-block.d.ts +16 -22
  420. package/dist/types/tui/status-line.d.ts +3 -0
  421. package/dist/types/utils/block-context.d.ts +35 -0
  422. package/dist/types/utils/changelog.d.ts +8 -0
  423. package/dist/types/utils/clipboard.d.ts +4 -3
  424. package/dist/types/utils/enhanced-paste.d.ts +20 -0
  425. package/dist/types/utils/file-mentions.d.ts +7 -0
  426. package/dist/types/utils/git.d.ts +22 -3
  427. package/dist/types/utils/image-loading.d.ts +30 -1
  428. package/dist/types/utils/session-color.d.ts +15 -3
  429. package/dist/types/utils/thinking-display.d.ts +17 -0
  430. package/dist/types/utils/title-generator.d.ts +3 -2
  431. package/dist/types/utils/tool-choice.d.ts +8 -0
  432. package/dist/types/utils/tools-manager.d.ts +2 -1
  433. package/dist/types/web/kagi.d.ts +2 -2
  434. package/dist/types/web/parallel.d.ts +3 -0
  435. package/dist/types/web/scrapers/github.d.ts +22 -0
  436. package/dist/types/web/scrapers/readthedocs.d.ts +3 -0
  437. package/dist/types/web/scrapers/types.d.ts +12 -0
  438. package/dist/types/web/search/index.d.ts +1 -1
  439. package/dist/types/web/search/providers/anthropic.d.ts +2 -1
  440. package/dist/types/web/search/providers/base.d.ts +2 -1
  441. package/dist/types/web/search/providers/brave.d.ts +2 -1
  442. package/dist/types/web/search/providers/codex.d.ts +2 -1
  443. package/dist/types/web/search/providers/exa.d.ts +2 -1
  444. package/dist/types/web/search/providers/gemini.d.ts +10 -6
  445. package/dist/types/web/search/providers/jina.d.ts +7 -2
  446. package/dist/types/web/search/providers/kagi.d.ts +7 -2
  447. package/dist/types/web/search/providers/kimi.d.ts +7 -2
  448. package/dist/types/web/search/providers/parallel.d.ts +2 -1
  449. package/dist/types/web/search/providers/perplexity.d.ts +10 -2
  450. package/dist/types/web/search/providers/searxng.d.ts +2 -1
  451. package/dist/types/web/search/providers/synthetic.d.ts +7 -3
  452. package/dist/types/web/search/providers/tavily.d.ts +2 -1
  453. package/dist/types/web/search/providers/zai.d.ts +2 -1
  454. package/dist/types/web/search/types.d.ts +1 -1
  455. package/examples/extensions/api-demo.ts +2 -2
  456. package/package.json +41 -15
  457. package/scripts/bench-guard.ts +71 -0
  458. package/scripts/build-binary.ts +24 -25
  459. package/scripts/bundle-dist.ts +97 -0
  460. package/scripts/generate-share-viewer.ts +34 -0
  461. package/scripts/prometheus +42 -0
  462. package/scripts/prometheus.ts +20 -0
  463. package/src/async/index.ts +0 -1
  464. package/src/async/job-manager.ts +106 -3
  465. package/src/auto-thinking/classifier.ts +2 -1
  466. package/src/autolearn/controller.ts +139 -0
  467. package/src/autolearn/managed-skills.ts +257 -0
  468. package/src/autoresearch/dashboard.ts +1 -1
  469. package/src/autoresearch/prompt-setup.md +6 -6
  470. package/src/autoresearch/prompt.md +6 -6
  471. package/src/autoresearch/state.ts +1 -1
  472. package/src/autoresearch/storage.ts +2 -1
  473. package/src/autoresearch/tools/init-experiment.ts +1 -1
  474. package/src/autoresearch/tools/log-experiment.ts +1 -1
  475. package/src/autoresearch/tools/run-experiment.ts +1 -1
  476. package/src/autoresearch/tools/update-notes.ts +1 -1
  477. package/src/autoresearch/types.ts +1 -1
  478. package/src/capability/context-file.ts +0 -14
  479. package/src/capability/fs.ts +10 -0
  480. package/src/capability/index.ts +1 -6
  481. package/src/capability/mcp.ts +1 -0
  482. package/src/capability/rule-buckets.ts +4 -2
  483. package/src/capability/rule.ts +10 -1
  484. package/src/capability/types.ts +0 -4
  485. package/src/cli/args.ts +66 -13
  486. package/src/cli/auth-broker-cli.ts +6 -7
  487. package/src/cli/auth-gateway-cli.ts +8 -9
  488. package/src/cli/bench-cli.ts +437 -0
  489. package/src/cli/claude-trace-cli.ts +28 -50
  490. package/src/cli/completion-gen.ts +28 -28
  491. package/src/cli/dry-balance-cli.ts +56 -23
  492. package/src/cli/gallery-cli.ts +231 -0
  493. package/src/cli/gallery-fixtures/agentic.ts +407 -0
  494. package/src/cli/gallery-fixtures/codeintel.ts +187 -0
  495. package/src/cli/gallery-fixtures/edit.ts +194 -0
  496. package/src/cli/gallery-fixtures/fs.ts +220 -0
  497. package/src/cli/gallery-fixtures/index.ts +40 -0
  498. package/src/cli/gallery-fixtures/interaction.ts +49 -0
  499. package/src/cli/gallery-fixtures/memory.ts +81 -0
  500. package/src/cli/gallery-fixtures/misc.ts +250 -0
  501. package/src/cli/gallery-fixtures/search.ts +213 -0
  502. package/src/cli/gallery-fixtures/shell.ts +167 -0
  503. package/src/cli/gallery-fixtures/types.ts +57 -0
  504. package/src/cli/gallery-fixtures/web.ts +158 -0
  505. package/src/cli/gallery-screenshot.ts +279 -0
  506. package/src/cli/gateway-cli.ts +32 -2
  507. package/src/cli/grievances-cli.ts +1 -1
  508. package/src/cli/list-models.ts +16 -174
  509. package/src/cli/models-cli.ts +429 -0
  510. package/src/cli/session-picker.ts +2 -1
  511. package/src/cli/setup-cli.ts +148 -47
  512. package/src/cli/setup-model-picker.ts +43 -0
  513. package/src/cli/startup-cwd.ts +68 -0
  514. package/src/cli/update-cli.ts +144 -272
  515. package/src/cli/usage-cli.ts +774 -0
  516. package/src/cli-commands.ts +36 -0
  517. package/src/cli.ts +141 -32
  518. package/src/collab/crypto.ts +63 -0
  519. package/src/collab/guest.ts +451 -0
  520. package/src/collab/host.ts +565 -0
  521. package/src/collab/protocol.ts +241 -0
  522. package/src/collab/relay-client.ts +216 -0
  523. package/src/commands/bench.ts +42 -0
  524. package/src/commands/complete.ts +1 -1
  525. package/src/commands/gallery.ts +52 -0
  526. package/src/commands/gateway.ts +4 -0
  527. package/src/commands/install.ts +1 -1
  528. package/src/commands/join.ts +39 -0
  529. package/src/commands/launch.ts +8 -4
  530. package/src/commands/models.ts +61 -0
  531. package/src/commands/read.ts +6 -3
  532. package/src/commands/say.ts +102 -0
  533. package/src/commands/setup.ts +1 -1
  534. package/src/commands/token.ts +89 -0
  535. package/src/commands/usage.ts +43 -0
  536. package/src/commit/agentic/agent.ts +2 -1
  537. package/src/commit/agentic/tools/analyze-file.ts +42 -20
  538. package/src/commit/agentic/tools/git-file-diff.ts +1 -1
  539. package/src/commit/agentic/tools/git-hunk.ts +1 -1
  540. package/src/commit/agentic/tools/git-overview.ts +1 -1
  541. package/src/commit/agentic/tools/propose-changelog.ts +1 -1
  542. package/src/commit/agentic/tools/propose-commit.ts +1 -1
  543. package/src/commit/agentic/tools/recent-commits.ts +1 -1
  544. package/src/commit/agentic/tools/schemas.ts +1 -1
  545. package/src/commit/agentic/tools/split-commit.ts +9 -2
  546. package/src/commit/analysis/conventional.ts +2 -2
  547. package/src/commit/analysis/summary.ts +3 -3
  548. package/src/commit/changelog/generate.ts +3 -3
  549. package/src/commit/changelog/index.ts +2 -2
  550. package/src/commit/map-reduce/index.ts +3 -3
  551. package/src/commit/map-reduce/map-phase.ts +2 -2
  552. package/src/commit/map-reduce/reduce-phase.ts +2 -2
  553. package/src/commit/model-selection.ts +35 -12
  554. package/src/commit/pipeline.ts +4 -4
  555. package/src/commit/shared-llm.ts +1 -1
  556. package/src/config/api-key-resolver.ts +67 -0
  557. package/src/config/append-only-context-mode.ts +6 -12
  558. package/src/config/keybindings.ts +9 -4
  559. package/src/config/mcp-schema.json +4 -0
  560. package/src/config/model-discovery.ts +574 -0
  561. package/src/config/model-equivalence.ts +5 -4
  562. package/src/config/model-registry.ts +659 -1093
  563. package/src/config/model-resolver.ts +374 -174
  564. package/src/config/model-roles.ts +88 -0
  565. package/src/config/models-config-schema.ts +61 -9
  566. package/src/config/models-config.ts +130 -0
  567. package/src/config/settings-schema.ts +1445 -382
  568. package/src/config/settings.ts +261 -69
  569. package/src/dap/client.ts +138 -53
  570. package/src/dap/config.ts +41 -2
  571. package/src/dap/defaults.json +1 -0
  572. package/src/dap/session.ts +263 -161
  573. package/src/dap/types.ts +10 -0
  574. package/src/debug/index.ts +50 -60
  575. package/src/debug/log-viewer.ts +1 -1
  576. package/src/debug/protocol-probe.ts +1 -1
  577. package/src/debug/raw-sse-buffer.ts +7 -4
  578. package/src/debug/raw-sse.ts +1 -1
  579. package/src/debug/report-bundle.ts +9 -0
  580. package/src/debug/terminal-info.ts +0 -3
  581. package/src/discovery/agents-md.ts +25 -21
  582. package/src/discovery/agents.ts +9 -15
  583. package/src/discovery/at-imports.ts +273 -0
  584. package/src/discovery/builtin-rules/index.ts +4 -0
  585. package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
  586. package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
  587. package/src/discovery/builtin.ts +45 -23
  588. package/src/discovery/claude-plugins.ts +44 -5
  589. package/src/discovery/helpers.ts +50 -9
  590. package/src/discovery/prometheus-extension-roots.ts +10 -10
  591. package/src/discovery/prometheus-plugins.ts +10 -10
  592. package/src/edit/diff.ts +191 -4
  593. package/src/edit/file-snapshot-store.ts +34 -1
  594. package/src/edit/hashline/block-resolver.ts +20 -1
  595. package/src/edit/hashline/diff.ts +123 -2
  596. package/src/edit/hashline/execute.ts +60 -4
  597. package/src/edit/hashline/filesystem.ts +2 -1
  598. package/src/edit/hashline/noop-loop-guard.ts +99 -0
  599. package/src/edit/hashline/params.ts +1 -1
  600. package/src/edit/index.ts +47 -18
  601. package/src/edit/modes/apply-patch.ts +1 -1
  602. package/src/edit/modes/patch.ts +59 -3
  603. package/src/edit/modes/replace.ts +58 -24
  604. package/src/edit/notebook.ts +22 -2
  605. package/src/edit/renderer.ts +315 -151
  606. package/src/eval/__tests__/agent-bridge.test.ts +105 -39
  607. package/src/eval/__tests__/budget-bridge.test.ts +1 -1
  608. package/src/eval/__tests__/completion-bridge.test.ts +412 -0
  609. package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
  610. package/src/eval/__tests__/js-context-manager.test.ts +241 -0
  611. package/src/eval/__tests__/llm-bridge.test.ts +6 -4
  612. package/src/eval/__tests__/shared-executors.test.ts +34 -92
  613. package/src/eval/agent-bridge.ts +39 -23
  614. package/src/eval/backend.ts +15 -2
  615. package/src/eval/bridge-timeout.ts +1 -1
  616. package/src/eval/completion-bridge.ts +203 -0
  617. package/src/eval/idle-timeout.ts +3 -10
  618. package/src/eval/js/context-manager.ts +108 -31
  619. package/src/eval/js/executor.ts +9 -2
  620. package/src/eval/js/index.ts +7 -3
  621. package/src/eval/js/shared/helpers.ts +59 -13
  622. package/src/eval/js/shared/local-module-loader.ts +2 -2
  623. package/src/eval/js/shared/prelude.txt +167 -30
  624. package/src/eval/js/shared/rewrite-imports.ts +58 -34
  625. package/src/eval/js/shared/runtime.ts +24 -16
  626. package/src/eval/js/tool-bridge.ts +4 -0
  627. package/src/eval/js/worker-core.ts +1 -0
  628. package/src/eval/js/worker-entry.ts +6 -0
  629. package/src/eval/js/worker-protocol.ts +6 -0
  630. package/src/eval/llm-bridge.ts +2 -1
  631. package/src/eval/py/__tests__/prelude.test.ts +19 -0
  632. package/src/eval/py/executor.ts +70 -26
  633. package/src/eval/py/index.ts +13 -4
  634. package/src/eval/py/kernel.ts +48 -9
  635. package/src/eval/py/prelude.py +73 -24
  636. package/src/eval/py/runner.py +133 -28
  637. package/src/eval/py/runtime.ts +38 -1
  638. package/src/exa/index.ts +1 -26
  639. package/src/exa/mcp-client.ts +10 -10
  640. package/src/exa/types.ts +0 -97
  641. package/src/exec/bash-executor.ts +104 -7
  642. package/src/export/custom-share.ts +1 -1
  643. package/src/export/html/index.ts +119 -17
  644. package/src/export/html/share-loader.js +102 -0
  645. package/src/export/html/template-js.ts +6 -0
  646. package/src/export/html/template.css +745 -459
  647. package/src/export/html/template.css.d.ts +2 -0
  648. package/src/export/html/template.html +6 -3
  649. package/src/export/html/template.js +277 -891
  650. package/src/export/html/tool-views.generated.d.ts +2 -0
  651. package/src/export/html/tool-views.generated.js +38 -0
  652. package/src/export/share.ts +269 -0
  653. package/src/export/ttsr.ts +122 -1
  654. package/src/extensibility/custom-commands/loader.ts +7 -4
  655. package/src/extensibility/custom-commands/types.ts +9 -4
  656. package/src/extensibility/custom-tools/loader.ts +51 -23
  657. package/src/extensibility/custom-tools/types.ts +16 -8
  658. package/src/extensibility/extensions/get-commands-handler.ts +2 -1
  659. package/src/extensibility/extensions/index.ts +1 -0
  660. package/src/extensibility/extensions/loader.ts +70 -20
  661. package/src/extensibility/extensions/model-api.ts +41 -0
  662. package/src/extensibility/extensions/runner.ts +12 -2
  663. package/src/extensibility/extensions/types.ts +83 -11
  664. package/src/extensibility/extensions/wrapper.ts +41 -5
  665. package/src/extensibility/hooks/index.ts +2 -1
  666. package/src/extensibility/hooks/loader.ts +6 -3
  667. package/src/extensibility/hooks/types.ts +11 -5
  668. package/src/extensibility/{legacy-pi-ai-shim.ts → legacy-package-ai-shim.ts} +2 -2
  669. package/src/extensibility/plugins/doctor.ts +1 -2
  670. package/src/extensibility/plugins/installer.ts +2 -2
  671. package/src/extensibility/plugins/{legacy-pi-compat.ts → legacy-package-compat.ts} +165 -77
  672. package/src/extensibility/plugins/loader.ts +34 -23
  673. package/src/extensibility/plugins/manager.ts +226 -95
  674. package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
  675. package/src/extensibility/plugins/types.ts +3 -3
  676. package/src/extensibility/shared-events.ts +3 -3
  677. package/src/extensibility/skills.ts +113 -9
  678. package/src/extensibility/slash-commands.ts +1 -97
  679. package/src/gateway/adapters/telegram/access.ts +39 -4
  680. package/src/gateway/adapters/telegram/normalize.ts +16 -1
  681. package/src/gateway/adapters/telegram/setup-api.ts +7 -1
  682. package/src/gateway/adapters/telegram/webhook.ts +26 -5
  683. package/src/gateway/context.ts +9 -1
  684. package/src/gateway/types.ts +1 -1
  685. package/src/goals/guided-setup.ts +133 -0
  686. package/src/goals/state.ts +1 -1
  687. package/src/goals/tools/goal-tool.ts +38 -28
  688. package/src/hindsight/bank.ts +17 -2
  689. package/src/hindsight/client.ts +27 -2
  690. package/src/hindsight/mental-models.ts +59 -12
  691. package/src/hindsight/state.ts +12 -3
  692. package/src/hindsight/transcript.ts +1 -1
  693. package/src/index.ts +5 -0
  694. package/src/internal-urls/artifact-protocol.ts +11 -2
  695. package/src/internal-urls/docs-index.generated.ts +11 -9
  696. package/src/internal-urls/history-protocol.ts +113 -0
  697. package/src/internal-urls/index.ts +1 -0
  698. package/src/internal-urls/issue-pr-protocol.ts +22 -9
  699. package/src/internal-urls/local-protocol.ts +42 -7
  700. package/src/internal-urls/memory-protocol.ts +4 -31
  701. package/src/internal-urls/router.ts +3 -1
  702. package/src/internal-urls/types.ts +1 -1
  703. package/src/irc/bus.ts +303 -0
  704. package/src/lib/xai-http.ts +3 -3
  705. package/src/lsp/client.ts +245 -104
  706. package/src/lsp/clients/biome-client.ts +101 -39
  707. package/src/lsp/clients/lsp-linter-client.ts +2 -10
  708. package/src/lsp/config.ts +15 -5
  709. package/src/lsp/defaults.json +6 -0
  710. package/src/lsp/edits.ts +143 -95
  711. package/src/lsp/format-options.ts +119 -0
  712. package/src/lsp/index.ts +233 -93
  713. package/src/lsp/render.ts +11 -35
  714. package/src/lsp/types.ts +13 -1
  715. package/src/lsp/utils.ts +31 -12
  716. package/src/main.ts +396 -216
  717. package/src/mcp/config-writer.ts +7 -3
  718. package/src/mcp/json-rpc.ts +35 -5
  719. package/src/mcp/manager.ts +31 -16
  720. package/src/mcp/oauth-discovery.ts +34 -4
  721. package/src/mcp/oauth-flow.ts +61 -8
  722. package/src/mcp/render.ts +7 -1
  723. package/src/mcp/startup-events.ts +21 -0
  724. package/src/mcp/tool-bridge.ts +2 -0
  725. package/src/mcp/transports/stdio.ts +224 -4
  726. package/src/mcp/types.ts +2 -0
  727. package/src/memories/index.ts +174 -1128
  728. package/src/memories/storage.ts +2 -41
  729. package/src/memory-backend/index.ts +14 -1
  730. package/src/memory-backend/local-backend.ts +18 -3
  731. package/src/memory-backend/off-backend.ts +9 -0
  732. package/src/memory-backend/resolve.ts +4 -6
  733. package/src/memory-backend/runtime.ts +66 -0
  734. package/src/memory-backend/types.ts +82 -2
  735. package/src/mnemopi/backend.ts +220 -28
  736. package/src/mnemopi/config.ts +138 -33
  737. package/src/mnemopi/state.ts +91 -11
  738. package/src/modes/acp/acp-agent.ts +149 -142
  739. package/src/modes/acp/acp-event-mapper.ts +5 -1
  740. package/src/modes/components/agent-dashboard.ts +17 -11
  741. package/src/modes/components/agent-hub.ts +1346 -0
  742. package/src/modes/components/assistant-message.ts +190 -80
  743. package/src/modes/components/bash-execution.ts +1 -1
  744. package/src/modes/components/btw-panel.ts +5 -1
  745. package/src/modes/components/chat-block.ts +111 -0
  746. package/src/modes/components/collab-prompt-message.ts +30 -0
  747. package/src/modes/components/compaction-summary-message.ts +168 -33
  748. package/src/modes/components/copy-selector.ts +2 -45
  749. package/src/modes/components/custom-editor.test.ts +96 -0
  750. package/src/modes/components/custom-editor.ts +405 -118
  751. package/src/modes/components/custom-message.ts +1 -3
  752. package/src/modes/components/diff.ts +13 -2
  753. package/src/modes/components/dynamic-border.ts +12 -3
  754. package/src/modes/components/execution-shared.ts +1 -2
  755. package/src/modes/components/extensions/extension-dashboard.ts +8 -5
  756. package/src/modes/components/extensions/extension-list.ts +1 -1
  757. package/src/modes/components/extensions/inspector-panel.ts +7 -3
  758. package/src/modes/components/extensions/state-manager.ts +36 -41
  759. package/src/modes/components/footer.ts +4 -2
  760. package/src/modes/components/history-search.ts +1 -1
  761. package/src/modes/components/hook-editor.ts +8 -0
  762. package/src/modes/components/hook-input.ts +8 -0
  763. package/src/modes/components/hook-message.ts +1 -3
  764. package/src/modes/components/hook-selector.ts +6 -7
  765. package/src/modes/components/index.ts +1 -0
  766. package/src/modes/components/late-diagnostics-message.ts +60 -0
  767. package/src/modes/components/login-dialog.ts +1 -1
  768. package/src/modes/components/logout-account-selector.ts +130 -0
  769. package/src/modes/components/mcp-add-wizard.ts +14 -1
  770. package/src/modes/components/model-selector.ts +177 -75
  771. package/src/modes/components/oauth-selector.ts +102 -16
  772. package/src/modes/components/overlay-box.ts +108 -0
  773. package/src/modes/components/plan-review-overlay.ts +845 -0
  774. package/src/modes/components/plan-toc.ts +138 -0
  775. package/src/modes/components/plugin-settings.ts +22 -5
  776. package/src/modes/components/read-tool-group.ts +442 -39
  777. package/src/modes/components/reset-usage-selector.ts +161 -0
  778. package/src/modes/components/segment-track.ts +44 -7
  779. package/src/modes/components/session-selector.ts +97 -37
  780. package/src/modes/components/settings-defs.ts +28 -6
  781. package/src/modes/components/settings-selector.ts +541 -93
  782. package/src/modes/components/skill-message.ts +0 -1
  783. package/src/modes/components/snapcompact-shape-preview-doc.md +11 -0
  784. package/src/modes/components/snapcompact-shape-preview.ts +193 -0
  785. package/src/modes/components/{status-line.ts → status-line/component.ts} +205 -168
  786. package/src/modes/components/status-line/index.ts +1 -0
  787. package/src/modes/components/status-line/presets.ts +3 -3
  788. package/src/modes/components/status-line/segments.ts +26 -7
  789. package/src/modes/components/status-line/types.ts +40 -9
  790. package/src/modes/components/tiny-title-download-progress.ts +1 -1
  791. package/src/modes/components/tips.txt +7 -3
  792. package/src/modes/components/todo-reminder.ts +0 -2
  793. package/src/modes/components/tool-execution.ts +236 -103
  794. package/src/modes/components/transcript-container.ts +724 -99
  795. package/src/modes/components/tree-selector.ts +19 -4
  796. package/src/modes/components/ttsr-notification.ts +72 -30
  797. package/src/modes/components/usage-row.ts +18 -0
  798. package/src/modes/components/user-message-selector.ts +1 -1
  799. package/src/modes/components/user-message.ts +28 -12
  800. package/src/modes/components/visual-truncate.ts +1 -1
  801. package/src/modes/components/welcome.ts +80 -22
  802. package/src/modes/controllers/command-controller-shared.ts +7 -6
  803. package/src/modes/controllers/command-controller.ts +210 -180
  804. package/src/modes/controllers/event-controller.ts +352 -142
  805. package/src/modes/controllers/extension-ui-controller.ts +167 -208
  806. package/src/modes/controllers/input-controller.ts +778 -162
  807. package/src/modes/controllers/mcp-command-controller.ts +232 -80
  808. package/src/modes/controllers/selector-controller.ts +284 -145
  809. package/src/modes/controllers/session-focus-controller.ts +112 -0
  810. package/src/modes/controllers/ssh-command-controller.ts +2 -2
  811. package/src/modes/controllers/streaming-reveal.ts +295 -0
  812. package/src/modes/controllers/tan-command-controller.ts +173 -0
  813. package/src/modes/controllers/tool-args-reveal.ts +174 -0
  814. package/src/modes/gradient-highlight.ts +21 -9
  815. package/src/modes/image-references.ts +33 -7
  816. package/src/modes/index.ts +8 -25
  817. package/src/modes/interactive-mode.ts +840 -186
  818. package/src/modes/magic-keywords.ts +28 -6
  819. package/src/modes/markdown-prose.ts +1 -1
  820. package/src/modes/oauth-manual-input.ts +30 -3
  821. package/src/modes/rpc/rpc-client.ts +186 -3
  822. package/src/modes/rpc/rpc-mode.ts +318 -24
  823. package/src/modes/rpc/rpc-subagents.ts +265 -0
  824. package/src/modes/rpc/rpc-types.ts +111 -2
  825. package/src/modes/runtime-init.ts +28 -3
  826. package/src/modes/session-observer-registry.ts +72 -3
  827. package/src/modes/setup-version.ts +11 -0
  828. package/src/modes/setup-wizard/index.ts +16 -4
  829. package/src/modes/setup-wizard/lazy.ts +16 -0
  830. package/src/modes/setup-wizard/scenes/glyph.ts +25 -7
  831. package/src/modes/setup-wizard/scenes/providers.ts +45 -12
  832. package/src/modes/setup-wizard/scenes/sign-in.ts +14 -13
  833. package/src/modes/setup-wizard/scenes/splash.ts +1 -1
  834. package/src/modes/setup-wizard/scenes/telegram.ts +77 -22
  835. package/src/modes/setup-wizard/scenes/theme.ts +29 -2
  836. package/src/modes/setup-wizard/scenes/types.ts +11 -2
  837. package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
  838. package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
  839. package/src/modes/shared.ts +2 -0
  840. package/src/modes/theme/defaults/dark-poimandres.json +1 -1
  841. package/src/modes/theme/defaults/light-poimandres.json +1 -1
  842. package/src/modes/theme/shimmer.ts +20 -9
  843. package/src/modes/theme/theme-schema.json +1 -1
  844. package/src/modes/theme/theme.ts +342 -82
  845. package/src/modes/types.ts +60 -18
  846. package/src/modes/utils/context-usage.ts +88 -8
  847. package/src/modes/utils/copy-targets.ts +133 -27
  848. package/src/modes/utils/hotkeys-markdown.ts +3 -2
  849. package/src/modes/utils/ui-helpers.ts +191 -110
  850. package/src/modes/workflow.ts +10 -10
  851. package/src/plan-mode/approved-plan.ts +66 -43
  852. package/src/plan-mode/plan-protection.ts +4 -4
  853. package/src/priority.json +5 -1
  854. package/src/prompts/agents/designer.md +1 -1
  855. package/src/prompts/agents/explore.md +3 -3
  856. package/src/prompts/agents/librarian.md +2 -3
  857. package/src/prompts/agents/oracle.md +2 -2
  858. package/src/prompts/agents/plan.md +6 -6
  859. package/src/prompts/agents/reviewer.md +1 -1
  860. package/src/prompts/agents/task.md +6 -5
  861. package/src/prompts/bench.md +12 -0
  862. package/src/prompts/ci-green-request.md +5 -7
  863. package/src/prompts/goals/goal-budget-limit.md +2 -2
  864. package/src/prompts/goals/goal-continuation.md +4 -4
  865. package/src/prompts/goals/goal-mode-active.md +1 -1
  866. package/src/prompts/goals/guided-goal-interview.md +8 -0
  867. package/src/prompts/goals/guided-goal-system.md +12 -0
  868. package/src/prompts/memories/consolidation.md +2 -7
  869. package/src/prompts/memories/consolidation_system.md +4 -0
  870. package/src/prompts/memories/identity_review.md +2 -2
  871. package/src/prompts/memories/read-path.md +11 -10
  872. package/src/prompts/memories/stage_one_system.md +2 -2
  873. package/src/prompts/review-custom-request.md +1 -1
  874. package/src/prompts/system/agent-creation-architect.md +2 -2
  875. package/src/prompts/system/auto-continue.md +1 -1
  876. package/src/prompts/system/autolearn-guidance-learn.md +1 -0
  877. package/src/prompts/system/autolearn-guidance.md +7 -0
  878. package/src/prompts/system/autolearn-nudge.md +3 -0
  879. package/src/prompts/system/background-tan-dispatch.md +8 -0
  880. package/src/prompts/system/btw-user.md +2 -2
  881. package/src/prompts/system/commit-message-system.md +13 -1
  882. package/src/prompts/system/custom-system-prompt.md +1 -1
  883. package/src/prompts/system/eager-task.md +7 -0
  884. package/src/prompts/system/eager-todo.md +11 -6
  885. package/src/prompts/system/empty-stop-retry.md +4 -6
  886. package/src/prompts/system/irc-autoreply.md +6 -0
  887. package/src/prompts/system/irc-incoming.md +3 -4
  888. package/src/prompts/system/manual-continue.md +7 -0
  889. package/src/prompts/system/omfg-user.md +3 -4
  890. package/src/prompts/system/orchestrate-notice.md +10 -10
  891. package/src/prompts/system/personalities/default.md +26 -0
  892. package/src/prompts/system/personalities/friendly.md +17 -0
  893. package/src/prompts/system/personalities/pragmatic.md +15 -0
  894. package/src/prompts/system/plan-mode-active.md +70 -77
  895. package/src/prompts/system/plan-mode-approved.md +1 -1
  896. package/src/prompts/system/plan-mode-subagent.md +4 -5
  897. package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
  898. package/src/prompts/system/project-prompt.md +2 -2
  899. package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
  900. package/src/prompts/system/snapcompact-context-stub.md +1 -0
  901. package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
  902. package/src/prompts/system/snapcompact-system-stub.md +1 -0
  903. package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
  904. package/src/prompts/system/subagent-system-prompt.md +7 -8
  905. package/src/prompts/system/system-prompt.md +28 -57
  906. package/src/prompts/system/tiny-title-system.md +1 -1
  907. package/src/prompts/system/title-marker-instruction.md +1 -0
  908. package/src/prompts/system/title-system-marker.md +16 -0
  909. package/src/prompts/system/title-system.md +16 -3
  910. package/src/prompts/system/ttsr-tool-reminder.md +1 -1
  911. package/src/prompts/system/workflow-notice.md +4 -4
  912. package/src/prompts/tools/ast-edit.md +1 -1
  913. package/src/prompts/tools/ast-grep.md +2 -2
  914. package/src/prompts/tools/bash.md +16 -8
  915. package/src/prompts/tools/browser.md +33 -43
  916. package/src/prompts/tools/debug.md +1 -1
  917. package/src/prompts/tools/eval.md +31 -51
  918. package/src/prompts/tools/find.md +0 -1
  919. package/src/prompts/tools/github.md +8 -7
  920. package/src/prompts/tools/goal.md +1 -1
  921. package/src/prompts/tools/image-gen.md +1 -1
  922. package/src/prompts/tools/inspect-image-system.md +1 -1
  923. package/src/prompts/tools/irc.md +39 -31
  924. package/src/prompts/tools/job.md +2 -1
  925. package/src/prompts/tools/learn.md +7 -0
  926. package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
  927. package/src/prompts/tools/lsp.md +2 -2
  928. package/src/prompts/tools/manage-skill.md +9 -0
  929. package/src/prompts/tools/memory-edit.md +1 -1
  930. package/src/prompts/tools/patch.md +2 -2
  931. package/src/prompts/tools/read.md +31 -39
  932. package/src/prompts/tools/recall.md +1 -1
  933. package/src/prompts/tools/reflect.md +1 -1
  934. package/src/prompts/tools/render-mermaid.md +2 -2
  935. package/src/prompts/tools/replace.md +4 -10
  936. package/src/prompts/tools/rewind.md +2 -2
  937. package/src/prompts/tools/search-tool-bm25.md +1 -9
  938. package/src/prompts/tools/search.md +0 -1
  939. package/src/prompts/tools/ssh.md +0 -4
  940. package/src/prompts/tools/task-summary.md +5 -16
  941. package/src/prompts/tools/task.md +47 -31
  942. package/src/prompts/tools/todo.md +6 -3
  943. package/src/registry/agent-lifecycle.ts +218 -0
  944. package/src/registry/agent-registry.ts +46 -5
  945. package/src/sdk.ts +692 -219
  946. package/src/secrets/index.ts +8 -1
  947. package/src/secrets/obfuscator.ts +40 -19
  948. package/src/session/agent-session.ts +1577 -806
  949. package/src/session/agent-storage.ts +18 -9
  950. package/src/session/auth-broker-config.ts +30 -1
  951. package/src/session/auth-storage.ts +6 -0
  952. package/src/session/codex-auto-reset.ts +202 -0
  953. package/src/session/history-storage.ts +3 -2
  954. package/src/session/indexed-session-storage.ts +7 -10
  955. package/src/session/messages.ts +59 -95
  956. package/src/session/session-context.ts +352 -0
  957. package/src/session/session-dump-format.ts +12 -3
  958. package/src/session/session-entries.ts +194 -0
  959. package/src/session/session-history-format.ts +246 -0
  960. package/src/session/session-listing.ts +588 -0
  961. package/src/session/session-loader.ts +106 -0
  962. package/src/session/session-manager.ts +1003 -2920
  963. package/src/session/session-migrations.ts +78 -0
  964. package/src/session/session-paths.ts +193 -0
  965. package/src/session/session-persistence.ts +131 -0
  966. package/src/session/session-storage.ts +91 -30
  967. package/src/session/snapcompact-inline.ts +542 -0
  968. package/src/session/snapcompact-savings-journal.ts +113 -0
  969. package/src/session/streaming-output.ts +248 -11
  970. package/src/session/tool-choice-queue.ts +23 -11
  971. package/src/session/yield-queue.ts +20 -2
  972. package/src/slash-commands/acp-builtins.ts +25 -1
  973. package/src/slash-commands/available-commands.ts +105 -0
  974. package/src/slash-commands/builtin-registry.ts +575 -49
  975. package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
  976. package/src/slash-commands/helpers/context-report.ts +28 -1
  977. package/src/slash-commands/helpers/logout.ts +88 -0
  978. package/src/slash-commands/helpers/reset-usage.ts +66 -0
  979. package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
  980. package/src/slash-commands/helpers/usage-report.ts +38 -3
  981. package/src/slash-commands/types.ts +5 -9
  982. package/src/ssh/connection-manager.ts +27 -0
  983. package/src/ssh/ssh-executor.ts +60 -4
  984. package/src/stt/asr-client.ts +520 -0
  985. package/src/stt/asr-protocol.ts +65 -0
  986. package/src/stt/asr-worker.ts +790 -0
  987. package/src/stt/downloader.ts +107 -47
  988. package/src/stt/endpointer.ts +259 -0
  989. package/src/stt/index.ts +5 -1
  990. package/src/stt/models.ts +150 -0
  991. package/src/stt/recorder.ts +254 -67
  992. package/src/stt/stt-controller.ts +201 -22
  993. package/src/stt/transcriber.ts +37 -68
  994. package/src/stt/wav.ts +173 -0
  995. package/src/system-prompt.ts +52 -10
  996. package/src/task/agents.ts +3 -4
  997. package/src/task/commands.ts +3 -2
  998. package/src/task/discovery.ts +17 -24
  999. package/src/task/executor.ts +1054 -529
  1000. package/src/task/index.ts +862 -757
  1001. package/src/task/output-manager.ts +0 -11
  1002. package/src/task/parallel.ts +3 -3
  1003. package/src/task/prometheus-command.ts +2 -2
  1004. package/src/task/render.ts +529 -182
  1005. package/src/task/repair-args.ts +21 -9
  1006. package/src/task/types.ts +144 -66
  1007. package/src/task/worktree.ts +64 -56
  1008. package/src/telemetry-export.ts +27 -9
  1009. package/src/thinking.ts +9 -7
  1010. package/src/tiny/models.ts +2 -2
  1011. package/src/tiny/text.ts +5 -1
  1012. package/src/tiny/title-client.ts +72 -20
  1013. package/src/tiny/title-protocol.ts +1 -1
  1014. package/src/tiny/worker.ts +23 -99
  1015. package/src/tool-discovery/tool-index.ts +2 -0
  1016. package/src/tools/archive-reader.ts +94 -2
  1017. package/src/tools/ask.ts +234 -177
  1018. package/src/tools/ast-edit.ts +136 -80
  1019. package/src/tools/ast-grep.ts +41 -45
  1020. package/src/tools/auto-generated-guard.ts +20 -3
  1021. package/src/tools/bash-interactive.ts +28 -8
  1022. package/src/tools/bash.ts +198 -35
  1023. package/src/tools/browser/attach.ts +26 -7
  1024. package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
  1025. package/src/tools/browser/cmux/rpc.ts +156 -0
  1026. package/src/tools/browser/cmux/socket-client.ts +309 -0
  1027. package/src/tools/browser/launch.ts +11 -2
  1028. package/src/tools/browser/readable.ts +19 -2
  1029. package/src/tools/browser/registry.ts +52 -5
  1030. package/src/tools/browser/render.ts +13 -5
  1031. package/src/tools/browser/tab-protocol.ts +2 -0
  1032. package/src/tools/browser/tab-supervisor.ts +256 -34
  1033. package/src/tools/browser/tab-worker.ts +259 -91
  1034. package/src/tools/browser.ts +44 -2
  1035. package/src/tools/checkpoint.ts +1 -1
  1036. package/src/tools/conflict-detect.ts +50 -4
  1037. package/src/tools/debug.ts +27 -12
  1038. package/src/tools/eval-render.ts +32 -35
  1039. package/src/tools/eval.ts +26 -12
  1040. package/src/tools/fetch.ts +450 -99
  1041. package/src/tools/find.ts +182 -142
  1042. package/src/tools/gh-cache-invalidation.ts +255 -0
  1043. package/src/tools/gh-renderer.ts +104 -51
  1044. package/src/tools/gh.ts +232 -37
  1045. package/src/tools/github-cache.ts +97 -7
  1046. package/src/tools/grouped-file-output.ts +159 -52
  1047. package/src/tools/image-gen.ts +237 -132
  1048. package/src/tools/index.ts +147 -26
  1049. package/src/tools/inspect-image-renderer.ts +74 -45
  1050. package/src/tools/inspect-image.ts +12 -6
  1051. package/src/tools/irc.ts +626 -173
  1052. package/src/tools/job.ts +106 -29
  1053. package/src/tools/learn.ts +144 -0
  1054. package/src/tools/manage-skill.ts +104 -0
  1055. package/src/tools/memory-edit.ts +4 -4
  1056. package/src/tools/memory-recall.ts +7 -9
  1057. package/src/tools/memory-reflect.ts +5 -9
  1058. package/src/tools/memory-render.ts +23 -6
  1059. package/src/tools/memory-retain.ts +4 -4
  1060. package/src/tools/path-utils.ts +102 -48
  1061. package/src/tools/plan-mode-guard.ts +101 -40
  1062. package/src/tools/read.ts +475 -120
  1063. package/src/tools/render-mermaid.ts +1 -1
  1064. package/src/tools/render-utils.ts +132 -76
  1065. package/src/tools/renderers.ts +12 -1
  1066. package/src/tools/report-tool-issue.ts +14 -6
  1067. package/src/tools/resolve.ts +20 -3
  1068. package/src/tools/review.ts +2 -2
  1069. package/src/tools/search-tool-bm25.ts +37 -24
  1070. package/src/tools/search.ts +233 -115
  1071. package/src/tools/sqlite-reader.ts +26 -17
  1072. package/src/tools/ssh.ts +20 -14
  1073. package/src/tools/todo.ts +197 -191
  1074. package/src/tools/tool-result.ts +8 -0
  1075. package/src/tools/tool-timeouts.ts +1 -1
  1076. package/src/tools/tts.ts +205 -74
  1077. package/src/tools/write.ts +291 -155
  1078. package/src/tools/yield.ts +10 -1
  1079. package/src/tts/downloader.ts +64 -0
  1080. package/src/tts/index.ts +8 -0
  1081. package/src/tts/models.ts +137 -0
  1082. package/src/tts/player.ts +137 -0
  1083. package/src/tts/runtime.ts +21 -0
  1084. package/src/tts/streaming-player.ts +266 -0
  1085. package/src/tts/tts-client.ts +647 -0
  1086. package/src/tts/tts-protocol.ts +60 -0
  1087. package/src/tts/tts-worker.ts +505 -0
  1088. package/src/tts/vocalizer.ts +162 -0
  1089. package/src/tts/wav.ts +58 -0
  1090. package/src/tui/code-cell.ts +2 -7
  1091. package/src/tui/hyperlink.ts +40 -26
  1092. package/src/tui/output-block.ts +60 -108
  1093. package/src/tui/status-line.ts +5 -1
  1094. package/src/utils/block-context.ts +312 -0
  1095. package/src/utils/changelog.ts +27 -1
  1096. package/src/utils/clipboard.ts +91 -22
  1097. package/src/utils/commit-message-generator.ts +8 -3
  1098. package/src/utils/enhanced-paste.ts +230 -0
  1099. package/src/utils/file-mentions.ts +3 -1
  1100. package/src/utils/git.ts +315 -15
  1101. package/src/utils/image-loading.ts +65 -4
  1102. package/src/utils/session-color.ts +83 -9
  1103. package/src/utils/thinking-display.ts +37 -0
  1104. package/src/utils/title-generator.ts +73 -10
  1105. package/src/utils/tool-choice.ts +16 -0
  1106. package/src/utils/tools-manager.ts +19 -1
  1107. package/src/web/kagi.ts +28 -26
  1108. package/src/web/parallel.ts +7 -3
  1109. package/src/web/scrapers/arxiv.ts +1 -1
  1110. package/src/web/scrapers/github.ts +351 -3
  1111. package/src/web/scrapers/go-pkg.ts +1 -1
  1112. package/src/web/scrapers/iacr.ts +1 -1
  1113. package/src/web/scrapers/readthedocs.ts +1 -1
  1114. package/src/web/scrapers/twitter.ts +2 -1
  1115. package/src/web/scrapers/types.ts +87 -8
  1116. package/src/web/scrapers/wikipedia.ts +1 -1
  1117. package/src/web/scrapers/youtube.ts +9 -3
  1118. package/src/web/search/index.ts +15 -2
  1119. package/src/web/search/providers/anthropic.ts +62 -21
  1120. package/src/web/search/providers/base.ts +2 -1
  1121. package/src/web/search/providers/brave.ts +5 -2
  1122. package/src/web/search/providers/codex.ts +87 -51
  1123. package/src/web/search/providers/exa.ts +101 -10
  1124. package/src/web/search/providers/gemini.ts +49 -24
  1125. package/src/web/search/providers/jina.ts +15 -5
  1126. package/src/web/search/providers/kagi.ts +9 -2
  1127. package/src/web/search/providers/kimi.ts +45 -20
  1128. package/src/web/search/providers/parallel.ts +39 -24
  1129. package/src/web/search/providers/perplexity.ts +226 -63
  1130. package/src/web/search/providers/searxng.ts +19 -3
  1131. package/src/web/search/providers/synthetic.ts +16 -11
  1132. package/src/web/search/providers/tavily.ts +12 -9
  1133. package/src/web/search/providers/zai.ts +22 -9
  1134. package/src/web/search/render.ts +59 -64
  1135. package/src/web/search/types.ts +5 -1
  1136. package/dist/types/discovery/context-files.d.ts +0 -17
  1137. package/dist/types/exa/factory.d.ts +0 -13
  1138. package/dist/types/exa/render.d.ts +0 -19
  1139. package/dist/types/exa/researcher.d.ts +0 -9
  1140. package/dist/types/exa/search.d.ts +0 -9
  1141. package/dist/types/exa/websets.d.ts +0 -9
  1142. package/dist/types/export/html/template.generated.d.ts +0 -1
  1143. package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
  1144. package/dist/types/modes/components/status-line.d.ts +0 -77
  1145. package/dist/types/slash-commands/headless-plan.d.ts +0 -3
  1146. package/dist/types/stt/setup.d.ts +0 -18
  1147. package/scripts/generate-template.ts +0 -33
  1148. package/src/discovery/context-files.ts +0 -49
  1149. package/src/exa/factory.ts +0 -60
  1150. package/src/exa/render.ts +0 -244
  1151. package/src/exa/researcher.ts +0 -36
  1152. package/src/exa/search.ts +0 -47
  1153. package/src/exa/websets.ts +0 -248
  1154. package/src/export/html/template.generated.ts +0 -2
  1155. package/src/modes/components/session-observer-overlay.ts +0 -852
  1156. package/src/slash-commands/headless-plan.ts +0 -142
  1157. package/src/stt/setup.ts +0 -52
  1158. package/src/stt/transcribe.py +0 -70
  1159. /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
  1160. /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
@@ -1,9 +1,12 @@
1
1
  import * as fs from "node:fs/promises";
2
2
  import * as os from "node:os";
3
3
  import * as path from "node:path";
4
- import { getOAuthProviders } from "@prometheus-ai/ai/utils/oauth";
5
- import { Snowflake, setProjectDir } from "@prometheus-ai/utils";
6
- import { $ } from "bun";
4
+ import { getOAuthProviders } from "@prometheus-ai/ai/oauth";
5
+ import { setNextRequestDebugPath } from "@prometheus-ai/ai/utils/request-debug";
6
+ import type { AutocompleteItem } from "@prometheus-ai/tui";
7
+ import { APP_NAME, setProjectDir } from "@prometheus-ai/utils";
8
+ import { COLLAB_GUEST_ALLOWED_COMMANDS, CollabGuestLink } from "../collab/guest";
9
+ import { CollabHost } from "../collab/host";
7
10
  import type { SettingPath, SettingValue } from "../config/settings";
8
11
  import { settings } from "../config/settings";
9
12
  import {
@@ -11,6 +14,7 @@ import {
11
14
  resolveActiveProjectRegistryPath,
12
15
  resolveOrDefaultProjectRegistryPath,
13
16
  } from "../discovery/helpers.js";
17
+ import { shareSession } from "../export/share";
14
18
  import { PluginManager } from "../extensibility/plugins";
15
19
  import {
16
20
  getInstalledPluginsRegistryPath,
@@ -20,16 +24,20 @@ import {
20
24
  MarketplaceManager,
21
25
  } from "../extensibility/plugins/marketplace";
22
26
  import { resolveMemoryBackend } from "../memory-backend";
27
+ import { theme } from "../modes/theme/theme";
23
28
  import type { InteractiveModeContext } from "../modes/types";
29
+ import type { AgentSession, FreshSessionResult } from "../session/agent-session";
24
30
  import { formatShakeSummary, type ShakeMode } from "../session/shake-types";
31
+ import { urlHyperlinkAlways } from "../tui";
25
32
  import { getChangelogPath, parseChangelog } from "../utils/changelog";
26
- import { handleHeadlessPlanCommand } from "./headless-plan";
27
33
  import { buildContextReportText } from "./helpers/context-report";
28
34
  import { formatDuration } from "./helpers/format";
29
35
  import { createMarketplaceManager } from "./helpers/marketplace-manager";
30
36
  import { handleMcpAcp } from "./helpers/mcp";
31
37
  import { commandConsumed, errorMessage, parseSlashCommand, parseSubcommand, usage } from "./helpers/parse";
38
+ import { describeRedeemOutcome, type ResetUsageAccount, toResetUsageAccounts } from "./helpers/reset-usage";
32
39
  import { handleSshAcp } from "./helpers/ssh";
40
+ import { launchStatsDashboard, parseStatsDashboardArgs } from "./helpers/stats-dashboard";
33
41
  import { handleTodoAcp } from "./helpers/todo";
34
42
  import { buildUsageReportText } from "./helpers/usage-report";
35
43
  import { parseMarketplaceInstallArgs, parsePluginScopeArgs } from "./marketplace-install-parser";
@@ -39,6 +47,7 @@ import type {
39
47
  SlashCommandResult,
40
48
  SlashCommandRuntime,
41
49
  SlashCommandSpec,
50
+ SubcommandDef,
42
51
  TuiSlashCommandRuntime,
43
52
  } from "./types";
44
53
 
@@ -53,12 +62,143 @@ function refreshStatusLine(ctx: InteractiveModeContext): void {
53
62
  ctx.ui.requestRender();
54
63
  }
55
64
 
65
+ /** `/fast status` label: "off", "on", or scope-qualified "on (… only)". */
66
+ function formatFastModeStatus(session: AgentSession): string {
67
+ if (!session.isFastModeEnabled()) return "off";
68
+ switch (session.serviceTier) {
69
+ case "openai-only":
70
+ return "on (OpenAI only)";
71
+ case "claude-only":
72
+ return "on (Claude only)";
73
+ default:
74
+ return "on";
75
+ }
76
+ }
77
+
78
+ /** Scheme-less display form of a browser deep link: accent + underline, OSC-8 linked to the full URL. */
79
+ function collabWebLinkClickable(webLink: string): string {
80
+ const display = theme.fg("accent", `\x1b[4m${webLink.replace(/^https?:\/\//, "")}\x1b[24m`);
81
+ return urlHyperlinkAlways(webLink, display);
82
+ }
83
+
84
+ /** Join hint printed by /collab: compact terminal link + clickable browser deep link. */
85
+ function collabLinkHint(host: CollabHost, heading: string, view = false): string {
86
+ const bullet = theme.fg("accent", theme.format.bullet);
87
+ const link = view ? host.viewLink : host.link;
88
+ const webLink = view ? host.webViewLink : host.webLink;
89
+ return [
90
+ theme.fg("success", heading),
91
+ ` ${bullet} ${theme.fg("muted", view ? "Watch from another terminal:" : "Join from another terminal:")} ${APP_NAME} join "${link}"`,
92
+ ` ${bullet} ${theme.fg("muted", "or any web browser:")} ${collabWebLinkClickable(webLink)}`,
93
+ theme.fg(
94
+ "dim",
95
+ view
96
+ ? "Anyone with this link can watch the session but cannot prompt the agent."
97
+ : "Anyone with the link can read the session and prompt the agent. Read-only link: /collab view",
98
+ ),
99
+ ].join("\n");
100
+ }
101
+
102
+ function formatFreshSessionResult(result: FreshSessionResult): string {
103
+ const stateLabel = result.closedProviderSessions === 1 ? "provider state" : "provider states";
104
+ return `Fresh provider session started (${result.closedProviderSessions} ${stateLabel} pruned).`;
105
+ }
106
+
56
107
  const shutdownHandlerTui = (_command: ParsedSlashCommand, runtime: TuiSlashCommandRuntime): SlashCommandResult => {
57
108
  runtime.ctx.editor.setText("");
58
109
  void runtime.ctx.shutdown();
59
110
  return commandConsumed();
60
111
  };
61
112
 
113
+ async function handleUsageResetCommand(
114
+ arg: string,
115
+ session: AgentSession,
116
+ output: SlashCommandRuntime["output"],
117
+ ): Promise<void> {
118
+ let accounts: ResetUsageAccount[];
119
+ try {
120
+ accounts = toResetUsageAccounts(await session.listResetCredits());
121
+ } catch (error) {
122
+ await output(`Could not load saved resets: ${errorMessage(error)}`);
123
+ return;
124
+ }
125
+ if (accounts.length === 0) {
126
+ await output("No Codex accounts found. Use /login to add one.");
127
+ return;
128
+ }
129
+ const targetArg = arg.trim();
130
+ if (!targetArg) {
131
+ const lines = ["Saved Codex rate-limit resets:"];
132
+ for (const account of accounts) {
133
+ const detail = account.error ? `unavailable (${account.error})` : `${account.availableCount} available`;
134
+ lines.push(`- ${account.label}: ${detail}${account.active ? " (active)" : ""}`);
135
+ }
136
+ lines.push("", "Spend one with `/usage reset <account email>` or `/usage reset active`.");
137
+ await output(lines.join("\n"));
138
+ return;
139
+ }
140
+ const wanted = targetArg.toLowerCase();
141
+ const target =
142
+ wanted === "active"
143
+ ? accounts.find(account => account.active)
144
+ : accounts.find(
145
+ account =>
146
+ account.label.toLowerCase() === wanted ||
147
+ account.target.email?.toLowerCase() === wanted ||
148
+ account.target.accountId?.toLowerCase() === wanted,
149
+ );
150
+ if (!target) {
151
+ await output(`No Codex account matches "${targetArg}".`);
152
+ return;
153
+ }
154
+ if (target.availableCount <= 0) {
155
+ await output(`${target.label}: no saved resets to spend.`);
156
+ return;
157
+ }
158
+ const outcome = await session.redeemResetCredit(target.target);
159
+ await output(describeRedeemOutcome(outcome, target.label));
160
+ }
161
+
162
+ const DEBUG_DUMP_NEXT_REQUEST_USAGE = "Usage: /debug dump-next-request <path>";
163
+
164
+ function resolveDebugRequestDumpPath(target: string, cwd: string): string {
165
+ const expanded =
166
+ target === "~"
167
+ ? os.homedir()
168
+ : target.startsWith("~/") || target.startsWith("~\\")
169
+ ? path.join(os.homedir(), target.slice(2))
170
+ : target;
171
+ return path.resolve(cwd, expanded);
172
+ }
173
+
174
+ async function handleDebugSubcommand(
175
+ args: string,
176
+ cwd: string,
177
+ output: (text: string) => Promise<void> | void,
178
+ ): Promise<SlashCommandResult> {
179
+ const { verb, rest } = parseSubcommand(args);
180
+ switch (verb) {
181
+ case "":
182
+ await output(DEBUG_DUMP_NEXT_REQUEST_USAGE);
183
+ return commandConsumed();
184
+ case "dump-next-request":
185
+ case "dump-request":
186
+ case "next-request": {
187
+ if (!rest) {
188
+ await output(DEBUG_DUMP_NEXT_REQUEST_USAGE);
189
+ return commandConsumed();
190
+ }
191
+ const requestPath = resolveDebugRequestDumpPath(rest, cwd);
192
+ setNextRequestDebugPath(requestPath);
193
+ await output(`Next AI provider request will be dumped to ${requestPath}`);
194
+ return commandConsumed();
195
+ }
196
+ default:
197
+ await output(`Unknown /debug subcommand "${verb}". ${DEBUG_DUMP_NEXT_REQUEST_USAGE}`);
198
+ return commandConsumed();
199
+ }
200
+ }
201
+
62
202
  /** Parse the `/shake` subcommand into a {@link ShakeMode}; empty defaults to elide. */
63
203
  function parseShakeMode(args: string): ShakeMode | { error: string } {
64
204
  const verb = args.trim().toLowerCase();
@@ -76,13 +216,72 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
76
216
  runtime.ctx.editor.setText("");
77
217
  },
78
218
  },
219
+ {
220
+ name: "setup",
221
+ aliases: ["providers"],
222
+ description: "Open provider setup",
223
+ allowArgs: true,
224
+ subcommands: [{ name: "providers", description: "Configure sign-in and web search providers" }],
225
+ handleTui: async (command, runtime) => {
226
+ const args = command.args.trim().toLowerCase();
227
+ const opensProviders = args === "" || args === "providers";
228
+ if (opensProviders) {
229
+ await runtime.ctx.showProviderSetup();
230
+ } else {
231
+ runtime.ctx.showWarning(`Usage: /${command.name} [providers]`);
232
+ }
233
+ runtime.ctx.editor.setText("");
234
+ },
235
+ },
79
236
  {
80
237
  name: "plan",
81
238
  description: "Toggle plan mode (agent plans before executing)",
82
239
  inlineHint: "[prompt]",
83
240
  allowArgs: true,
84
- advertiseInAcp: false,
85
- handle: (command, runtime) => handleHeadlessPlanCommand(command.args, runtime),
241
+ handle: async (command, runtime) => {
242
+ const session = runtime.session;
243
+ const goalState = session.getGoalModeState?.();
244
+ if (goalState?.enabled) {
245
+ runtime.output("Exit goal mode first.");
246
+ return;
247
+ }
248
+ const current = session.getPlanModeState?.();
249
+ if (current?.enabled) {
250
+ session.setStandingResolveHandler?.(null);
251
+ session.setPlanModeState?.(undefined);
252
+ const activeTools = session.getActiveToolNames?.();
253
+ if (activeTools && session.setActiveToolsByName) {
254
+ await session.setActiveToolsByName(activeTools.filter(name => name !== "resolve"));
255
+ }
256
+ runtime.output("Plan mode disabled.");
257
+ return;
258
+ }
259
+ if (!runtime.settings.get("plan.enabled")) {
260
+ runtime.output("Plan mode is disabled. Enable it in settings (plan.enabled).");
261
+ return;
262
+ }
263
+
264
+ const planFilePath = session.getPlanReferencePath?.() ?? "local://PLAN.md";
265
+ const activeTools = session.getActiveToolNames?.() ?? [];
266
+ const hasResolveTool = session.getToolByName?.("resolve") !== undefined;
267
+ if (hasResolveTool && session.setActiveToolsByName) {
268
+ await session.setActiveToolsByName([...new Set([...activeTools, "resolve"])]);
269
+ }
270
+ session.setPlanModeState?.({
271
+ enabled: true,
272
+ planFilePath,
273
+ workflow: current?.workflow ?? "parallel",
274
+ reentry: current !== undefined,
275
+ });
276
+ session.setStandingResolveHandler?.(() => ({
277
+ content: [{ type: "text", text: "Plan submitted for review." }],
278
+ details: { sourceToolName: "plan_approval", label: "Plan ready for approval" },
279
+ }));
280
+ runtime.output(`Plan mode enabled. Plan file: ${planFilePath}`);
281
+ if (command.args) {
282
+ return { prompt: command.args };
283
+ }
284
+ },
86
285
  handleTui: async (command, runtime) => {
87
286
  const hadArgs = !!command.args;
88
287
  // Capture state BEFORE the call: when plan mode is already active,
@@ -97,6 +296,14 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
97
296
  runtime.ctx.editor.setText("");
98
297
  },
99
298
  },
299
+ {
300
+ name: "plan-review",
301
+ description: "Re-open the plan review for the latest plan (plan mode only)",
302
+ handleTui: async (_command, runtime) => {
303
+ await runtime.ctx.openPlanReview();
304
+ runtime.ctx.editor.setText("");
305
+ },
306
+ },
100
307
  {
101
308
  name: "goal",
102
309
  description: "Toggle goal mode (persistent autonomous objective for this session)",
@@ -121,6 +328,16 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
121
328
  runtime.ctx.editor.setText("");
122
329
  },
123
330
  },
331
+ {
332
+ name: "guided-goal",
333
+ description: "Interview and refine a goal before enabling goal mode",
334
+ inlineHint: "[rough objective]",
335
+ allowArgs: true,
336
+ handleTui: async (command, runtime) => {
337
+ await runtime.ctx.handleGuidedGoalCommand(command.args || undefined);
338
+ runtime.ctx.editor.setText("");
339
+ },
340
+ },
124
341
  {
125
342
  name: "loop",
126
343
  description:
@@ -209,7 +426,7 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
209
426
  return commandConsumed();
210
427
  }
211
428
  if (arg === "status") {
212
- await runtime.output(`Fast mode is ${runtime.session.isFastModeEnabled() ? "on" : "off"}.`);
429
+ await runtime.output(`Fast mode is ${formatFastModeStatus(runtime.session)}.`);
213
430
  return commandConsumed();
214
431
  }
215
432
  return usage("Usage: /fast [on|off|status]", runtime);
@@ -238,8 +455,7 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
238
455
  return;
239
456
  }
240
457
  if (arg === "status") {
241
- const enabled = runtime.ctx.session.isFastModeEnabled();
242
- runtime.ctx.showStatus(`Fast mode is ${enabled ? "on" : "off"}.`);
458
+ runtime.ctx.showStatus(`Fast mode is ${formatFastModeStatus(runtime.ctx.session)}.`);
243
459
  runtime.ctx.editor.setText("");
244
460
  return;
245
461
  }
@@ -290,31 +506,21 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
290
506
  },
291
507
  {
292
508
  name: "share",
293
- description: "Share session as a secret GitHub gist",
509
+ description: "Share session via an encrypted link (secret gist or share server)",
294
510
  handle: async (_command, runtime) => {
295
- const tmpFile = path.join(os.tmpdir(), `${Snowflake.next()}.html`);
296
511
  try {
297
- try {
298
- await runtime.session.exportToHtml(tmpFile);
299
- } catch (err) {
300
- return usage(`Failed to export session: ${errorMessage(err)}`, runtime);
301
- }
302
- const result = await $`gh gist create --public=false ${tmpFile}`.quiet().nothrow();
303
- if (result.exitCode !== 0) {
304
- return usage(
305
- `Failed to create gist: ${result.stderr.toString("utf-8").trim() || "unknown error"}`,
306
- runtime,
307
- );
308
- }
309
- const gistUrl = result.stdout.toString("utf-8").trim();
310
- const gistId = gistUrl.split("/").pop();
311
- if (!gistId) return usage("Failed to parse gist ID from gh output", runtime);
312
- await runtime.output(`Share URL: https://gistpreview.github.io/?${gistId}\nGist: ${gistUrl}`);
512
+ const result = await shareSession(runtime.sessionManager, {
513
+ serverUrl: runtime.settings.get("share.serverUrl"),
514
+ state: runtime.session.state,
515
+ obfuscator: runtime.settings.get("share.redactSecrets") ? runtime.session.obfuscator : undefined,
516
+ });
517
+ const lines = [`Share URL: ${result.url}`];
518
+ if (result.gistUrl) lines.push(`Gist: ${result.gistUrl}`);
519
+ if (result.truncated) lines.push("Note: large content was trimmed to fit the share size limit.");
520
+ await runtime.output(lines.join("\n"));
313
521
  return commandConsumed();
314
- } catch {
315
- return usage("GitHub CLI (gh) is required for /share. Install it from https://cli.github.com/.", runtime);
316
- } finally {
317
- await fs.rm(tmpFile, { force: true }).catch(() => {});
522
+ } catch (err) {
523
+ return usage(`Failed to share session: ${errorMessage(err)}`, runtime);
318
524
  }
319
525
  },
320
526
  handleTui: async (_command, runtime) => {
@@ -322,6 +528,126 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
322
528
  runtime.ctx.editor.setText("");
323
529
  },
324
530
  },
531
+ {
532
+ name: "collab",
533
+ description: "Share this session live via a relay",
534
+ inlineHint: "[start|view|stop|status] [relayUrl]",
535
+ subcommands: [
536
+ { name: "view", description: "Share a read-only link (guests can watch, not prompt)" },
537
+ { name: "status", description: "Show link + participants" },
538
+ { name: "stop", description: "Stop sharing" },
539
+ ],
540
+ allowArgs: true,
541
+ handleTui: async (command, runtime) => {
542
+ const ctx = runtime.ctx;
543
+ ctx.editor.setText("");
544
+ const args = command.args.trim();
545
+ const [first = ""] = args.split(/\s+/, 1);
546
+ if (first === "stop") {
547
+ if (!ctx.collabHost) {
548
+ ctx.showStatus("Not hosting a collab session");
549
+ return;
550
+ }
551
+ await ctx.collabHost.stop("host stopped");
552
+ ctx.showStatus("Collab stopped");
553
+ return;
554
+ }
555
+ if (first === "status") {
556
+ if (ctx.collabHost) {
557
+ const names = ctx.collabHost.participants.map(p =>
558
+ p.role === "host" ? `${p.name} (host)` : p.readOnly ? `${p.name} (view-only)` : p.name,
559
+ );
560
+ ctx.showStatus(`Collab: ${names.join(", ")} — ${collabWebLinkClickable(ctx.collabHost.webLink)}`);
561
+ } else if (ctx.collabGuest) {
562
+ ctx.showStatus(
563
+ ctx.collabGuest.readOnly
564
+ ? "In a collab session as a read-only guest (/leave to exit)"
565
+ : "In a collab session as a guest (/leave to exit)",
566
+ );
567
+ } else {
568
+ ctx.showStatus("Not in a collab session");
569
+ }
570
+ return;
571
+ }
572
+ if (ctx.collabGuest) {
573
+ ctx.showError("Already in a collab session as a guest (/leave first)");
574
+ return;
575
+ }
576
+ const view = first === "view";
577
+ if (ctx.collabHost) {
578
+ ctx.showStatus(
579
+ collabLinkHint(ctx.collabHost, view ? "Read-only collab link" : "Collab session active", view),
580
+ { dim: false },
581
+ );
582
+ return;
583
+ }
584
+ const explicitUrl = first === "start" || view ? args.slice(first.length).trim() : args;
585
+ const relayInput = explicitUrl || ctx.settings.get("collab.relayUrl") || "";
586
+ if (!relayInput) {
587
+ ctx.showError(
588
+ "No relay configured. Set collab.relayUrl in /settings or pass one: /collab relay.example.com",
589
+ );
590
+ return;
591
+ }
592
+ // Scheme-less relay args default to wss (ws:// must be spelled out for localhost).
593
+ const relayUrl = relayInput.includes("://") ? relayInput : `wss://${relayInput}`;
594
+ const host = new CollabHost(ctx);
595
+ try {
596
+ await host.start(relayUrl);
597
+ } catch (err) {
598
+ ctx.showError(`Failed to start collab session: ${errorMessage(err)}`);
599
+ return;
600
+ }
601
+ ctx.collabHost = host;
602
+ ctx.showStatus(collabLinkHint(host, "Collab session started!", view), { dim: false });
603
+ },
604
+ },
605
+ {
606
+ name: "join",
607
+ description: "Join a shared collab session",
608
+ inlineHint: "<link>",
609
+ allowArgs: true,
610
+ handleTui: async (command, runtime) => {
611
+ const ctx = runtime.ctx;
612
+ ctx.editor.setText("");
613
+ const link = command.args.trim();
614
+ if (!link) {
615
+ ctx.showError("Usage: /join <link>");
616
+ return;
617
+ }
618
+ if (ctx.collabHost) {
619
+ ctx.showError("Stop hosting first (/collab stop)");
620
+ return;
621
+ }
622
+ if (ctx.collabGuest) {
623
+ ctx.showError("Already in a collab session (/leave first)");
624
+ return;
625
+ }
626
+ try {
627
+ await new CollabGuestLink(ctx).join(link);
628
+ } catch (err) {
629
+ ctx.showError(`Failed to join collab session: ${errorMessage(err)}`);
630
+ }
631
+ },
632
+ },
633
+ {
634
+ name: "leave",
635
+ description: "Leave the collab session",
636
+ handleTui: async (_command, runtime) => {
637
+ const ctx = runtime.ctx;
638
+ ctx.editor.setText("");
639
+ if (ctx.collabGuest) {
640
+ await ctx.collabGuest.leave("left");
641
+ return;
642
+ }
643
+ if (ctx.collabHost) {
644
+ await ctx.collabHost.stop("host stopped");
645
+ ctx.showStatus("Collab stopped");
646
+ return;
647
+ }
648
+ ctx.showStatus("Not in a collab session");
649
+ },
650
+ },
325
651
  {
326
652
  name: "browser",
327
653
  description: "Toggle browser headless vs visible mode",
@@ -522,15 +848,63 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
522
848
  name: "usage",
523
849
  description: "Show provider usage and limits",
524
850
  acpDescription: "Show token usage",
525
- handle: async (_command, runtime) => {
526
- await runtime.output(await buildUsageReportText(runtime));
527
- return commandConsumed();
851
+ acpInputHint: "[show|reset [account|active]]",
852
+ subcommands: [
853
+ { name: "show", description: "Show provider usage and limits" },
854
+ { name: "reset", description: "Spend a saved Codex rate-limit reset", usage: "[account|active]" },
855
+ ],
856
+ allowArgs: true,
857
+ handle: async (command, runtime) => {
858
+ const { verb, rest } = parseSubcommand(command.args);
859
+ if (!verb || (verb === "show" && !rest)) {
860
+ await runtime.output(await buildUsageReportText(runtime));
861
+ return commandConsumed();
862
+ }
863
+ if (verb === "reset") {
864
+ await handleUsageResetCommand(rest, runtime.session, runtime.output);
865
+ return commandConsumed();
866
+ }
867
+ return usage("Usage: /usage [show|reset [account|active]]", runtime);
528
868
  },
529
- handleTui: async (_command, runtime) => {
530
- await runtime.ctx.handleUsageCommand();
869
+ handleTui: async (command, runtime) => {
870
+ const { verb, rest } = parseSubcommand(command.args);
871
+ if (!verb || (verb === "show" && !rest)) {
872
+ await runtime.ctx.handleUsageCommand();
873
+ runtime.ctx.editor.setText("");
874
+ return;
875
+ }
876
+ if (verb === "reset") {
877
+ if (rest) {
878
+ await handleUsageResetCommand(rest, runtime.ctx.session, text => runtime.ctx.showStatus(text));
879
+ } else {
880
+ await runtime.ctx.showResetUsageSelector();
881
+ }
882
+ runtime.ctx.editor.setText("");
883
+ return;
884
+ }
885
+ runtime.ctx.showStatus("Usage: /usage [show|reset [account|active]]");
531
886
  runtime.ctx.editor.setText("");
532
887
  },
533
888
  },
889
+ {
890
+ name: "stats",
891
+ description: "Launch the local stats dashboard",
892
+ inlineHint: "[--port <port>]",
893
+ allowArgs: true,
894
+ handle: async (command, runtime) => {
895
+ const parsed = parseStatsDashboardArgs(command.args);
896
+ if ("error" in parsed) return usage(parsed.error, runtime);
897
+
898
+ await runtime.output("Syncing session files...");
899
+ try {
900
+ const result = await launchStatsDashboard(parsed);
901
+ await runtime.output(result.message);
902
+ } catch (error) {
903
+ await runtime.output(`Stats dashboard failed: ${errorMessage(error)}`);
904
+ }
905
+ return commandConsumed();
906
+ },
907
+ },
534
908
  {
535
909
  name: "changelog",
536
910
  description: "Show changelog entries",
@@ -697,7 +1071,21 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
697
1071
  {
698
1072
  name: "logout",
699
1073
  description: "Logout from OAuth provider",
700
- handleTui: (_command, runtime) => {
1074
+ inlineHint: "[provider]",
1075
+ allowArgs: true,
1076
+ handleTui: (command, runtime) => {
1077
+ const providerId = command.args.trim();
1078
+ if (providerId) {
1079
+ const matchedProvider = getOAuthProviders().find(provider => provider.id === providerId);
1080
+ if (!matchedProvider) {
1081
+ runtime.ctx.showWarning(`Unknown OAuth provider: ${providerId}`);
1082
+ runtime.ctx.editor.setText("");
1083
+ return;
1084
+ }
1085
+ void runtime.ctx.showOAuthSelector("logout", matchedProvider.id);
1086
+ runtime.ctx.editor.setText("");
1087
+ return;
1088
+ }
701
1089
  void runtime.ctx.showOAuthSelector("logout");
702
1090
  runtime.ctx.editor.setText("");
703
1091
  },
@@ -773,6 +1161,25 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
773
1161
  await runtime.ctx.handleClearCommand();
774
1162
  },
775
1163
  },
1164
+ {
1165
+ name: "fresh",
1166
+ description: "Reset provider stream state without changing the local transcript",
1167
+ handle: async (_command, runtime) => {
1168
+ const result = runtime.session.freshSession();
1169
+ if (!result) {
1170
+ await runtime.output(
1171
+ "Wait for the current response to finish or abort it before refreshing provider state.",
1172
+ );
1173
+ return commandConsumed();
1174
+ }
1175
+ await runtime.output(formatFreshSessionResult(result));
1176
+ return commandConsumed();
1177
+ },
1178
+ handleTui: async (_command, runtime) => {
1179
+ runtime.ctx.editor.setText("");
1180
+ await runtime.ctx.handleFreshCommand();
1181
+ },
1182
+ },
776
1183
  {
777
1184
  name: "drop",
778
1185
  description: "Delete the current session and start a new one",
@@ -871,6 +1278,17 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
871
1278
  await runtime.ctx.handleBtwCommand(question);
872
1279
  },
873
1280
  },
1281
+ {
1282
+ name: "tan",
1283
+ description: "Run a full background agent on tangential work",
1284
+ inlineHint: "<work>",
1285
+ allowArgs: true,
1286
+ handleTui: async (command, runtime) => {
1287
+ const work = command.text.slice(`/${command.name}`.length).trim();
1288
+ runtime.ctx.editor.setText("");
1289
+ await runtime.ctx.handleTanCommand(work);
1290
+ },
1291
+ },
874
1292
  {
875
1293
  name: "omfg",
876
1294
  description: "Forge a TTSR rule from a complaint to stop a recurring behavior",
@@ -893,20 +1311,28 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
893
1311
  runtime.ctx.editor.setText("");
894
1312
  },
895
1313
  },
896
- {
897
- name: "background",
898
- aliases: ["bg"],
899
- description: "Detach UI and continue running in background",
900
- handleTui: (_command, runtime) => {
901
- runtime.ctx.editor.setText("");
902
- runtime.handleBackgroundCommand();
903
- },
904
- },
905
1314
  {
906
1315
  name: "debug",
907
1316
  description: "Open debug tools selector",
908
- handleTui: (_command, runtime) => {
909
- runtime.ctx.showDebugSelector();
1317
+ allowArgs: true,
1318
+ subcommands: [
1319
+ {
1320
+ name: "dump-next-request",
1321
+ description: "Dump the next AI provider HTTP request as JSON",
1322
+ usage: "<path>",
1323
+ },
1324
+ ],
1325
+ handle: async (command, runtime) =>
1326
+ handleDebugSubcommand(command.args, runtime.cwd, text => runtime.output(text)),
1327
+ handleTui: async (command, runtime) => {
1328
+ const args = command.args.trim();
1329
+ if (args.length === 0) {
1330
+ runtime.ctx.showDebugSelector();
1331
+ } else {
1332
+ await handleDebugSubcommand(args, runtime.ctx.sessionManager.getCwd(), text =>
1333
+ runtime.ctx.showStatus(text),
1334
+ );
1335
+ }
910
1336
  runtime.ctx.editor.setText("");
911
1337
  },
912
1338
  },
@@ -937,7 +1363,7 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
937
1363
  allowArgs: true,
938
1364
  handle: async (command, runtime) => {
939
1365
  const verb = (command.args.trim().split(/\s+/)[0] ?? "").toLowerCase() || "view";
940
- const backend = resolveMemoryBackend(runtime.settings);
1366
+ const backend = await resolveMemoryBackend(runtime.settings);
941
1367
  switch (verb) {
942
1368
  case "view": {
943
1369
  const payload = await backend.buildDeveloperInstructions(
@@ -1645,16 +2071,109 @@ for (const command of BUILTIN_SLASH_COMMAND_REGISTRY) {
1645
2071
  }
1646
2072
  }
1647
2073
 
2074
+ export const BUILTIN_SLASH_COMMAND_RESERVED_NAMES: ReadonlySet<string> = new Set(BUILTIN_SLASH_COMMAND_LOOKUP.keys());
2075
+
2076
+ /**
2077
+ * Build getArgumentCompletions from declarative subcommand definitions.
2078
+ * Returns subcommand names filtered by prefix in the dropdown.
2079
+ */
2080
+ function buildArgumentCompletions(subcommands: SubcommandDef[]): (prefix: string) => AutocompleteItem[] | null {
2081
+ return (argumentPrefix: string) => {
2082
+ if (argumentPrefix.includes(" ")) return null; // past the subcommand
2083
+ const lower = argumentPrefix.toLowerCase();
2084
+ const matches = subcommands
2085
+ .filter(s => s.name.startsWith(lower))
2086
+ .map(s => ({
2087
+ value: `${s.name} `,
2088
+ label: s.name,
2089
+ description: s.description,
2090
+ hint: s.usage,
2091
+ }));
2092
+ return matches.length > 0 ? matches : null;
2093
+ };
2094
+ }
2095
+
2096
+ /**
2097
+ * Build getInlineHint from declarative subcommand definitions.
2098
+ * Shows remaining completion + usage as dim ghost text after cursor.
2099
+ */
2100
+ function buildSubcommandInlineHint(subcommands: SubcommandDef[]): (argumentText: string) => string | null {
2101
+ return (argumentText: string) => {
2102
+ const trimmed = argumentText.trimStart();
2103
+ const spaceIndex = trimmed.indexOf(" ");
2104
+
2105
+ if (spaceIndex === -1) {
2106
+ // Still typing subcommand name — show remaining chars + usage
2107
+ const prefix = trimmed.toLowerCase();
2108
+ if (prefix.length === 0) return null;
2109
+ const match = subcommands.find(s => s.name.startsWith(prefix));
2110
+ if (!match) return null;
2111
+ const remaining = match.name.slice(prefix.length);
2112
+ return remaining + (match.usage ? ` ${match.usage}` : "");
2113
+ }
2114
+
2115
+ // Subcommand typed — show remaining usage params
2116
+ const subName = trimmed.slice(0, spaceIndex).toLowerCase();
2117
+ const afterSub = trimmed.slice(spaceIndex + 1);
2118
+ const sub = subcommands.find(s => s.name === subName);
2119
+ if (!sub?.usage) return null;
2120
+
2121
+ if (afterSub.length > 0) {
2122
+ const usageParts = sub.usage.split(" ");
2123
+ const inputParts = afterSub.trim().split(/\s+/);
2124
+ const remaining = usageParts.slice(inputParts.length);
2125
+ return remaining.length > 0 ? remaining.join(" ") : null;
2126
+ }
2127
+
2128
+ return sub.usage;
2129
+ };
2130
+ }
2131
+
2132
+ /**
2133
+ * Build getInlineHint for commands with a simple static hint string.
2134
+ * Shows the hint only when no arguments have been typed yet.
2135
+ */
2136
+ function buildStaticInlineHint(hint: string): (argumentText: string) => string | null {
2137
+ return (argumentText: string) => (argumentText.trim().length === 0 ? hint : null);
2138
+ }
2139
+
1648
2140
  /** Builtin command metadata used for slash-command autocomplete and help text. */
1649
2141
  export const BUILTIN_SLASH_COMMAND_DEFS: ReadonlyArray<BuiltinSlashCommand> = BUILTIN_SLASH_COMMAND_REGISTRY.map(
1650
2142
  command => ({
1651
2143
  name: command.name,
2144
+ aliases: command.aliases,
1652
2145
  description: command.description,
1653
2146
  subcommands: command.subcommands,
1654
2147
  inlineHint: command.inlineHint,
1655
2148
  }),
1656
2149
  );
1657
2150
 
2151
+ /**
2152
+ * Materialized builtin slash commands with completion functions derived from
2153
+ * declarative subcommand/hint definitions.
2154
+ */
2155
+ export const BUILTIN_SLASH_COMMANDS: ReadonlyArray<
2156
+ BuiltinSlashCommand & {
2157
+ getArgumentCompletions?: (prefix: string) => AutocompleteItem[] | null;
2158
+ getInlineHint?: (argumentText: string) => string | null;
2159
+ }
2160
+ > = BUILTIN_SLASH_COMMAND_DEFS.map(cmd => {
2161
+ if (cmd.subcommands) {
2162
+ return {
2163
+ ...cmd,
2164
+ getArgumentCompletions: buildArgumentCompletions(cmd.subcommands),
2165
+ getInlineHint: buildSubcommandInlineHint(cmd.subcommands),
2166
+ };
2167
+ }
2168
+ if (cmd.inlineHint) {
2169
+ return {
2170
+ ...cmd,
2171
+ getInlineHint: buildStaticInlineHint(cmd.inlineHint),
2172
+ };
2173
+ }
2174
+ return cmd;
2175
+ });
2176
+
1658
2177
  /**
1659
2178
  * Unified registry exposed for cross-mode tooling. Each spec carries at least
1660
2179
  * one of `handle` / `handleTui`. The TUI dispatcher prefers `handleTui`; the
@@ -1681,6 +2200,13 @@ export async function executeBuiltinSlashCommand(
1681
2200
  if (parsed.args.length > 0 && !command.allowArgs) {
1682
2201
  return false;
1683
2202
  }
2203
+ // Collab guests run a read-mostly replica: session-mutating builtins are
2204
+ // host-only; the allowlist covers purely local/read-only commands.
2205
+ if (runtime.ctx.collabGuest && !COLLAB_GUEST_ALLOWED_COMMANDS[command.name]) {
2206
+ runtime.ctx.showStatus(`/${command.name} is host-only during a collab session`);
2207
+ runtime.ctx.editor.setText("");
2208
+ return true;
2209
+ }
1684
2210
  if (command.handleTui) {
1685
2211
  const result = await command.handleTui(parsed, runtime);
1686
2212
  if (result && typeof result === "object" && "prompt" in result) return result.prompt;