@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
@@ -11,9 +11,9 @@ import {
11
11
  } from "@prometheus-ai/ai";
12
12
  import { Loader, Markdown, padding, Spacer, Text, visibleWidth } from "@prometheus-ai/tui";
13
13
  import { formatDuration, Snowflake } from "@prometheus-ai/utils";
14
- import { $ } from "bun";
15
14
  import { shouldEnableAppendOnlyContext } from "../../config/append-only-context-mode";
16
- import { loadCustomShare } from "../../export/custom-share";
15
+ import { type LoadedCustomShare, loadCustomShare } from "../../export/custom-share";
16
+ import { shareSession } from "../../export/share";
17
17
  import type { CompactOptions } from "../../extensibility/extensions/types";
18
18
  import {
19
19
  diffMentalModelContent,
@@ -22,6 +22,7 @@ import {
22
22
  loadHindsightConfig,
23
23
  reloadMentalModelsForSession,
24
24
  resolveSeedsForScope,
25
+ seedAlreadyExists,
25
26
  summarizeMentalModel,
26
27
  } from "../../hindsight";
27
28
  import { resolveMemoryBackend } from "../../memory-backend";
@@ -29,15 +30,17 @@ import { BashExecutionComponent } from "../../modes/components/bash-execution";
29
30
  import { BorderedLoader } from "../../modes/components/bordered-loader";
30
31
  import { DynamicBorder } from "../../modes/components/dynamic-border";
31
32
  import { EvalExecutionComponent } from "../../modes/components/eval-execution";
33
+ import { TranscriptBlock } from "../../modes/components/transcript-container";
32
34
  import { getMarkdownTheme, getSymbolTheme, theme } from "../../modes/theme/theme";
33
35
  import type { InteractiveModeContext } from "../../modes/types";
34
36
  import { computeContextBreakdown, renderContextUsage } from "../../modes/utils/context-usage";
35
37
  import { buildHotkeysMarkdown } from "../../modes/utils/hotkeys-markdown";
36
38
  import { buildToolsMarkdown } from "../../modes/utils/tools-markdown";
37
39
  import type { AsyncJobSnapshotItem } from "../../session/agent-session";
38
- import type { AuthStorage } from "../../session/auth-storage";
39
- import type { NewSessionOptions } from "../../session/session-manager";
40
+ import type { AuthStorage, OAuthAccountIdentity } from "../../session/auth-storage";
41
+ import type { NewSessionOptions } from "../../session/session-entries";
40
42
  import { formatShakeSummary, type ShakeMode, type ShakeResult } from "../../session/shake-types";
43
+ import { limitMatchesActiveAccount } from "../../slash-commands/helpers/active-oauth-account";
41
44
  import { outputMeta } from "../../tools/output-meta";
42
45
  import { resolveToCwd, stripOuterDoubleQuotes } from "../../tools/path-utils";
43
46
  import { replaceTabs } from "../../tools/render-utils";
@@ -47,13 +50,13 @@ import { openPath } from "../../utils/open";
47
50
  import { setSessionTerminalTitle } from "../../utils/title-generator";
48
51
 
49
52
  function showMarkdownPanel(ctx: InteractiveModeContext, title: string, markdown: string): void {
50
- ctx.chatContainer.addChild(new Spacer(1));
51
- ctx.chatContainer.addChild(new DynamicBorder());
52
- ctx.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", title)), 1, 0));
53
- ctx.chatContainer.addChild(new Spacer(1));
54
- ctx.chatContainer.addChild(new Markdown(markdown.trim(), 1, 1, getMarkdownTheme()));
55
- ctx.chatContainer.addChild(new DynamicBorder());
56
- ctx.ui.requestRender();
53
+ const block = new TranscriptBlock();
54
+ block.addChild(new DynamicBorder());
55
+ block.addChild(new Text(theme.bold(theme.fg("accent", title)), 1, 0));
56
+ block.addChild(new Spacer(1));
57
+ block.addChild(new Markdown(markdown.trim(), 1, 1, getMarkdownTheme()));
58
+ block.addChild(new DynamicBorder());
59
+ ctx.present(block);
57
60
  }
58
61
 
59
62
  export class CommandController {
@@ -115,125 +118,84 @@ export class CommandController {
115
118
  }
116
119
 
117
120
  async handleShareCommand(): Promise<void> {
118
- const tmpFile = path.join(os.tmpdir(), `${Snowflake.next()}.html`);
119
- const cleanupTempFile = async () => {
120
- try {
121
- await fs.rm(tmpFile, { force: true });
122
- } catch {
123
- // Ignore cleanup errors
124
- }
125
- };
126
- try {
127
- await this.ctx.session.exportToHtml(tmpFile);
128
- } catch (error: unknown) {
129
- this.ctx.showError(`Failed to export session: ${error instanceof Error ? error.message : "Unknown error"}`);
130
- return;
131
- }
132
-
121
+ let customShare: LoadedCustomShare | null;
133
122
  try {
134
- const customShare = await loadCustomShare();
135
- if (customShare) {
136
- const loader = new BorderedLoader(this.ctx.ui, theme, "Sharing...");
137
- this.ctx.editorContainer.clear();
138
- this.ctx.editorContainer.addChild(loader);
139
- this.ctx.ui.setFocus(loader);
140
- this.ctx.ui.requestRender();
141
-
142
- const restoreEditor = async () => {
143
- loader.dispose();
144
- this.ctx.editorContainer.clear();
145
- this.ctx.editorContainer.addChild(this.ctx.editor);
146
- this.ctx.ui.setFocus(this.ctx.editor);
147
- await cleanupTempFile();
148
- };
149
-
150
- try {
151
- const result = await customShare.fn(tmpFile);
152
- await restoreEditor();
153
-
154
- if (typeof result === "string") {
155
- this.ctx.showStatus(`Share URL: ${result}`);
156
- this.openInBrowser(result);
157
- } else if (result) {
158
- const parts: string[] = [];
159
- if (result.url) parts.push(`Share URL: ${result.url}`);
160
- if (result.message) parts.push(result.message);
161
- if (parts.length > 0) this.ctx.showStatus(parts.join("\n"));
162
- if (result.url) this.openInBrowser(result.url);
163
- } else {
164
- this.ctx.showStatus("Session shared");
165
- }
166
- return;
167
- } catch (err) {
168
- await restoreEditor();
169
- this.ctx.showError(`Custom share failed: ${err instanceof Error ? err.message : String(err)}`);
170
- return;
171
- }
172
- }
123
+ customShare = await loadCustomShare();
173
124
  } catch (err) {
174
- await cleanupTempFile();
175
125
  this.ctx.showError(err instanceof Error ? err.message : String(err));
176
126
  return;
177
127
  }
178
128
 
179
- try {
180
- const authResult = await $`gh auth status`.quiet().nothrow();
181
- if (authResult.exitCode !== 0) {
182
- await cleanupTempFile();
183
- this.ctx.showError("GitHub CLI is not logged in. Run 'gh auth login' first.");
184
- return;
185
- }
186
- } catch {
187
- await cleanupTempFile();
188
- this.ctx.showError("GitHub CLI (gh) is not installed. Install it from https://cli.github.com/");
189
- return;
190
- }
191
-
192
- const loader = new BorderedLoader(this.ctx.ui, theme, "Creating gist...");
129
+ const loader = new BorderedLoader(this.ctx.ui, theme, "Sharing session...");
193
130
  this.ctx.editorContainer.clear();
194
131
  this.ctx.editorContainer.addChild(loader);
195
132
  this.ctx.ui.setFocus(loader);
196
133
  this.ctx.ui.requestRender();
197
134
 
198
- const restoreEditor = async () => {
135
+ const restoreEditor = () => {
199
136
  loader.dispose();
200
137
  this.ctx.editorContainer.clear();
201
138
  this.ctx.editorContainer.addChild(this.ctx.editor);
202
139
  this.ctx.ui.setFocus(this.ctx.editor);
203
- await cleanupTempFile();
204
140
  };
205
-
206
141
  loader.onAbort = () => {
207
- void restoreEditor();
142
+ restoreEditor();
208
143
  this.ctx.showStatus("Share cancelled");
209
144
  };
210
145
 
211
- try {
212
- const result = await $`gh gist create --public=false ${tmpFile}`.quiet().nothrow();
213
- if (loader.signal.aborted) return;
214
-
215
- await restoreEditor();
216
-
217
- if (result.exitCode !== 0) {
218
- const errorMsg = result.stderr.toString("utf-8").trim() || "Unknown error";
219
- this.ctx.showError(`Failed to create gist: ${errorMsg}`);
220
- return;
146
+ // Custom share scripts keep their legacy contract: they receive a path
147
+ // to a standalone HTML export. No fallback to the default flow on error.
148
+ if (customShare) {
149
+ const tmpFile = path.join(os.tmpdir(), `${Snowflake.next()}.html`);
150
+ try {
151
+ await this.ctx.session.exportToHtml(tmpFile);
152
+ const result = await customShare.fn(tmpFile);
153
+ if (loader.signal.aborted) return;
154
+ restoreEditor();
155
+
156
+ if (typeof result === "string") {
157
+ this.ctx.showStatus(`Share URL: ${result}`);
158
+ this.openInBrowser(result);
159
+ } else if (result) {
160
+ const parts: string[] = [];
161
+ if (result.url) parts.push(`Share URL: ${result.url}`);
162
+ if (result.message) parts.push(result.message);
163
+ if (parts.length > 0) this.ctx.showStatus(parts.join("\n"));
164
+ if (result.url) this.openInBrowser(result.url);
165
+ } else {
166
+ this.ctx.showStatus("Session shared");
167
+ }
168
+ } catch (err) {
169
+ if (!loader.signal.aborted) {
170
+ restoreEditor();
171
+ this.ctx.showError(`Custom share failed: ${err instanceof Error ? err.message : String(err)}`);
172
+ }
173
+ } finally {
174
+ await fs.rm(tmpFile, { force: true }).catch(() => {});
221
175
  }
176
+ return;
177
+ }
222
178
 
223
- const gistUrl = result.stdout.toString("utf-8").trim();
224
- const gistId = gistUrl.split("/").pop();
225
- if (!gistId) {
226
- this.ctx.showError("Failed to parse gist ID from gh output");
227
- return;
228
- }
179
+ // Default: encrypted snapshot to a secret gist (preferred) or the share
180
+ // server; the key rides in the link fragment and never leaves the client.
181
+ try {
182
+ const result = await shareSession(this.ctx.session.sessionManager, {
183
+ serverUrl: this.ctx.settings.get("share.serverUrl"),
184
+ state: this.ctx.session.state,
185
+ obfuscator: this.ctx.settings.get("share.redactSecrets") ? this.ctx.session.obfuscator : undefined,
186
+ });
187
+ if (loader.signal.aborted) return;
188
+ restoreEditor();
229
189
 
230
- const previewUrl = `https://gistpreview.github.io/?${gistId}`;
231
- this.ctx.showStatus(`Share URL: ${previewUrl}\nGist: ${gistUrl}`);
232
- this.openInBrowser(previewUrl);
190
+ const lines = [`Share URL: ${result.url}`];
191
+ if (result.gistUrl) lines.push(`Gist: ${result.gistUrl}`);
192
+ if (result.truncated) lines.push("Note: large content was trimmed to fit the share size limit.");
193
+ this.ctx.showStatus(lines.join("\n"));
194
+ this.openInBrowser(result.url);
233
195
  } catch (error: unknown) {
234
196
  if (!loader.signal.aborted) {
235
- await restoreEditor();
236
- this.ctx.showError(`Failed to create gist: ${error instanceof Error ? error.message : "Unknown error"}`);
197
+ restoreEditor();
198
+ this.ctx.showError(`Failed to share session: ${error instanceof Error ? error.message : "Unknown error"}`);
237
199
  }
238
200
  }
239
201
  }
@@ -313,7 +275,13 @@ export class CommandController {
313
275
  info += `\n${theme.bold("LSP Servers")}\n`;
314
276
  for (const server of this.ctx.lspServers) {
315
277
  const statusColor =
316
- server.status === "ready" ? "success" : server.status === "connecting" ? "warning" : "error";
278
+ server.status === "ready"
279
+ ? "success"
280
+ : server.status === "available"
281
+ ? "dim"
282
+ : server.status === "connecting"
283
+ ? "warning"
284
+ : "error";
317
285
  const statusText =
318
286
  server.status === "error" && server.error ? `${server.status}: ${server.error}` : server.status;
319
287
  info += `${theme.fg("dim", `${server.name}:`)} ${theme.fg(statusColor, statusText)} ${theme.fg("dim", `(${server.fileTypes.join(", ")})`)}\n`;
@@ -334,9 +302,7 @@ export class CommandController {
334
302
  }
335
303
  }
336
304
 
337
- this.ctx.chatContainer.addChild(new Spacer(1));
338
- this.ctx.chatContainer.addChild(new Text(info, 1, 0));
339
- this.ctx.ui.requestRender();
305
+ this.ctx.present([new Spacer(1), new Text(info, 1, 0)]);
340
306
  }
341
307
 
342
308
  async handleJobsCommand(): Promise<void> {
@@ -353,9 +319,7 @@ export class CommandController {
353
319
 
354
320
  if (snapshot.running.length === 0 && snapshot.recent.length === 0) {
355
321
  info += `\n${theme.fg("dim", "No async jobs yet.")}\n`;
356
- this.ctx.chatContainer.addChild(new Spacer(1));
357
- this.ctx.chatContainer.addChild(new Text(info, 1, 0));
358
- this.ctx.ui.requestRender();
322
+ this.ctx.present([new Spacer(1), new Text(info, 1, 0)]);
359
323
  return;
360
324
  }
361
325
 
@@ -375,9 +339,7 @@ export class CommandController {
375
339
  }
376
340
  }
377
341
 
378
- this.ctx.chatContainer.addChild(new Spacer(1));
379
- this.ctx.chatContainer.addChild(new Text(info.trimEnd(), 1, 0));
380
- this.ctx.ui.requestRender();
342
+ this.ctx.present([new Spacer(1), new Text(info.trimEnd(), 1, 0)]);
381
343
  }
382
344
 
383
345
  async handleUsageCommand(reports?: UsageReport[] | null): Promise<void> {
@@ -402,10 +364,17 @@ export class CommandController {
402
364
  }
403
365
 
404
366
  const availableWidth = Math.max(40, (this.ctx.ui.terminal.columns ?? 100) - 2);
405
- const output = renderUsageReports(usageReports, theme, Date.now(), availableWidth);
406
- this.ctx.chatContainer.addChild(new Spacer(1));
407
- this.ctx.chatContainer.addChild(new Text(output, 1, 0));
408
- this.ctx.ui.requestRender();
367
+ const currentProvider = this.ctx.session.model?.provider;
368
+ const activeAccount = currentProvider
369
+ ? this.ctx.session.modelRegistry.authStorage.getOAuthAccountIdentity(
370
+ currentProvider,
371
+ this.ctx.session.sessionId,
372
+ )
373
+ : undefined;
374
+ const output = renderUsageReports(usageReports, theme, Date.now(), availableWidth, provider =>
375
+ provider === currentProvider ? activeAccount : undefined,
376
+ );
377
+ this.ctx.present([new Spacer(1), new Text(output, 1, 0)]);
409
378
  }
410
379
 
411
380
  async handleChangelogCommand(showFull = false): Promise<void> {
@@ -426,13 +395,13 @@ export class CommandController {
426
395
  ? ""
427
396
  : `\n\n${theme.fg("dim", "Use")} ${theme.bold("/changelog full")} ${theme.fg("dim", "to view the complete changelog.")}`;
428
397
 
429
- this.ctx.chatContainer.addChild(new Spacer(1));
430
- this.ctx.chatContainer.addChild(new DynamicBorder());
431
- this.ctx.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", title)), 1, 0));
432
- this.ctx.chatContainer.addChild(new Spacer(1));
433
- this.ctx.chatContainer.addChild(new Markdown(changelogMarkdown + hint, 1, 1, getMarkdownTheme()));
434
- this.ctx.chatContainer.addChild(new DynamicBorder());
435
- this.ctx.ui.requestRender();
398
+ const block = new TranscriptBlock();
399
+ block.addChild(new DynamicBorder());
400
+ block.addChild(new Text(theme.bold(theme.fg("accent", title)), 1, 0));
401
+ block.addChild(new Spacer(1));
402
+ block.addChild(new Markdown(changelogMarkdown + hint, 1, 1, getMarkdownTheme()));
403
+ block.addChild(new DynamicBorder());
404
+ this.ctx.present(block);
436
405
  }
437
406
 
438
407
  handleHotkeysCommand(): void {
@@ -446,26 +415,26 @@ export class CommandController {
446
415
  }
447
416
 
448
417
  handleContextCommand(): void {
449
- const breakdown = computeContextBreakdown(this.ctx.session);
418
+ const breakdown = computeContextBreakdown(this.ctx.session, { snapcompactSavings: true });
450
419
  if (breakdown.contextWindow <= 0) {
451
420
  this.ctx.showWarning("Context usage is unavailable: no model is selected for this session.");
452
421
  return;
453
422
  }
454
423
  const output = renderContextUsage(breakdown, theme);
455
- this.ctx.chatContainer.addChild(new Spacer(1));
456
- this.ctx.chatContainer.addChild(new DynamicBorder());
457
- this.ctx.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", "Context Usage")), 1, 0));
458
- this.ctx.chatContainer.addChild(new Spacer(1));
459
- this.ctx.chatContainer.addChild(new Text(output, 1, 0));
460
- this.ctx.chatContainer.addChild(new DynamicBorder());
461
- this.ctx.ui.requestRender();
424
+ const block = new TranscriptBlock();
425
+ block.addChild(new DynamicBorder());
426
+ block.addChild(new Text(theme.bold(theme.fg("accent", "Context Usage")), 1, 0));
427
+ block.addChild(new Spacer(1));
428
+ block.addChild(new Text(output, 1, 0));
429
+ block.addChild(new DynamicBorder());
430
+ this.ctx.present(block);
462
431
  }
463
432
 
464
433
  async handleMemoryCommand(text: string): Promise<void> {
465
434
  const argumentText = text.slice(7).trim();
466
435
  const action = argumentText.split(/\s+/, 1)[0]?.toLowerCase() || "view";
467
436
  const agentDir = this.ctx.settings.getAgentDir();
468
- const backend = resolveMemoryBackend(this.ctx.settings);
437
+ const backend = await resolveMemoryBackend(this.ctx.settings);
469
438
 
470
439
  if (action === "view") {
471
440
  const payload = await backend.buildDeveloperInstructions(agentDir, this.ctx.settings, this.ctx.session);
@@ -473,13 +442,13 @@ export class CommandController {
473
442
  this.ctx.showWarning("Memory payload is empty (memory backend off, disabled, or no memory available).");
474
443
  return;
475
444
  }
476
- this.ctx.chatContainer.addChild(new Spacer(1));
477
- this.ctx.chatContainer.addChild(new DynamicBorder());
478
- this.ctx.chatContainer.addChild(new Text(theme.bold(theme.fg("accent", "Memory Injection Payload")), 1, 0));
479
- this.ctx.chatContainer.addChild(new Spacer(1));
480
- this.ctx.chatContainer.addChild(new Markdown(payload, 1, 1, getMarkdownTheme()));
481
- this.ctx.chatContainer.addChild(new DynamicBorder());
482
- this.ctx.ui.requestRender();
445
+ const block = new TranscriptBlock();
446
+ block.addChild(new DynamicBorder());
447
+ block.addChild(new Text(theme.bold(theme.fg("accent", "Memory Injection Payload")), 1, 0));
448
+ block.addChild(new Spacer(1));
449
+ block.addChild(new Markdown(payload, 1, 1, getMarkdownTheme()));
450
+ block.addChild(new DynamicBorder());
451
+ this.ctx.present(block);
483
452
  return;
484
453
  }
485
454
 
@@ -719,11 +688,11 @@ export class CommandController {
719
688
  return;
720
689
  }
721
690
  const list = await state.client.listMentalModels(state.bankId, { detail: "metadata" });
722
- const existing = new Set((list.items ?? []).map(m => m.id));
691
+ const existing = list.items ?? [];
723
692
  let created = 0;
724
693
  let skipped = 0;
725
694
  for (const seed of seeds) {
726
- if (existing.has(seed.id)) {
695
+ if (seedAlreadyExists(seed, existing)) {
727
696
  skipped++;
728
697
  continue;
729
698
  }
@@ -800,8 +769,7 @@ export class CommandController {
800
769
  this.ctx.streamingMessage = undefined;
801
770
  this.ctx.pendingTools.clear();
802
771
 
803
- this.ctx.chatContainer.addChild(new Spacer(1));
804
- this.ctx.chatContainer.addChild(new Text(`${theme.fg("accent", `${theme.status.success} ${label}`)}`, 1, 1));
772
+ this.ctx.present([new Spacer(1), new Text(`${theme.fg("accent", `${theme.status.success} ${label}`)}`, 1, 1)]);
805
773
  await this.ctx.reloadTodos();
806
774
  this.ctx.ui.requestRender(true, { clearScrollback: true });
807
775
  }
@@ -810,6 +778,18 @@ export class CommandController {
810
778
  await this.#runNewSessionFlow();
811
779
  }
812
780
 
781
+ async handleFreshCommand(): Promise<void> {
782
+ const result = this.ctx.session.freshSession();
783
+ if (!result) {
784
+ this.ctx.showWarning("Wait for the current response to finish or abort it before refreshing provider state.");
785
+ return;
786
+ }
787
+ const stateLabel = result.closedProviderSessions === 1 ? "provider state" : "provider states";
788
+ this.ctx.statusLine.invalidate();
789
+ this.ctx.updateEditorTopBorder();
790
+ this.ctx.showStatus(`Fresh provider session started (${result.closedProviderSessions} ${stateLabel} pruned).`);
791
+ }
792
+
813
793
  async handleDropCommand(): Promise<void> {
814
794
  if (!this.ctx.sessionManager.getSessionFile()) {
815
795
  this.ctx.showError("Nothing to drop (in-memory session)");
@@ -840,11 +820,10 @@ export class CommandController {
840
820
 
841
821
  const sessionFile = this.ctx.session.sessionFile;
842
822
  const shortPath = sessionFile ? sessionFile.split("/").pop() : "new session";
843
- this.ctx.chatContainer.addChild(new Spacer(1));
844
- this.ctx.chatContainer.addChild(
823
+ this.ctx.present([
824
+ new Spacer(1),
845
825
  new Text(`${theme.fg("accent", `${theme.status.success} Session forked to ${shortPath}`)}`, 1, 1),
846
- );
847
- this.ctx.ui.requestRender();
826
+ ]);
848
827
  }
849
828
 
850
829
  async handleMoveCommand(targetPath: string): Promise<void> {
@@ -878,11 +857,10 @@ export class CommandController {
878
857
  await this.ctx.sessionManager.moveTo(resolvedPath);
879
858
  await this.ctx.applyCwdChange(resolvedPath);
880
859
 
881
- this.ctx.chatContainer.addChild(new Spacer(1));
882
- this.ctx.chatContainer.addChild(
860
+ this.ctx.present([
861
+ new Spacer(1),
883
862
  new Text(`${theme.fg("accent", `${theme.status.success} Session moved to ${resolvedPath}`)}`, 1, 1),
884
- );
885
- this.ctx.ui.requestRender();
863
+ ]);
886
864
  } catch (err) {
887
865
  this.ctx.showError(`Move failed: ${err instanceof Error ? err.message : String(err)}`);
888
866
  }
@@ -913,7 +891,7 @@ export class CommandController {
913
891
  this.ctx.pendingMessagesContainer.addChild(this.ctx.bashComponent);
914
892
  this.ctx.pendingBashComponents.push(this.ctx.bashComponent);
915
893
  } else {
916
- this.ctx.chatContainer.addChild(this.ctx.bashComponent);
894
+ this.ctx.present(this.ctx.bashComponent);
917
895
  }
918
896
  this.ctx.ui.requestRender();
919
897
 
@@ -925,7 +903,7 @@ export class CommandController {
925
903
  this.ctx.bashComponent.appendOutput(chunk);
926
904
  }
927
905
  },
928
- { excludeFromContext },
906
+ { excludeFromContext, useUserShell: true },
929
907
  );
930
908
 
931
909
  if (this.ctx.bashComponent) {
@@ -954,7 +932,7 @@ export class CommandController {
954
932
  this.ctx.pendingMessagesContainer.addChild(this.ctx.pythonComponent);
955
933
  this.ctx.pendingPythonComponents.push(this.ctx.pythonComponent);
956
934
  } else {
957
- this.ctx.chatContainer.addChild(this.ctx.pythonComponent);
935
+ this.ctx.present(this.ctx.pythonComponent);
958
936
  }
959
937
  this.ctx.ui.requestRender();
960
938
 
@@ -987,7 +965,10 @@ export class CommandController {
987
965
  this.ctx.ui.requestRender();
988
966
  }
989
967
 
990
- async handleCompactCommand(customInstructions?: string): Promise<CompactionOutcome> {
968
+ async handleCompactCommand(
969
+ customInstructions?: string,
970
+ beforeFlush?: (outcome: CompactionOutcome) => void | Promise<void>,
971
+ ): Promise<CompactionOutcome> {
991
972
  const entries = this.ctx.sessionManager.getEntries();
992
973
  const messageCount = entries.filter(e => e.type === "message").length;
993
974
 
@@ -996,7 +977,7 @@ export class CommandController {
996
977
  return "ok";
997
978
  }
998
979
 
999
- return this.executeCompaction(customInstructions, false);
980
+ return this.executeCompaction(customInstructions, false, beforeFlush);
1000
981
  }
1001
982
 
1002
983
  /**
@@ -1041,6 +1022,7 @@ export class CommandController {
1041
1022
  async executeCompaction(
1042
1023
  customInstructionsOrOptions?: string | CompactOptions,
1043
1024
  isAuto = false,
1025
+ beforeFlush?: (outcome: CompactionOutcome) => void | Promise<void>,
1044
1026
  ): Promise<CompactionOutcome> {
1045
1027
  if (this.ctx.loadingAnimation) {
1046
1028
  this.ctx.loadingAnimation.stop();
@@ -1048,12 +1030,6 @@ export class CommandController {
1048
1030
  }
1049
1031
  this.ctx.statusContainer.clear();
1050
1032
 
1051
- const originalOnEscape = this.ctx.editor.onEscape;
1052
- this.ctx.editor.onEscape = () => {
1053
- this.ctx.session.abortCompaction();
1054
- };
1055
-
1056
- this.ctx.chatContainer.addChild(new Spacer(1));
1057
1033
  const label = isAuto ? "Auto-compacting context... (esc to cancel)" : "Compacting context... (esc to cancel)";
1058
1034
  const compactingLoader = new Loader(
1059
1035
  this.ctx.ui,
@@ -1074,6 +1050,8 @@ export class CommandController {
1074
1050
  : undefined;
1075
1051
  await this.ctx.session.compact(instructions, options);
1076
1052
 
1053
+ compactingLoader.stop();
1054
+ this.ctx.statusContainer.clear();
1077
1055
  this.ctx.rebuildChatFromMessages();
1078
1056
 
1079
1057
  this.ctx.statusLine.invalidate();
@@ -1090,8 +1068,12 @@ export class CommandController {
1090
1068
  } finally {
1091
1069
  compactingLoader.stop();
1092
1070
  this.ctx.statusContainer.clear();
1093
- this.ctx.editor.onEscape = originalOnEscape;
1094
1071
  }
1072
+ // Run the caller's pre-flush hook (e.g. the plan-approval model transition)
1073
+ // before queued user input is dispatched, so any turn queued during
1074
+ // compaction executes on the post-compaction model rather than the model
1075
+ // compaction itself ran on.
1076
+ if (beforeFlush) await beforeFlush(outcome);
1095
1077
  await this.ctx.flushCompactionQueue({ willRetry: false });
1096
1078
  return outcome;
1097
1079
  }
@@ -1111,11 +1093,6 @@ export class CommandController {
1111
1093
  }
1112
1094
  this.ctx.statusContainer.clear();
1113
1095
 
1114
- const originalOnEscape = this.ctx.editor.onEscape;
1115
- this.ctx.editor.onEscape = () => {
1116
- this.ctx.session.abortHandoff();
1117
- };
1118
-
1119
1096
  const handoffLoader = new Loader(
1120
1097
  this.ctx.ui,
1121
1098
  spinner => theme.fg("accent", spinner),
@@ -1143,10 +1120,10 @@ export class CommandController {
1143
1120
  this.ctx.updateEditorBorderColor();
1144
1121
  await this.ctx.reloadTodos();
1145
1122
 
1146
- this.ctx.chatContainer.addChild(new Spacer(1));
1147
- this.ctx.chatContainer.addChild(
1123
+ this.ctx.present([
1124
+ new Spacer(1),
1148
1125
  new Text(`${theme.fg("accent", `${theme.status.success} New session started with handoff context`)}`, 1, 1),
1149
- );
1126
+ ]);
1150
1127
  if (result.savedPath) {
1151
1128
  this.ctx.showStatus(`Handoff document saved to: ${result.savedPath}`);
1152
1129
  }
@@ -1160,7 +1137,6 @@ export class CommandController {
1160
1137
  } finally {
1161
1138
  handoffLoader.stop();
1162
1139
  this.ctx.statusContainer.clear();
1163
- this.ctx.editor.onEscape = originalOnEscape;
1164
1140
  }
1165
1141
  this.ctx.ui.requestRender();
1166
1142
  }
@@ -1272,6 +1248,8 @@ function formatAccountLabel(limit: UsageLimit, report: UsageReport, index: numbe
1272
1248
  if (email) return email;
1273
1249
  const accountId = (report.metadata?.accountId as string | undefined) ?? limit.scope.accountId;
1274
1250
  if (accountId) return accountId;
1251
+ const projectId = (report.metadata?.projectId as string | undefined) ?? limit.scope.projectId;
1252
+ if (projectId) return projectId;
1275
1253
  return `account ${index + 1}`;
1276
1254
  }
1277
1255
 
@@ -1280,6 +1258,8 @@ function formatUnlimitedReportLabel(report: UsageReport, index: number): string
1280
1258
  if (email) return email;
1281
1259
  const accountId = report.metadata?.accountId as string | undefined;
1282
1260
  if (accountId) return accountId;
1261
+ const projectId = report.metadata?.projectId as string | undefined;
1262
+ if (projectId) return projectId;
1283
1263
  return `account ${index + 1}`;
1284
1264
  }
1285
1265
 
@@ -1298,12 +1278,17 @@ function formatAccountHeaderRow(
1298
1278
  nowMs: number,
1299
1279
  columnWidth: number,
1300
1280
  uiTheme: typeof theme,
1281
+ activeAccount?: OAuthAccountIdentity,
1301
1282
  ): string[] {
1302
1283
  const parts = limits.map((limit, index) => {
1303
1284
  const reset = formatResetShort(limit, nowMs);
1285
+ const report = reports[index];
1286
+ const active = report !== undefined && limitMatchesActiveAccount(report, limit, activeAccount);
1287
+ const label = formatAccountLabel(limit, report, index);
1304
1288
  return {
1305
- label: formatAccountLabel(limit, reports[index], index),
1289
+ label: active ? `● ${label}` : label,
1306
1290
  suffix: reset ? `(${reset})` : "",
1291
+ active,
1307
1292
  };
1308
1293
  });
1309
1294
  const maxSuffixWidth = parts.reduce((max, p) => Math.max(max, visibleWidth(p.suffix)), 0);
@@ -1314,16 +1299,18 @@ function formatAccountHeaderRow(
1314
1299
  if (prefixBudget < 2) {
1315
1300
  return parts.map(p => {
1316
1301
  const full = p.suffix ? `${p.label} ${p.suffix}` : p.label;
1317
- return padColumn(truncateJobLabel(full, columnWidth), columnWidth);
1302
+ const cell = padColumn(truncateJobLabel(full, columnWidth), columnWidth);
1303
+ return p.active ? uiTheme.fg("accent", cell) : cell;
1318
1304
  });
1319
1305
  }
1320
1306
 
1321
1307
  return parts.map(p => {
1322
1308
  const prefix = truncateJobLabel(p.label, prefixBudget);
1323
1309
  const prefixCell = prefix + " ".repeat(prefixBudget - visibleWidth(prefix));
1324
- if (!p.suffix) return prefixCell + " ".repeat(maxSuffixWidth + gap);
1310
+ const styledPrefix = p.active ? uiTheme.fg("accent", prefixCell) : prefixCell;
1311
+ if (!p.suffix) return styledPrefix + " ".repeat(maxSuffixWidth + gap);
1325
1312
  const suffixPad = " ".repeat(maxSuffixWidth - visibleWidth(p.suffix));
1326
- return `${prefixCell} ${suffixPad}${uiTheme.fg("dim", p.suffix)}`;
1313
+ return `${styledPrefix} ${suffixPad}${uiTheme.fg("dim", p.suffix)}`;
1327
1314
  });
1328
1315
  }
1329
1316
 
@@ -1365,6 +1352,13 @@ function formatAggregateAmount(limits: UsageLimit[]): string {
1365
1352
  return `${formatNumber(remainingPct)}% free`;
1366
1353
  }
1367
1354
 
1355
+ // Count unique accounts from limit scopes — not limits.length.
1356
+ const uniqueAccountIds = new Set(
1357
+ limits.map(limit => limit.scope.accountId).filter((id): id is string => typeof id === "string" && id.length > 0),
1358
+ );
1359
+ if (uniqueAccountIds.size > 0) return `${uniqueAccountIds.size} ${uniqueAccountIds.size === 1 ? "acct" : "accts"}`;
1360
+ // No account IDs available — keep the pre-existing fallback so providers
1361
+ // that don't populate scope.accountId still show a summary.
1368
1362
  return `${limits.length} accts`;
1369
1363
  }
1370
1364
 
@@ -1436,6 +1430,7 @@ function renderUsageReports(
1436
1430
  uiTheme: typeof theme,
1437
1431
  nowMs: number,
1438
1432
  availableWidth: number,
1433
+ resolveActiveAccount?: (provider: string) => OAuthAccountIdentity | undefined,
1439
1434
  ): string {
1440
1435
  const lines: string[] = [];
1441
1436
  const latestFetchedAt = Math.max(...reports.map(report => report.fetchedAt ?? 0));
@@ -1461,6 +1456,7 @@ function renderUsageReports(
1461
1456
  for (const { provider, providerReports } of providerEntries) {
1462
1457
  lines.push("");
1463
1458
  const providerName = formatProviderName(provider);
1459
+ const activeAccount = resolveActiveAccount?.(provider);
1464
1460
 
1465
1461
  const limitGroups = new Map<
1466
1462
  string,
@@ -1484,6 +1480,33 @@ function renderUsageReports(
1484
1480
  }
1485
1481
 
1486
1482
  lines.push(uiTheme.bold(uiTheme.fg("accent", providerName)));
1483
+ const activeAccountLabel = activeAccount?.email ?? activeAccount?.accountId ?? activeAccount?.projectId;
1484
+ if (activeAccountLabel) {
1485
+ lines.push(` ${uiTheme.fg("accent", "in use by this session:")} ${activeAccountLabel}`);
1486
+ }
1487
+
1488
+ const resetAccountLines: string[] = [];
1489
+ for (const report of providerReports) {
1490
+ const count = report.resetCredits?.availableCount ?? 0;
1491
+ if (count <= 0) continue;
1492
+ const label =
1493
+ (report.metadata?.email as string | undefined) ??
1494
+ (report.metadata?.accountId as string | undefined) ??
1495
+ "account";
1496
+ const isActive =
1497
+ !!activeAccount &&
1498
+ ((!!activeAccount.accountId && activeAccount.accountId === report.metadata?.accountId) ||
1499
+ (!!activeAccount.email && activeAccount.email === report.metadata?.email));
1500
+ resetAccountLines.push(
1501
+ ` • ${label}: ${count} saved reset${count === 1 ? "" : "s"}${isActive ? " (active)" : ""}`,
1502
+ );
1503
+ }
1504
+ if (resetAccountLines.length > 0) {
1505
+ lines.push(
1506
+ ` ${uiTheme.fg("accent", "Saved rate-limit resets")} ${uiTheme.fg("dim", "(/usage reset to spend)")}`,
1507
+ );
1508
+ for (const line of resetAccountLines) lines.push(uiTheme.fg("dim", line));
1509
+ }
1487
1510
 
1488
1511
  const renderableGroups = Array.from(limitGroups.values()).map(group => {
1489
1512
  const entries = group.limits.map((limit, index) => ({
@@ -1513,7 +1536,14 @@ function renderUsageReports(
1513
1536
 
1514
1537
  const windowSuffix = formatWindowSuffix(group.label, group.windowLabel, uiTheme);
1515
1538
  lines.push(`${statusIcon} ${uiTheme.bold(group.label)} ${windowSuffix}`.trim());
1516
- const accountLabels = formatAccountHeaderRow(sortedLimits, sortedReports, nowMs, sectionColumnWidth, uiTheme);
1539
+ const accountLabels = formatAccountHeaderRow(
1540
+ sortedLimits,
1541
+ sortedReports,
1542
+ nowMs,
1543
+ sectionColumnWidth,
1544
+ uiTheme,
1545
+ activeAccount,
1546
+ );
1517
1547
  lines.push(` ${accountLabels.join(" ")}`.trimEnd());
1518
1548
  const bars = sortedLimits.map(limit =>
1519
1549
  padColumn(renderUsageBar(limit, uiTheme, sectionColumnWidth), sectionColumnWidth),