@prometheus-ai/agent 0.5.4 → 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 (1145) hide show
  1. package/CHANGELOG.md +30 -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/grievances-cli.d.ts +1 -1
  37. package/dist/types/cli/list-models.d.ts +6 -14
  38. package/dist/types/cli/models-cli.d.ts +49 -0
  39. package/dist/types/cli/session-picker.d.ts +1 -1
  40. package/dist/types/cli/setup-cli.d.ts +1 -1
  41. package/dist/types/cli/setup-model-picker.d.ts +14 -0
  42. package/dist/types/cli/startup-cwd.d.ts +2 -0
  43. package/dist/types/cli/update-cli.d.ts +13 -40
  44. package/dist/types/cli/usage-cli.d.ts +81 -0
  45. package/dist/types/cli-commands.d.ts +12 -0
  46. package/dist/types/collab/crypto.d.ts +7 -0
  47. package/dist/types/collab/guest.d.ts +37 -0
  48. package/dist/types/collab/host.d.ts +29 -0
  49. package/dist/types/collab/protocol.d.ts +119 -0
  50. package/dist/types/collab/relay-client.d.ts +22 -0
  51. package/dist/types/commands/bench.d.ts +29 -0
  52. package/dist/types/commands/gallery.d.ts +47 -0
  53. package/dist/types/commands/install.d.ts +1 -1
  54. package/dist/types/commands/join.d.ts +12 -0
  55. package/dist/types/commands/launch.d.ts +8 -4
  56. package/dist/types/commands/models.d.ts +33 -0
  57. package/dist/types/commands/read.d.ts +1 -1
  58. package/dist/types/commands/say.d.ts +24 -0
  59. package/dist/types/commands/token.d.ts +25 -0
  60. package/dist/types/commands/usage.d.ts +34 -0
  61. package/dist/types/commit/agentic/tools/analyze-file.d.ts +1 -1
  62. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +1 -1
  63. package/dist/types/commit/agentic/tools/git-hunk.d.ts +1 -1
  64. package/dist/types/commit/agentic/tools/git-overview.d.ts +1 -1
  65. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +1 -1
  66. package/dist/types/commit/agentic/tools/propose-commit.d.ts +1 -1
  67. package/dist/types/commit/agentic/tools/recent-commits.d.ts +1 -1
  68. package/dist/types/commit/agentic/tools/schemas.d.ts +1 -1
  69. package/dist/types/commit/agentic/tools/split-commit.d.ts +1 -1
  70. package/dist/types/commit/analysis/conventional.d.ts +2 -2
  71. package/dist/types/commit/analysis/summary.d.ts +2 -2
  72. package/dist/types/commit/changelog/generate.d.ts +3 -3
  73. package/dist/types/commit/changelog/index.d.ts +2 -2
  74. package/dist/types/commit/map-reduce/index.d.ts +3 -3
  75. package/dist/types/commit/map-reduce/map-phase.d.ts +2 -2
  76. package/dist/types/commit/map-reduce/reduce-phase.d.ts +2 -2
  77. package/dist/types/commit/model-selection.d.ts +10 -4
  78. package/dist/types/commit/shared-llm.d.ts +1 -1
  79. package/dist/types/config/api-key-resolver.d.ts +43 -0
  80. package/dist/types/config/append-only-context-mode.d.ts +2 -1
  81. package/dist/types/config/keybindings.d.ts +12 -7
  82. package/dist/types/config/model-discovery.d.ts +57 -0
  83. package/dist/types/config/model-equivalence.d.ts +1 -1
  84. package/dist/types/config/model-registry.d.ts +86 -222
  85. package/dist/types/config/model-resolver.d.ts +43 -12
  86. package/dist/types/config/model-roles.d.ts +29 -0
  87. package/dist/types/config/models-config-schema.d.ts +536 -43
  88. package/dist/types/config/models-config.d.ts +391 -0
  89. package/dist/types/config/settings-schema.d.ts +1202 -324
  90. package/dist/types/config/settings.d.ts +15 -3
  91. package/dist/types/dap/config.d.ts +14 -1
  92. package/dist/types/dap/types.d.ts +10 -0
  93. package/dist/types/debug/log-viewer.d.ts +1 -1
  94. package/dist/types/debug/raw-sse.d.ts +1 -1
  95. package/dist/types/debug/report-bundle.d.ts +3 -0
  96. package/dist/types/debug/terminal-info.d.ts +0 -1
  97. package/dist/types/discovery/at-imports.d.ts +15 -0
  98. package/dist/types/discovery/prometheus-extension-roots.d.ts +7 -7
  99. package/dist/types/edit/diff.d.ts +3 -2
  100. package/dist/types/edit/file-snapshot-store.d.ts +18 -0
  101. package/dist/types/edit/hashline/noop-loop-guard.d.ts +72 -0
  102. package/dist/types/edit/hashline/params.d.ts +1 -1
  103. package/dist/types/edit/index.d.ts +0 -1
  104. package/dist/types/edit/modes/apply-patch.d.ts +1 -1
  105. package/dist/types/edit/modes/patch.d.ts +1 -1
  106. package/dist/types/edit/modes/replace.d.ts +1 -1
  107. package/dist/types/edit/renderer.d.ts +1 -0
  108. package/dist/types/eval/__tests__/completion-bridge.test.d.ts +1 -0
  109. package/dist/types/eval/__tests__/helpers-local-roots.test.d.ts +1 -0
  110. package/dist/types/eval/__tests__/js-context-manager.test.d.ts +1 -0
  111. package/dist/types/eval/backend.d.ts +7 -2
  112. package/dist/types/eval/bridge-timeout.d.ts +1 -1
  113. package/dist/types/eval/completion-bridge.d.ts +25 -0
  114. package/dist/types/eval/idle-timeout.d.ts +1 -5
  115. package/dist/types/eval/js/context-manager.d.ts +1 -0
  116. package/dist/types/eval/js/executor.d.ts +2 -0
  117. package/dist/types/eval/js/index.d.ts +1 -1
  118. package/dist/types/eval/js/shared/helpers.d.ts +7 -1
  119. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -6
  120. package/dist/types/eval/js/shared/runtime.d.ts +6 -1
  121. package/dist/types/eval/js/worker-protocol.d.ts +6 -0
  122. package/dist/types/eval/py/__tests__/prelude.test.d.ts +1 -0
  123. package/dist/types/eval/py/executor.d.ts +12 -0
  124. package/dist/types/eval/py/index.d.ts +1 -1
  125. package/dist/types/eval/py/kernel.d.ts +6 -1
  126. package/dist/types/eval/py/runtime.d.ts +9 -0
  127. package/dist/types/exa/index.d.ts +1 -19
  128. package/dist/types/exa/mcp-client.d.ts +10 -3
  129. package/dist/types/exa/types.d.ts +0 -83
  130. package/dist/types/exec/bash-executor.d.ts +7 -0
  131. package/dist/types/export/custom-share.d.ts +1 -2
  132. package/dist/types/export/html/index.d.ts +39 -0
  133. package/dist/types/export/html/template-js.d.ts +2 -0
  134. package/dist/types/export/share.d.ts +61 -0
  135. package/dist/types/export/ttsr.d.ts +14 -0
  136. package/dist/types/extensibility/custom-commands/types.d.ts +9 -4
  137. package/dist/types/extensibility/custom-tools/loader.d.ts +30 -4
  138. package/dist/types/extensibility/custom-tools/types.d.ts +16 -8
  139. package/dist/types/extensibility/extensions/index.d.ts +1 -1
  140. package/dist/types/extensibility/extensions/loader.d.ts +20 -1
  141. package/dist/types/extensibility/extensions/model-api.d.ts +17 -0
  142. package/dist/types/extensibility/extensions/runner.d.ts +5 -2
  143. package/dist/types/extensibility/extensions/types.d.ts +72 -11
  144. package/dist/types/extensibility/hooks/index.d.ts +2 -1
  145. package/dist/types/extensibility/hooks/loader.d.ts +1 -1
  146. package/dist/types/extensibility/hooks/types.d.ts +11 -5
  147. package/dist/types/extensibility/{legacy-pi-ai-shim.d.ts → legacy-package-ai-shim.d.ts} +2 -2
  148. package/dist/types/extensibility/plugins/{legacy-pi-compat.d.ts → legacy-package-compat.d.ts} +20 -3
  149. package/dist/types/extensibility/plugins/loader.d.ts +11 -0
  150. package/dist/types/extensibility/plugins/marketplace-auto-update.d.ts +8 -0
  151. package/dist/types/extensibility/plugins/types.d.ts +2 -2
  152. package/dist/types/extensibility/shared-events.d.ts +3 -3
  153. package/dist/types/extensibility/skills.d.ts +10 -0
  154. package/dist/types/extensibility/slash-commands.d.ts +1 -11
  155. package/dist/types/goals/guided-setup.d.ts +18 -0
  156. package/dist/types/goals/state.d.ts +1 -1
  157. package/dist/types/goals/tools/goal-tool.d.ts +1 -1
  158. package/dist/types/hindsight/mental-models.d.ts +17 -8
  159. package/dist/types/hindsight/transcript.d.ts +1 -1
  160. package/dist/types/index.d.ts +5 -0
  161. package/dist/types/internal-urls/artifact-protocol.d.ts +2 -2
  162. package/dist/types/internal-urls/history-protocol.d.ts +14 -0
  163. package/dist/types/internal-urls/index.d.ts +1 -0
  164. package/dist/types/internal-urls/local-protocol.d.ts +14 -2
  165. package/dist/types/internal-urls/types.d.ts +1 -1
  166. package/dist/types/irc/bus.d.ts +79 -0
  167. package/dist/types/lib/xai-http.d.ts +1 -1
  168. package/dist/types/lsp/client.d.ts +10 -0
  169. package/dist/types/lsp/config.d.ts +2 -2
  170. package/dist/types/lsp/edits.d.ts +9 -0
  171. package/dist/types/lsp/format-options.d.ts +32 -0
  172. package/dist/types/lsp/index.d.ts +2 -7
  173. package/dist/types/lsp/types.d.ts +13 -1
  174. package/dist/types/lsp/utils.d.ts +6 -2
  175. package/dist/types/main.d.ts +23 -8
  176. package/dist/types/mcp/json-rpc.d.ts +5 -0
  177. package/dist/types/mcp/manager.d.ts +8 -0
  178. package/dist/types/mcp/oauth-discovery.d.ts +6 -1
  179. package/dist/types/mcp/oauth-flow.d.ts +13 -3
  180. package/dist/types/mcp/startup-events.d.ts +11 -0
  181. package/dist/types/mcp/tool-bridge.d.ts +2 -0
  182. package/dist/types/mcp/transports/stdio.d.ts +13 -0
  183. package/dist/types/mcp/types.d.ts +2 -0
  184. package/dist/types/memories/index.d.ts +7 -15
  185. package/dist/types/memories/storage.d.ts +0 -10
  186. package/dist/types/memory-backend/index.d.ts +3 -1
  187. package/dist/types/memory-backend/local-backend.d.ts +4 -3
  188. package/dist/types/memory-backend/resolve.d.ts +2 -2
  189. package/dist/types/memory-backend/runtime.d.ts +4 -0
  190. package/dist/types/memory-backend/types.d.ts +67 -2
  191. package/dist/types/mnemopi/config.d.ts +31 -1
  192. package/dist/types/mnemopi/state.d.ts +40 -2
  193. package/dist/types/modes/acp/acp-agent.d.ts +1 -2
  194. package/dist/types/modes/components/agent-dashboard.d.ts +17 -1
  195. package/dist/types/modes/components/agent-hub.d.ts +82 -0
  196. package/dist/types/modes/components/assistant-message.d.ts +5 -12
  197. package/dist/types/modes/components/bash-execution.d.ts +1 -1
  198. package/dist/types/modes/components/chat-block.d.ts +64 -0
  199. package/dist/types/modes/components/collab-prompt-message.d.ts +10 -0
  200. package/dist/types/modes/components/compaction-summary-message.d.ts +25 -5
  201. package/dist/types/modes/components/copy-selector.d.ts +1 -1
  202. package/dist/types/modes/components/custom-editor.d.ts +49 -2
  203. package/dist/types/modes/components/custom-editor.test.d.ts +1 -0
  204. package/dist/types/modes/components/dynamic-border.d.ts +1 -1
  205. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +1 -1
  206. package/dist/types/modes/components/extensions/extension-list.d.ts +1 -1
  207. package/dist/types/modes/components/extensions/inspector-panel.d.ts +1 -1
  208. package/dist/types/modes/components/footer.d.ts +1 -1
  209. package/dist/types/modes/components/hook-editor.d.ts +5 -0
  210. package/dist/types/modes/components/hook-input.d.ts +4 -0
  211. package/dist/types/modes/components/hook-selector.d.ts +5 -7
  212. package/dist/types/modes/components/index.d.ts +1 -0
  213. package/dist/types/modes/components/late-diagnostics-message.d.ts +20 -0
  214. package/dist/types/modes/components/logout-account-selector.d.ts +8 -0
  215. package/dist/types/modes/components/mcp-add-wizard.d.ts +2 -1
  216. package/dist/types/modes/components/model-selector.d.ts +1 -1
  217. package/dist/types/modes/components/oauth-selector.d.ts +10 -1
  218. package/dist/types/modes/components/overlay-box.d.ts +17 -0
  219. package/dist/types/modes/components/plan-review-overlay.d.ts +61 -0
  220. package/dist/types/modes/components/plan-toc.d.ts +41 -0
  221. package/dist/types/modes/components/read-tool-group.d.ts +8 -0
  222. package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
  223. package/dist/types/modes/components/segment-track.d.ts +11 -6
  224. package/dist/types/modes/components/session-selector.d.ts +18 -9
  225. package/dist/types/modes/components/settings-defs.d.ts +9 -2
  226. package/dist/types/modes/components/settings-selector.d.ts +17 -4
  227. package/dist/types/modes/components/snapcompact-shape-preview.d.ts +31 -0
  228. package/dist/types/modes/components/status-line/component.d.ts +61 -0
  229. package/dist/types/modes/components/status-line/index.d.ts +1 -0
  230. package/dist/types/modes/components/status-line/types.d.ts +47 -3
  231. package/dist/types/modes/components/tiny-title-download-progress.d.ts +1 -1
  232. package/dist/types/modes/components/tool-execution.d.ts +49 -2
  233. package/dist/types/modes/components/transcript-container.d.ts +76 -26
  234. package/dist/types/modes/components/tree-selector.d.ts +2 -2
  235. package/dist/types/modes/components/ttsr-notification.d.ts +5 -1
  236. package/dist/types/modes/components/usage-row.d.ts +3 -0
  237. package/dist/types/modes/components/user-message-selector.d.ts +1 -1
  238. package/dist/types/modes/components/user-message.d.ts +2 -1
  239. package/dist/types/modes/components/visual-truncate.d.ts +1 -1
  240. package/dist/types/modes/components/welcome.d.ts +12 -2
  241. package/dist/types/modes/controllers/command-controller.d.ts +3 -2
  242. package/dist/types/modes/controllers/event-controller.d.ts +7 -1
  243. package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -1
  244. package/dist/types/modes/controllers/input-controller.d.ts +25 -3
  245. package/dist/types/modes/controllers/mcp-command-controller.d.ts +8 -0
  246. package/dist/types/modes/controllers/selector-controller.d.ts +5 -2
  247. package/dist/types/modes/controllers/session-focus-controller.d.ts +31 -0
  248. package/dist/types/modes/controllers/streaming-reveal.d.ts +22 -0
  249. package/dist/types/modes/controllers/tan-command-controller.d.ts +6 -0
  250. package/dist/types/modes/controllers/tool-args-reveal.d.ts +43 -0
  251. package/dist/types/modes/gradient-highlight.d.ts +9 -4
  252. package/dist/types/modes/image-references.d.ts +14 -3
  253. package/dist/types/modes/index.d.ts +8 -7
  254. package/dist/types/modes/interactive-mode.d.ts +92 -16
  255. package/dist/types/modes/magic-keywords.d.ts +14 -2
  256. package/dist/types/modes/markdown-prose.d.ts +1 -1
  257. package/dist/types/modes/oauth-manual-input.d.ts +7 -0
  258. package/dist/types/modes/rpc/rpc-client.d.ts +48 -2
  259. package/dist/types/modes/rpc/rpc-mode.d.ts +67 -2
  260. package/dist/types/modes/rpc/rpc-subagents.d.ts +24 -0
  261. package/dist/types/modes/rpc/rpc-types.d.ts +113 -1
  262. package/dist/types/modes/runtime-init.d.ts +4 -0
  263. package/dist/types/modes/session-observer-registry.d.ts +9 -0
  264. package/dist/types/modes/setup-version.d.ts +11 -0
  265. package/dist/types/modes/setup-wizard/index.d.ts +7 -2
  266. package/dist/types/modes/setup-wizard/lazy.d.ts +2 -0
  267. package/dist/types/modes/setup-wizard/scenes/sign-in.d.ts +4 -1
  268. package/dist/types/modes/setup-wizard/scenes/types.d.ts +11 -2
  269. package/dist/types/modes/setup-wizard/scenes/web-search.d.ts +6 -2
  270. package/dist/types/modes/setup-wizard/wizard-overlay.d.ts +1 -1
  271. package/dist/types/modes/theme/theme.d.ts +42 -7
  272. package/dist/types/modes/types.d.ts +62 -13
  273. package/dist/types/modes/utils/context-usage.d.ts +6 -1
  274. package/dist/types/modes/utils/copy-targets.d.ts +21 -1
  275. package/dist/types/modes/utils/ui-helpers.d.ts +4 -4
  276. package/dist/types/modes/workflow.d.ts +3 -3
  277. package/dist/types/plan-mode/approved-plan.d.ts +27 -8
  278. package/dist/types/plan-mode/plan-protection.d.ts +4 -4
  279. package/dist/types/registry/agent-lifecycle.d.ts +51 -0
  280. package/dist/types/registry/agent-registry.d.ts +33 -5
  281. package/dist/types/sdk.d.ts +46 -4
  282. package/dist/types/secrets/index.d.ts +1 -1
  283. package/dist/types/secrets/obfuscator.d.ts +9 -3
  284. package/dist/types/session/agent-session.d.ts +136 -66
  285. package/dist/types/session/agent-storage.d.ts +2 -1
  286. package/dist/types/session/auth-broker-config.d.ts +4 -0
  287. package/dist/types/session/auth-storage.d.ts +1 -1
  288. package/dist/types/session/codex-auto-reset.d.ts +111 -0
  289. package/dist/types/session/indexed-session-storage.d.ts +3 -3
  290. package/dist/types/session/messages.d.ts +26 -15
  291. package/dist/types/session/session-context.d.ts +39 -0
  292. package/dist/types/session/session-entries.d.ts +159 -0
  293. package/dist/types/session/session-history-format.d.ts +12 -0
  294. package/dist/types/session/session-listing.d.ts +69 -0
  295. package/dist/types/session/session-loader.d.ts +16 -0
  296. package/dist/types/session/session-manager.d.ts +107 -440
  297. package/dist/types/session/session-migrations.d.ts +12 -0
  298. package/dist/types/session/session-paths.d.ts +25 -0
  299. package/dist/types/session/session-persistence.d.ts +8 -0
  300. package/dist/types/session/session-storage.d.ts +11 -7
  301. package/dist/types/session/snapcompact-inline.d.ts +145 -0
  302. package/dist/types/session/snapcompact-savings-journal.d.ts +46 -0
  303. package/dist/types/session/streaming-output.d.ts +46 -0
  304. package/dist/types/session/tool-choice-queue.d.ts +6 -6
  305. package/dist/types/session/yield-queue.d.ts +10 -1
  306. package/dist/types/slash-commands/acp-builtins.d.ts +16 -0
  307. package/dist/types/slash-commands/available-commands.d.ts +34 -0
  308. package/dist/types/slash-commands/builtin-registry.d.ts +10 -0
  309. package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
  310. package/dist/types/slash-commands/helpers/logout.d.ts +15 -0
  311. package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
  312. package/dist/types/slash-commands/helpers/stats-dashboard.d.ts +13 -0
  313. package/dist/types/slash-commands/types.d.ts +5 -9
  314. package/dist/types/ssh/connection-manager.d.ts +8 -0
  315. package/dist/types/stt/asr-client.d.ts +90 -0
  316. package/dist/types/stt/asr-protocol.d.ts +97 -0
  317. package/dist/types/stt/asr-worker.d.ts +2 -0
  318. package/dist/types/stt/downloader.d.ts +38 -0
  319. package/dist/types/stt/endpointer.d.ts +59 -0
  320. package/dist/types/stt/index.d.ts +5 -1
  321. package/dist/types/stt/models.d.ts +120 -0
  322. package/dist/types/stt/recorder.d.ts +17 -0
  323. package/dist/types/stt/stt-controller.d.ts +6 -0
  324. package/dist/types/stt/transcriber.d.ts +5 -7
  325. package/dist/types/stt/wav.d.ts +29 -0
  326. package/dist/types/system-prompt.d.ts +9 -1
  327. package/dist/types/task/commands.d.ts +1 -1
  328. package/dist/types/task/discovery.d.ts +1 -2
  329. package/dist/types/task/executor.d.ts +61 -2
  330. package/dist/types/task/index.d.ts +37 -6
  331. package/dist/types/task/output-manager.d.ts +0 -7
  332. package/dist/types/task/parallel.d.ts +2 -2
  333. package/dist/types/task/prometheus-command.d.ts +2 -2
  334. package/dist/types/task/render.d.ts +20 -7
  335. package/dist/types/task/repair-args.d.ts +8 -7
  336. package/dist/types/task/types.d.ts +109 -52
  337. package/dist/types/task/worktree.d.ts +2 -0
  338. package/dist/types/telemetry-export.d.ts +2 -2
  339. package/dist/types/thinking.d.ts +4 -0
  340. package/dist/types/tiny/models.d.ts +1 -1
  341. package/dist/types/tiny/title-client.d.ts +12 -1
  342. package/dist/types/tiny/title-protocol.d.ts +1 -0
  343. package/dist/types/tools/archive-reader.d.ts +5 -0
  344. package/dist/types/tools/ask.d.ts +6 -1
  345. package/dist/types/tools/ast-edit.d.ts +4 -1
  346. package/dist/types/tools/ast-grep.d.ts +4 -1
  347. package/dist/types/tools/bash.d.ts +5 -2
  348. package/dist/types/tools/browser/attach.d.ts +4 -4
  349. package/dist/types/tools/browser/cmux/cmux-tab.d.ts +202 -0
  350. package/dist/types/tools/browser/cmux/rpc.d.ts +70 -0
  351. package/dist/types/tools/browser/cmux/socket-client.d.ts +19 -0
  352. package/dist/types/tools/browser/registry.d.ts +17 -3
  353. package/dist/types/tools/browser/render.d.ts +2 -0
  354. package/dist/types/tools/browser/tab-protocol.d.ts +2 -0
  355. package/dist/types/tools/browser/tab-supervisor.d.ts +16 -4
  356. package/dist/types/tools/browser/tab-worker.d.ts +18 -1
  357. package/dist/types/tools/browser.d.ts +3 -1
  358. package/dist/types/tools/checkpoint.d.ts +1 -1
  359. package/dist/types/tools/conflict-detect.d.ts +16 -0
  360. package/dist/types/tools/debug.d.ts +1 -1
  361. package/dist/types/tools/eval-render.d.ts +1 -8
  362. package/dist/types/tools/eval.d.ts +9 -1
  363. package/dist/types/tools/fetch.d.ts +17 -8
  364. package/dist/types/tools/find.d.ts +1 -8
  365. package/dist/types/tools/gh-cache-invalidation.d.ts +6 -0
  366. package/dist/types/tools/gh.d.ts +4 -1
  367. package/dist/types/tools/github-cache.d.ts +19 -0
  368. package/dist/types/tools/grouped-file-output.d.ts +46 -12
  369. package/dist/types/tools/image-gen.d.ts +1 -1
  370. package/dist/types/tools/index.d.ts +89 -8
  371. package/dist/types/tools/inspect-image.d.ts +1 -1
  372. package/dist/types/tools/irc.d.ts +79 -39
  373. package/dist/types/tools/job.d.ts +8 -2
  374. package/dist/types/tools/learn.d.ts +51 -0
  375. package/dist/types/tools/manage-skill.d.ts +40 -0
  376. package/dist/types/tools/memory-edit.d.ts +2 -2
  377. package/dist/types/tools/memory-recall.d.ts +1 -1
  378. package/dist/types/tools/memory-reflect.d.ts +1 -1
  379. package/dist/types/tools/memory-render.d.ts +4 -1
  380. package/dist/types/tools/memory-retain.d.ts +1 -1
  381. package/dist/types/tools/path-utils.d.ts +17 -5
  382. package/dist/types/tools/plan-mode-guard.d.ts +18 -9
  383. package/dist/types/tools/read.d.ts +3 -2
  384. package/dist/types/tools/render-mermaid.d.ts +1 -1
  385. package/dist/types/tools/render-utils.d.ts +47 -27
  386. package/dist/types/tools/renderers.d.ts +10 -2
  387. package/dist/types/tools/report-tool-issue.d.ts +6 -1
  388. package/dist/types/tools/resolve.d.ts +1 -1
  389. package/dist/types/tools/review.d.ts +1 -1
  390. package/dist/types/tools/search-tool-bm25.d.ts +1 -1
  391. package/dist/types/tools/search.d.ts +7 -3
  392. package/dist/types/tools/sqlite-reader.d.ts +4 -0
  393. package/dist/types/tools/ssh.d.ts +2 -1
  394. package/dist/types/tools/todo.d.ts +7 -15
  395. package/dist/types/tools/tool-result.d.ts +2 -0
  396. package/dist/types/tools/tool-timeouts.d.ts +1 -1
  397. package/dist/types/tools/tts.d.ts +26 -1
  398. package/dist/types/tools/write.d.ts +6 -3
  399. package/dist/types/tools/yield.d.ts +8 -0
  400. package/dist/types/tts/downloader.d.ts +20 -0
  401. package/dist/types/tts/index.d.ts +8 -0
  402. package/dist/types/tts/models.d.ts +82 -0
  403. package/dist/types/tts/player.d.ts +32 -0
  404. package/dist/types/tts/runtime.d.ts +6 -0
  405. package/dist/types/tts/streaming-player.d.ts +41 -0
  406. package/dist/types/tts/tts-client.d.ts +93 -0
  407. package/dist/types/tts/tts-protocol.d.ts +95 -0
  408. package/dist/types/tts/tts-worker.d.ts +2 -0
  409. package/dist/types/tts/vocalizer.d.ts +41 -0
  410. package/dist/types/tts/wav.d.ts +8 -0
  411. package/dist/types/tui/code-cell.d.ts +0 -2
  412. package/dist/types/tui/hyperlink.d.ts +13 -7
  413. package/dist/types/tui/output-block.d.ts +16 -22
  414. package/dist/types/tui/status-line.d.ts +3 -0
  415. package/dist/types/utils/block-context.d.ts +35 -0
  416. package/dist/types/utils/changelog.d.ts +8 -0
  417. package/dist/types/utils/clipboard.d.ts +4 -3
  418. package/dist/types/utils/enhanced-paste.d.ts +20 -0
  419. package/dist/types/utils/file-mentions.d.ts +7 -0
  420. package/dist/types/utils/git.d.ts +22 -3
  421. package/dist/types/utils/image-loading.d.ts +30 -1
  422. package/dist/types/utils/session-color.d.ts +15 -3
  423. package/dist/types/utils/thinking-display.d.ts +17 -0
  424. package/dist/types/utils/title-generator.d.ts +3 -2
  425. package/dist/types/utils/tool-choice.d.ts +8 -0
  426. package/dist/types/utils/tools-manager.d.ts +2 -1
  427. package/dist/types/web/kagi.d.ts +2 -2
  428. package/dist/types/web/parallel.d.ts +3 -0
  429. package/dist/types/web/scrapers/github.d.ts +22 -0
  430. package/dist/types/web/scrapers/readthedocs.d.ts +3 -0
  431. package/dist/types/web/scrapers/types.d.ts +12 -0
  432. package/dist/types/web/search/index.d.ts +1 -1
  433. package/dist/types/web/search/providers/anthropic.d.ts +2 -1
  434. package/dist/types/web/search/providers/base.d.ts +2 -1
  435. package/dist/types/web/search/providers/brave.d.ts +2 -1
  436. package/dist/types/web/search/providers/codex.d.ts +2 -1
  437. package/dist/types/web/search/providers/exa.d.ts +2 -1
  438. package/dist/types/web/search/providers/gemini.d.ts +10 -6
  439. package/dist/types/web/search/providers/jina.d.ts +7 -2
  440. package/dist/types/web/search/providers/kagi.d.ts +7 -2
  441. package/dist/types/web/search/providers/kimi.d.ts +7 -2
  442. package/dist/types/web/search/providers/parallel.d.ts +2 -1
  443. package/dist/types/web/search/providers/perplexity.d.ts +10 -2
  444. package/dist/types/web/search/providers/searxng.d.ts +2 -1
  445. package/dist/types/web/search/providers/synthetic.d.ts +7 -3
  446. package/dist/types/web/search/providers/tavily.d.ts +2 -1
  447. package/dist/types/web/search/providers/zai.d.ts +2 -1
  448. package/dist/types/web/search/types.d.ts +1 -1
  449. package/examples/extensions/api-demo.ts +2 -2
  450. package/package.json +41 -15
  451. package/scripts/bench-guard.ts +71 -0
  452. package/scripts/build-binary.ts +24 -25
  453. package/scripts/bundle-dist.ts +97 -0
  454. package/scripts/generate-share-viewer.ts +34 -0
  455. package/scripts/prometheus +42 -0
  456. package/scripts/prometheus.ts +20 -0
  457. package/src/async/index.ts +0 -1
  458. package/src/async/job-manager.ts +106 -3
  459. package/src/auto-thinking/classifier.ts +2 -1
  460. package/src/autolearn/controller.ts +139 -0
  461. package/src/autolearn/managed-skills.ts +257 -0
  462. package/src/autoresearch/dashboard.ts +1 -1
  463. package/src/autoresearch/prompt-setup.md +6 -6
  464. package/src/autoresearch/prompt.md +6 -6
  465. package/src/autoresearch/state.ts +1 -1
  466. package/src/autoresearch/storage.ts +2 -1
  467. package/src/autoresearch/tools/init-experiment.ts +1 -1
  468. package/src/autoresearch/tools/log-experiment.ts +1 -1
  469. package/src/autoresearch/tools/run-experiment.ts +1 -1
  470. package/src/autoresearch/tools/update-notes.ts +1 -1
  471. package/src/autoresearch/types.ts +1 -1
  472. package/src/capability/context-file.ts +0 -14
  473. package/src/capability/fs.ts +10 -0
  474. package/src/capability/index.ts +1 -6
  475. package/src/capability/mcp.ts +1 -0
  476. package/src/capability/rule-buckets.ts +4 -2
  477. package/src/capability/rule.ts +10 -1
  478. package/src/capability/types.ts +0 -4
  479. package/src/cli/args.ts +66 -13
  480. package/src/cli/auth-broker-cli.ts +6 -7
  481. package/src/cli/auth-gateway-cli.ts +8 -9
  482. package/src/cli/bench-cli.ts +437 -0
  483. package/src/cli/claude-trace-cli.ts +28 -50
  484. package/src/cli/completion-gen.ts +28 -28
  485. package/src/cli/dry-balance-cli.ts +56 -23
  486. package/src/cli/gallery-cli.ts +231 -0
  487. package/src/cli/gallery-fixtures/agentic.ts +407 -0
  488. package/src/cli/gallery-fixtures/codeintel.ts +187 -0
  489. package/src/cli/gallery-fixtures/edit.ts +194 -0
  490. package/src/cli/gallery-fixtures/fs.ts +220 -0
  491. package/src/cli/gallery-fixtures/index.ts +40 -0
  492. package/src/cli/gallery-fixtures/interaction.ts +49 -0
  493. package/src/cli/gallery-fixtures/memory.ts +81 -0
  494. package/src/cli/gallery-fixtures/misc.ts +250 -0
  495. package/src/cli/gallery-fixtures/search.ts +213 -0
  496. package/src/cli/gallery-fixtures/shell.ts +167 -0
  497. package/src/cli/gallery-fixtures/types.ts +57 -0
  498. package/src/cli/gallery-fixtures/web.ts +158 -0
  499. package/src/cli/gallery-screenshot.ts +279 -0
  500. package/src/cli/grievances-cli.ts +1 -1
  501. package/src/cli/list-models.ts +16 -174
  502. package/src/cli/models-cli.ts +429 -0
  503. package/src/cli/session-picker.ts +2 -1
  504. package/src/cli/setup-cli.ts +148 -47
  505. package/src/cli/setup-model-picker.ts +43 -0
  506. package/src/cli/startup-cwd.ts +68 -0
  507. package/src/cli/update-cli.ts +144 -272
  508. package/src/cli/usage-cli.ts +774 -0
  509. package/src/cli-commands.ts +36 -0
  510. package/src/cli.ts +141 -32
  511. package/src/collab/crypto.ts +63 -0
  512. package/src/collab/guest.ts +451 -0
  513. package/src/collab/host.ts +565 -0
  514. package/src/collab/protocol.ts +241 -0
  515. package/src/collab/relay-client.ts +216 -0
  516. package/src/commands/bench.ts +42 -0
  517. package/src/commands/complete.ts +1 -1
  518. package/src/commands/gallery.ts +52 -0
  519. package/src/commands/install.ts +1 -1
  520. package/src/commands/join.ts +39 -0
  521. package/src/commands/launch.ts +8 -4
  522. package/src/commands/models.ts +61 -0
  523. package/src/commands/read.ts +6 -3
  524. package/src/commands/say.ts +102 -0
  525. package/src/commands/setup.ts +1 -1
  526. package/src/commands/token.ts +89 -0
  527. package/src/commands/usage.ts +43 -0
  528. package/src/commit/agentic/agent.ts +2 -1
  529. package/src/commit/agentic/tools/analyze-file.ts +42 -20
  530. package/src/commit/agentic/tools/git-file-diff.ts +1 -1
  531. package/src/commit/agentic/tools/git-hunk.ts +1 -1
  532. package/src/commit/agentic/tools/git-overview.ts +1 -1
  533. package/src/commit/agentic/tools/propose-changelog.ts +1 -1
  534. package/src/commit/agentic/tools/propose-commit.ts +1 -1
  535. package/src/commit/agentic/tools/recent-commits.ts +1 -1
  536. package/src/commit/agentic/tools/schemas.ts +1 -1
  537. package/src/commit/agentic/tools/split-commit.ts +9 -2
  538. package/src/commit/analysis/conventional.ts +2 -2
  539. package/src/commit/analysis/summary.ts +3 -3
  540. package/src/commit/changelog/generate.ts +3 -3
  541. package/src/commit/changelog/index.ts +2 -2
  542. package/src/commit/map-reduce/index.ts +3 -3
  543. package/src/commit/map-reduce/map-phase.ts +2 -2
  544. package/src/commit/map-reduce/reduce-phase.ts +2 -2
  545. package/src/commit/model-selection.ts +35 -12
  546. package/src/commit/pipeline.ts +4 -4
  547. package/src/commit/shared-llm.ts +1 -1
  548. package/src/config/api-key-resolver.ts +67 -0
  549. package/src/config/append-only-context-mode.ts +6 -12
  550. package/src/config/keybindings.ts +9 -4
  551. package/src/config/mcp-schema.json +4 -0
  552. package/src/config/model-discovery.ts +574 -0
  553. package/src/config/model-equivalence.ts +5 -4
  554. package/src/config/model-registry.ts +659 -1093
  555. package/src/config/model-resolver.ts +374 -174
  556. package/src/config/model-roles.ts +88 -0
  557. package/src/config/models-config-schema.ts +61 -9
  558. package/src/config/models-config.ts +130 -0
  559. package/src/config/settings-schema.ts +1441 -387
  560. package/src/config/settings.ts +261 -69
  561. package/src/dap/client.ts +138 -53
  562. package/src/dap/config.ts +41 -2
  563. package/src/dap/defaults.json +1 -0
  564. package/src/dap/session.ts +263 -161
  565. package/src/dap/types.ts +10 -0
  566. package/src/debug/index.ts +50 -60
  567. package/src/debug/log-viewer.ts +1 -1
  568. package/src/debug/protocol-probe.ts +1 -1
  569. package/src/debug/raw-sse-buffer.ts +7 -4
  570. package/src/debug/raw-sse.ts +1 -1
  571. package/src/debug/report-bundle.ts +9 -0
  572. package/src/debug/terminal-info.ts +0 -3
  573. package/src/discovery/agents-md.ts +25 -21
  574. package/src/discovery/agents.ts +9 -15
  575. package/src/discovery/at-imports.ts +273 -0
  576. package/src/discovery/builtin-rules/index.ts +4 -0
  577. package/src/discovery/builtin-rules/ts-no-test-timers.md +55 -0
  578. package/src/discovery/builtin-rules/ts-redundant-clear-guard.md +75 -0
  579. package/src/discovery/builtin.ts +45 -23
  580. package/src/discovery/claude-plugins.ts +44 -5
  581. package/src/discovery/helpers.ts +50 -9
  582. package/src/discovery/prometheus-extension-roots.ts +10 -10
  583. package/src/discovery/prometheus-plugins.ts +10 -10
  584. package/src/edit/diff.ts +191 -4
  585. package/src/edit/file-snapshot-store.ts +34 -1
  586. package/src/edit/hashline/block-resolver.ts +20 -1
  587. package/src/edit/hashline/diff.ts +123 -2
  588. package/src/edit/hashline/execute.ts +60 -4
  589. package/src/edit/hashline/filesystem.ts +2 -1
  590. package/src/edit/hashline/noop-loop-guard.ts +99 -0
  591. package/src/edit/hashline/params.ts +1 -1
  592. package/src/edit/index.ts +47 -18
  593. package/src/edit/modes/apply-patch.ts +1 -1
  594. package/src/edit/modes/patch.ts +59 -3
  595. package/src/edit/modes/replace.ts +58 -24
  596. package/src/edit/notebook.ts +22 -2
  597. package/src/edit/renderer.ts +315 -151
  598. package/src/eval/__tests__/agent-bridge.test.ts +105 -39
  599. package/src/eval/__tests__/budget-bridge.test.ts +1 -1
  600. package/src/eval/__tests__/completion-bridge.test.ts +412 -0
  601. package/src/eval/__tests__/helpers-local-roots.test.ts +58 -0
  602. package/src/eval/__tests__/js-context-manager.test.ts +241 -0
  603. package/src/eval/__tests__/llm-bridge.test.ts +6 -4
  604. package/src/eval/__tests__/shared-executors.test.ts +34 -92
  605. package/src/eval/agent-bridge.ts +39 -23
  606. package/src/eval/backend.ts +15 -2
  607. package/src/eval/bridge-timeout.ts +1 -1
  608. package/src/eval/completion-bridge.ts +203 -0
  609. package/src/eval/idle-timeout.ts +3 -10
  610. package/src/eval/js/context-manager.ts +108 -31
  611. package/src/eval/js/executor.ts +9 -2
  612. package/src/eval/js/index.ts +7 -3
  613. package/src/eval/js/shared/helpers.ts +59 -13
  614. package/src/eval/js/shared/local-module-loader.ts +2 -2
  615. package/src/eval/js/shared/prelude.txt +167 -30
  616. package/src/eval/js/shared/rewrite-imports.ts +58 -34
  617. package/src/eval/js/shared/runtime.ts +24 -16
  618. package/src/eval/js/tool-bridge.ts +4 -0
  619. package/src/eval/js/worker-core.ts +1 -0
  620. package/src/eval/js/worker-entry.ts +6 -0
  621. package/src/eval/js/worker-protocol.ts +6 -0
  622. package/src/eval/llm-bridge.ts +2 -1
  623. package/src/eval/py/__tests__/prelude.test.ts +19 -0
  624. package/src/eval/py/executor.ts +70 -26
  625. package/src/eval/py/index.ts +13 -4
  626. package/src/eval/py/kernel.ts +48 -9
  627. package/src/eval/py/prelude.py +73 -24
  628. package/src/eval/py/runner.py +133 -28
  629. package/src/eval/py/runtime.ts +38 -1
  630. package/src/exa/index.ts +1 -26
  631. package/src/exa/mcp-client.ts +10 -10
  632. package/src/exa/types.ts +0 -97
  633. package/src/exec/bash-executor.ts +104 -7
  634. package/src/export/custom-share.ts +1 -1
  635. package/src/export/html/index.ts +119 -17
  636. package/src/export/html/share-loader.js +102 -0
  637. package/src/export/html/template-js.ts +6 -0
  638. package/src/export/html/template.css +745 -459
  639. package/src/export/html/template.css.d.ts +2 -0
  640. package/src/export/html/template.html +6 -3
  641. package/src/export/html/template.js +277 -891
  642. package/src/export/html/tool-views.generated.d.ts +2 -0
  643. package/src/export/html/tool-views.generated.js +38 -0
  644. package/src/export/share.ts +269 -0
  645. package/src/export/ttsr.ts +122 -1
  646. package/src/extensibility/custom-commands/loader.ts +7 -4
  647. package/src/extensibility/custom-commands/types.ts +9 -4
  648. package/src/extensibility/custom-tools/loader.ts +51 -23
  649. package/src/extensibility/custom-tools/types.ts +16 -8
  650. package/src/extensibility/extensions/get-commands-handler.ts +2 -1
  651. package/src/extensibility/extensions/index.ts +1 -0
  652. package/src/extensibility/extensions/loader.ts +70 -20
  653. package/src/extensibility/extensions/model-api.ts +41 -0
  654. package/src/extensibility/extensions/runner.ts +12 -2
  655. package/src/extensibility/extensions/types.ts +83 -11
  656. package/src/extensibility/extensions/wrapper.ts +41 -5
  657. package/src/extensibility/hooks/index.ts +2 -1
  658. package/src/extensibility/hooks/loader.ts +6 -3
  659. package/src/extensibility/hooks/types.ts +11 -5
  660. package/src/extensibility/{legacy-pi-ai-shim.ts → legacy-package-ai-shim.ts} +2 -2
  661. package/src/extensibility/plugins/doctor.ts +1 -2
  662. package/src/extensibility/plugins/installer.ts +2 -2
  663. package/src/extensibility/plugins/{legacy-pi-compat.ts → legacy-package-compat.ts} +165 -77
  664. package/src/extensibility/plugins/loader.ts +34 -23
  665. package/src/extensibility/plugins/manager.ts +226 -95
  666. package/src/extensibility/plugins/marketplace-auto-update.ts +49 -0
  667. package/src/extensibility/plugins/types.ts +3 -3
  668. package/src/extensibility/shared-events.ts +3 -3
  669. package/src/extensibility/skills.ts +113 -9
  670. package/src/extensibility/slash-commands.ts +1 -97
  671. package/src/goals/guided-setup.ts +133 -0
  672. package/src/goals/state.ts +1 -1
  673. package/src/goals/tools/goal-tool.ts +38 -28
  674. package/src/hindsight/bank.ts +17 -2
  675. package/src/hindsight/client.ts +27 -2
  676. package/src/hindsight/mental-models.ts +59 -12
  677. package/src/hindsight/state.ts +12 -3
  678. package/src/hindsight/transcript.ts +1 -1
  679. package/src/index.ts +5 -0
  680. package/src/internal-urls/artifact-protocol.ts +11 -2
  681. package/src/internal-urls/docs-index.generated.ts +9 -7
  682. package/src/internal-urls/history-protocol.ts +113 -0
  683. package/src/internal-urls/index.ts +1 -0
  684. package/src/internal-urls/issue-pr-protocol.ts +22 -9
  685. package/src/internal-urls/local-protocol.ts +42 -7
  686. package/src/internal-urls/memory-protocol.ts +4 -31
  687. package/src/internal-urls/router.ts +3 -1
  688. package/src/internal-urls/types.ts +1 -1
  689. package/src/irc/bus.ts +303 -0
  690. package/src/lib/xai-http.ts +3 -3
  691. package/src/lsp/client.ts +245 -104
  692. package/src/lsp/clients/biome-client.ts +101 -39
  693. package/src/lsp/clients/lsp-linter-client.ts +2 -10
  694. package/src/lsp/config.ts +15 -5
  695. package/src/lsp/defaults.json +6 -0
  696. package/src/lsp/edits.ts +143 -95
  697. package/src/lsp/format-options.ts +119 -0
  698. package/src/lsp/index.ts +233 -93
  699. package/src/lsp/render.ts +11 -35
  700. package/src/lsp/types.ts +13 -1
  701. package/src/lsp/utils.ts +31 -12
  702. package/src/main.ts +396 -216
  703. package/src/mcp/config-writer.ts +7 -3
  704. package/src/mcp/json-rpc.ts +35 -5
  705. package/src/mcp/manager.ts +31 -16
  706. package/src/mcp/oauth-discovery.ts +34 -4
  707. package/src/mcp/oauth-flow.ts +61 -8
  708. package/src/mcp/render.ts +7 -1
  709. package/src/mcp/startup-events.ts +21 -0
  710. package/src/mcp/tool-bridge.ts +2 -0
  711. package/src/mcp/transports/stdio.ts +224 -4
  712. package/src/mcp/types.ts +2 -0
  713. package/src/memories/index.ts +174 -1128
  714. package/src/memories/storage.ts +2 -41
  715. package/src/memory-backend/index.ts +14 -1
  716. package/src/memory-backend/local-backend.ts +18 -3
  717. package/src/memory-backend/off-backend.ts +9 -0
  718. package/src/memory-backend/resolve.ts +4 -6
  719. package/src/memory-backend/runtime.ts +66 -0
  720. package/src/memory-backend/types.ts +82 -2
  721. package/src/mnemopi/backend.ts +220 -28
  722. package/src/mnemopi/config.ts +138 -33
  723. package/src/mnemopi/state.ts +91 -11
  724. package/src/modes/acp/acp-agent.ts +149 -142
  725. package/src/modes/acp/acp-event-mapper.ts +5 -1
  726. package/src/modes/components/agent-dashboard.ts +17 -11
  727. package/src/modes/components/agent-hub.ts +1346 -0
  728. package/src/modes/components/assistant-message.ts +190 -80
  729. package/src/modes/components/bash-execution.ts +1 -1
  730. package/src/modes/components/btw-panel.ts +5 -1
  731. package/src/modes/components/chat-block.ts +111 -0
  732. package/src/modes/components/collab-prompt-message.ts +30 -0
  733. package/src/modes/components/compaction-summary-message.ts +168 -33
  734. package/src/modes/components/copy-selector.ts +2 -45
  735. package/src/modes/components/custom-editor.test.ts +96 -0
  736. package/src/modes/components/custom-editor.ts +405 -118
  737. package/src/modes/components/custom-message.ts +1 -3
  738. package/src/modes/components/diff.ts +13 -2
  739. package/src/modes/components/dynamic-border.ts +12 -3
  740. package/src/modes/components/execution-shared.ts +1 -2
  741. package/src/modes/components/extensions/extension-dashboard.ts +8 -5
  742. package/src/modes/components/extensions/extension-list.ts +1 -1
  743. package/src/modes/components/extensions/inspector-panel.ts +7 -3
  744. package/src/modes/components/extensions/state-manager.ts +36 -41
  745. package/src/modes/components/footer.ts +4 -2
  746. package/src/modes/components/history-search.ts +1 -1
  747. package/src/modes/components/hook-editor.ts +8 -0
  748. package/src/modes/components/hook-input.ts +8 -0
  749. package/src/modes/components/hook-message.ts +1 -3
  750. package/src/modes/components/hook-selector.ts +6 -7
  751. package/src/modes/components/index.ts +1 -0
  752. package/src/modes/components/late-diagnostics-message.ts +60 -0
  753. package/src/modes/components/login-dialog.ts +1 -1
  754. package/src/modes/components/logout-account-selector.ts +130 -0
  755. package/src/modes/components/mcp-add-wizard.ts +14 -1
  756. package/src/modes/components/model-selector.ts +177 -75
  757. package/src/modes/components/oauth-selector.ts +102 -16
  758. package/src/modes/components/overlay-box.ts +108 -0
  759. package/src/modes/components/plan-review-overlay.ts +845 -0
  760. package/src/modes/components/plan-toc.ts +138 -0
  761. package/src/modes/components/plugin-settings.ts +22 -5
  762. package/src/modes/components/read-tool-group.ts +442 -39
  763. package/src/modes/components/reset-usage-selector.ts +161 -0
  764. package/src/modes/components/segment-track.ts +44 -7
  765. package/src/modes/components/session-selector.ts +97 -37
  766. package/src/modes/components/settings-defs.ts +28 -6
  767. package/src/modes/components/settings-selector.ts +541 -93
  768. package/src/modes/components/skill-message.ts +0 -1
  769. package/src/modes/components/snapcompact-shape-preview-doc.md +11 -0
  770. package/src/modes/components/snapcompact-shape-preview.ts +193 -0
  771. package/src/modes/components/{status-line.ts → status-line/component.ts} +205 -168
  772. package/src/modes/components/status-line/index.ts +1 -0
  773. package/src/modes/components/status-line/presets.ts +3 -3
  774. package/src/modes/components/status-line/segments.ts +26 -7
  775. package/src/modes/components/status-line/types.ts +40 -9
  776. package/src/modes/components/tiny-title-download-progress.ts +1 -1
  777. package/src/modes/components/tips.txt +7 -3
  778. package/src/modes/components/todo-reminder.ts +0 -2
  779. package/src/modes/components/tool-execution.ts +236 -103
  780. package/src/modes/components/transcript-container.ts +724 -99
  781. package/src/modes/components/tree-selector.ts +19 -4
  782. package/src/modes/components/ttsr-notification.ts +72 -30
  783. package/src/modes/components/usage-row.ts +18 -0
  784. package/src/modes/components/user-message-selector.ts +1 -1
  785. package/src/modes/components/user-message.ts +28 -12
  786. package/src/modes/components/visual-truncate.ts +1 -1
  787. package/src/modes/components/welcome.ts +80 -22
  788. package/src/modes/controllers/command-controller-shared.ts +7 -6
  789. package/src/modes/controllers/command-controller.ts +210 -180
  790. package/src/modes/controllers/event-controller.ts +352 -142
  791. package/src/modes/controllers/extension-ui-controller.ts +167 -208
  792. package/src/modes/controllers/input-controller.ts +778 -162
  793. package/src/modes/controllers/mcp-command-controller.ts +232 -80
  794. package/src/modes/controllers/selector-controller.ts +284 -145
  795. package/src/modes/controllers/session-focus-controller.ts +112 -0
  796. package/src/modes/controllers/ssh-command-controller.ts +2 -2
  797. package/src/modes/controllers/streaming-reveal.ts +295 -0
  798. package/src/modes/controllers/tan-command-controller.ts +173 -0
  799. package/src/modes/controllers/tool-args-reveal.ts +174 -0
  800. package/src/modes/gradient-highlight.ts +21 -9
  801. package/src/modes/image-references.ts +33 -7
  802. package/src/modes/index.ts +8 -25
  803. package/src/modes/interactive-mode.ts +840 -186
  804. package/src/modes/magic-keywords.ts +28 -6
  805. package/src/modes/markdown-prose.ts +1 -1
  806. package/src/modes/oauth-manual-input.ts +30 -3
  807. package/src/modes/rpc/rpc-client.ts +186 -3
  808. package/src/modes/rpc/rpc-mode.ts +318 -24
  809. package/src/modes/rpc/rpc-subagents.ts +265 -0
  810. package/src/modes/rpc/rpc-types.ts +111 -2
  811. package/src/modes/runtime-init.ts +28 -3
  812. package/src/modes/session-observer-registry.ts +72 -3
  813. package/src/modes/setup-version.ts +11 -0
  814. package/src/modes/setup-wizard/index.ts +16 -4
  815. package/src/modes/setup-wizard/lazy.ts +16 -0
  816. package/src/modes/setup-wizard/scenes/glyph.ts +25 -7
  817. package/src/modes/setup-wizard/scenes/providers.ts +45 -12
  818. package/src/modes/setup-wizard/scenes/sign-in.ts +14 -13
  819. package/src/modes/setup-wizard/scenes/splash.ts +1 -1
  820. package/src/modes/setup-wizard/scenes/theme.ts +29 -2
  821. package/src/modes/setup-wizard/scenes/types.ts +11 -2
  822. package/src/modes/setup-wizard/scenes/web-search.ts +26 -9
  823. package/src/modes/setup-wizard/wizard-overlay.ts +40 -3
  824. package/src/modes/shared.ts +2 -0
  825. package/src/modes/theme/defaults/dark-poimandres.json +1 -1
  826. package/src/modes/theme/defaults/light-poimandres.json +1 -1
  827. package/src/modes/theme/shimmer.ts +20 -9
  828. package/src/modes/theme/theme-schema.json +1 -1
  829. package/src/modes/theme/theme.ts +342 -82
  830. package/src/modes/types.ts +60 -18
  831. package/src/modes/utils/context-usage.ts +88 -8
  832. package/src/modes/utils/copy-targets.ts +133 -27
  833. package/src/modes/utils/hotkeys-markdown.ts +3 -2
  834. package/src/modes/utils/ui-helpers.ts +191 -110
  835. package/src/modes/workflow.ts +10 -10
  836. package/src/plan-mode/approved-plan.ts +66 -43
  837. package/src/plan-mode/plan-protection.ts +4 -4
  838. package/src/priority.json +5 -1
  839. package/src/prompts/agents/designer.md +1 -1
  840. package/src/prompts/agents/explore.md +3 -3
  841. package/src/prompts/agents/librarian.md +2 -3
  842. package/src/prompts/agents/oracle.md +2 -2
  843. package/src/prompts/agents/plan.md +6 -6
  844. package/src/prompts/agents/reviewer.md +1 -1
  845. package/src/prompts/agents/task.md +6 -5
  846. package/src/prompts/bench.md +12 -0
  847. package/src/prompts/ci-green-request.md +5 -7
  848. package/src/prompts/goals/goal-budget-limit.md +2 -2
  849. package/src/prompts/goals/goal-continuation.md +4 -4
  850. package/src/prompts/goals/goal-mode-active.md +1 -1
  851. package/src/prompts/goals/guided-goal-interview.md +8 -0
  852. package/src/prompts/goals/guided-goal-system.md +12 -0
  853. package/src/prompts/memories/consolidation.md +2 -7
  854. package/src/prompts/memories/consolidation_system.md +4 -0
  855. package/src/prompts/memories/identity_review.md +2 -2
  856. package/src/prompts/memories/read-path.md +11 -10
  857. package/src/prompts/memories/stage_one_system.md +2 -2
  858. package/src/prompts/review-custom-request.md +1 -1
  859. package/src/prompts/system/agent-creation-architect.md +2 -2
  860. package/src/prompts/system/auto-continue.md +1 -1
  861. package/src/prompts/system/autolearn-guidance-learn.md +1 -0
  862. package/src/prompts/system/autolearn-guidance.md +7 -0
  863. package/src/prompts/system/autolearn-nudge.md +3 -0
  864. package/src/prompts/system/background-tan-dispatch.md +8 -0
  865. package/src/prompts/system/btw-user.md +2 -2
  866. package/src/prompts/system/commit-message-system.md +13 -1
  867. package/src/prompts/system/custom-system-prompt.md +1 -1
  868. package/src/prompts/system/eager-task.md +7 -0
  869. package/src/prompts/system/eager-todo.md +11 -6
  870. package/src/prompts/system/empty-stop-retry.md +4 -6
  871. package/src/prompts/system/irc-autoreply.md +6 -0
  872. package/src/prompts/system/irc-incoming.md +3 -4
  873. package/src/prompts/system/manual-continue.md +7 -0
  874. package/src/prompts/system/omfg-user.md +3 -4
  875. package/src/prompts/system/orchestrate-notice.md +10 -10
  876. package/src/prompts/system/personalities/default.md +26 -0
  877. package/src/prompts/system/personalities/friendly.md +17 -0
  878. package/src/prompts/system/personalities/pragmatic.md +15 -0
  879. package/src/prompts/system/plan-mode-active.md +70 -77
  880. package/src/prompts/system/plan-mode-approved.md +1 -1
  881. package/src/prompts/system/plan-mode-subagent.md +4 -5
  882. package/src/prompts/system/plan-mode-tool-decision-reminder.md +1 -1
  883. package/src/prompts/system/project-prompt.md +2 -2
  884. package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
  885. package/src/prompts/system/snapcompact-context-stub.md +1 -0
  886. package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
  887. package/src/prompts/system/snapcompact-system-stub.md +1 -0
  888. package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
  889. package/src/prompts/system/subagent-system-prompt.md +7 -8
  890. package/src/prompts/system/system-prompt.md +28 -57
  891. package/src/prompts/system/tiny-title-system.md +1 -1
  892. package/src/prompts/system/title-marker-instruction.md +1 -0
  893. package/src/prompts/system/title-system-marker.md +16 -0
  894. package/src/prompts/system/title-system.md +16 -3
  895. package/src/prompts/system/ttsr-tool-reminder.md +1 -1
  896. package/src/prompts/system/workflow-notice.md +4 -4
  897. package/src/prompts/tools/ast-edit.md +1 -1
  898. package/src/prompts/tools/ast-grep.md +2 -2
  899. package/src/prompts/tools/bash.md +16 -8
  900. package/src/prompts/tools/browser.md +33 -43
  901. package/src/prompts/tools/debug.md +1 -1
  902. package/src/prompts/tools/eval.md +31 -51
  903. package/src/prompts/tools/find.md +0 -1
  904. package/src/prompts/tools/github.md +8 -7
  905. package/src/prompts/tools/goal.md +1 -1
  906. package/src/prompts/tools/image-gen.md +1 -1
  907. package/src/prompts/tools/inspect-image-system.md +1 -1
  908. package/src/prompts/tools/irc.md +39 -31
  909. package/src/prompts/tools/job.md +2 -1
  910. package/src/prompts/tools/learn.md +7 -0
  911. package/src/prompts/tools/lsp-late-diagnostic.md +8 -0
  912. package/src/prompts/tools/lsp.md +2 -2
  913. package/src/prompts/tools/manage-skill.md +9 -0
  914. package/src/prompts/tools/memory-edit.md +1 -1
  915. package/src/prompts/tools/patch.md +2 -2
  916. package/src/prompts/tools/read.md +31 -39
  917. package/src/prompts/tools/recall.md +1 -1
  918. package/src/prompts/tools/reflect.md +1 -1
  919. package/src/prompts/tools/render-mermaid.md +2 -2
  920. package/src/prompts/tools/replace.md +4 -10
  921. package/src/prompts/tools/rewind.md +2 -2
  922. package/src/prompts/tools/search-tool-bm25.md +1 -9
  923. package/src/prompts/tools/search.md +0 -1
  924. package/src/prompts/tools/ssh.md +0 -4
  925. package/src/prompts/tools/task-summary.md +5 -16
  926. package/src/prompts/tools/task.md +47 -31
  927. package/src/prompts/tools/todo.md +6 -3
  928. package/src/registry/agent-lifecycle.ts +218 -0
  929. package/src/registry/agent-registry.ts +46 -5
  930. package/src/sdk.ts +692 -219
  931. package/src/secrets/index.ts +8 -1
  932. package/src/secrets/obfuscator.ts +40 -19
  933. package/src/session/agent-session.ts +1577 -806
  934. package/src/session/agent-storage.ts +18 -9
  935. package/src/session/auth-broker-config.ts +30 -1
  936. package/src/session/auth-storage.ts +6 -0
  937. package/src/session/codex-auto-reset.ts +202 -0
  938. package/src/session/history-storage.ts +3 -2
  939. package/src/session/indexed-session-storage.ts +7 -10
  940. package/src/session/messages.ts +59 -95
  941. package/src/session/session-context.ts +352 -0
  942. package/src/session/session-dump-format.ts +12 -3
  943. package/src/session/session-entries.ts +194 -0
  944. package/src/session/session-history-format.ts +246 -0
  945. package/src/session/session-listing.ts +588 -0
  946. package/src/session/session-loader.ts +106 -0
  947. package/src/session/session-manager.ts +1003 -2920
  948. package/src/session/session-migrations.ts +78 -0
  949. package/src/session/session-paths.ts +193 -0
  950. package/src/session/session-persistence.ts +131 -0
  951. package/src/session/session-storage.ts +91 -30
  952. package/src/session/snapcompact-inline.ts +542 -0
  953. package/src/session/snapcompact-savings-journal.ts +113 -0
  954. package/src/session/streaming-output.ts +248 -11
  955. package/src/session/tool-choice-queue.ts +23 -11
  956. package/src/session/yield-queue.ts +20 -2
  957. package/src/slash-commands/acp-builtins.ts +25 -1
  958. package/src/slash-commands/available-commands.ts +105 -0
  959. package/src/slash-commands/builtin-registry.ts +575 -49
  960. package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
  961. package/src/slash-commands/helpers/context-report.ts +28 -1
  962. package/src/slash-commands/helpers/logout.ts +88 -0
  963. package/src/slash-commands/helpers/reset-usage.ts +66 -0
  964. package/src/slash-commands/helpers/stats-dashboard.ts +85 -0
  965. package/src/slash-commands/helpers/usage-report.ts +38 -3
  966. package/src/slash-commands/types.ts +5 -9
  967. package/src/ssh/connection-manager.ts +27 -0
  968. package/src/ssh/ssh-executor.ts +60 -4
  969. package/src/stt/asr-client.ts +520 -0
  970. package/src/stt/asr-protocol.ts +65 -0
  971. package/src/stt/asr-worker.ts +790 -0
  972. package/src/stt/downloader.ts +107 -47
  973. package/src/stt/endpointer.ts +259 -0
  974. package/src/stt/index.ts +5 -1
  975. package/src/stt/models.ts +150 -0
  976. package/src/stt/recorder.ts +254 -67
  977. package/src/stt/stt-controller.ts +201 -22
  978. package/src/stt/transcriber.ts +37 -68
  979. package/src/stt/wav.ts +173 -0
  980. package/src/system-prompt.ts +52 -10
  981. package/src/task/agents.ts +3 -4
  982. package/src/task/commands.ts +3 -2
  983. package/src/task/discovery.ts +17 -24
  984. package/src/task/executor.ts +1054 -529
  985. package/src/task/index.ts +862 -757
  986. package/src/task/output-manager.ts +0 -11
  987. package/src/task/parallel.ts +3 -3
  988. package/src/task/prometheus-command.ts +2 -2
  989. package/src/task/render.ts +529 -182
  990. package/src/task/repair-args.ts +21 -9
  991. package/src/task/types.ts +144 -66
  992. package/src/task/worktree.ts +64 -56
  993. package/src/telemetry-export.ts +27 -9
  994. package/src/thinking.ts +9 -7
  995. package/src/tiny/models.ts +2 -2
  996. package/src/tiny/text.ts +5 -1
  997. package/src/tiny/title-client.ts +72 -20
  998. package/src/tiny/title-protocol.ts +1 -1
  999. package/src/tiny/worker.ts +23 -99
  1000. package/src/tool-discovery/tool-index.ts +2 -0
  1001. package/src/tools/archive-reader.ts +94 -2
  1002. package/src/tools/ask.ts +234 -177
  1003. package/src/tools/ast-edit.ts +136 -80
  1004. package/src/tools/ast-grep.ts +41 -45
  1005. package/src/tools/auto-generated-guard.ts +20 -3
  1006. package/src/tools/bash-interactive.ts +28 -8
  1007. package/src/tools/bash.ts +198 -35
  1008. package/src/tools/browser/attach.ts +26 -7
  1009. package/src/tools/browser/cmux/cmux-tab.ts +1264 -0
  1010. package/src/tools/browser/cmux/rpc.ts +156 -0
  1011. package/src/tools/browser/cmux/socket-client.ts +309 -0
  1012. package/src/tools/browser/launch.ts +11 -2
  1013. package/src/tools/browser/readable.ts +19 -2
  1014. package/src/tools/browser/registry.ts +52 -5
  1015. package/src/tools/browser/render.ts +13 -5
  1016. package/src/tools/browser/tab-protocol.ts +2 -0
  1017. package/src/tools/browser/tab-supervisor.ts +256 -34
  1018. package/src/tools/browser/tab-worker.ts +259 -91
  1019. package/src/tools/browser.ts +44 -2
  1020. package/src/tools/checkpoint.ts +1 -1
  1021. package/src/tools/conflict-detect.ts +50 -4
  1022. package/src/tools/debug.ts +27 -12
  1023. package/src/tools/eval-render.ts +32 -35
  1024. package/src/tools/eval.ts +26 -12
  1025. package/src/tools/fetch.ts +450 -99
  1026. package/src/tools/find.ts +182 -142
  1027. package/src/tools/gh-cache-invalidation.ts +255 -0
  1028. package/src/tools/gh-renderer.ts +104 -51
  1029. package/src/tools/gh.ts +232 -37
  1030. package/src/tools/github-cache.ts +97 -7
  1031. package/src/tools/grouped-file-output.ts +159 -52
  1032. package/src/tools/image-gen.ts +237 -132
  1033. package/src/tools/index.ts +147 -26
  1034. package/src/tools/inspect-image-renderer.ts +74 -45
  1035. package/src/tools/inspect-image.ts +12 -6
  1036. package/src/tools/irc.ts +626 -173
  1037. package/src/tools/job.ts +106 -29
  1038. package/src/tools/learn.ts +144 -0
  1039. package/src/tools/manage-skill.ts +104 -0
  1040. package/src/tools/memory-edit.ts +4 -4
  1041. package/src/tools/memory-recall.ts +7 -9
  1042. package/src/tools/memory-reflect.ts +5 -9
  1043. package/src/tools/memory-render.ts +23 -6
  1044. package/src/tools/memory-retain.ts +4 -4
  1045. package/src/tools/path-utils.ts +102 -48
  1046. package/src/tools/plan-mode-guard.ts +101 -40
  1047. package/src/tools/read.ts +475 -120
  1048. package/src/tools/render-mermaid.ts +1 -1
  1049. package/src/tools/render-utils.ts +132 -76
  1050. package/src/tools/renderers.ts +12 -1
  1051. package/src/tools/report-tool-issue.ts +14 -6
  1052. package/src/tools/resolve.ts +20 -3
  1053. package/src/tools/review.ts +2 -2
  1054. package/src/tools/search-tool-bm25.ts +37 -24
  1055. package/src/tools/search.ts +233 -115
  1056. package/src/tools/sqlite-reader.ts +26 -17
  1057. package/src/tools/ssh.ts +20 -14
  1058. package/src/tools/todo.ts +197 -191
  1059. package/src/tools/tool-result.ts +8 -0
  1060. package/src/tools/tool-timeouts.ts +1 -1
  1061. package/src/tools/tts.ts +205 -74
  1062. package/src/tools/write.ts +291 -155
  1063. package/src/tools/yield.ts +10 -1
  1064. package/src/tts/downloader.ts +64 -0
  1065. package/src/tts/index.ts +8 -0
  1066. package/src/tts/models.ts +137 -0
  1067. package/src/tts/player.ts +137 -0
  1068. package/src/tts/runtime.ts +21 -0
  1069. package/src/tts/streaming-player.ts +266 -0
  1070. package/src/tts/tts-client.ts +647 -0
  1071. package/src/tts/tts-protocol.ts +60 -0
  1072. package/src/tts/tts-worker.ts +505 -0
  1073. package/src/tts/vocalizer.ts +162 -0
  1074. package/src/tts/wav.ts +58 -0
  1075. package/src/tui/code-cell.ts +2 -7
  1076. package/src/tui/hyperlink.ts +40 -26
  1077. package/src/tui/output-block.ts +60 -108
  1078. package/src/tui/status-line.ts +5 -1
  1079. package/src/utils/block-context.ts +312 -0
  1080. package/src/utils/changelog.ts +27 -1
  1081. package/src/utils/clipboard.ts +91 -22
  1082. package/src/utils/commit-message-generator.ts +8 -3
  1083. package/src/utils/enhanced-paste.ts +230 -0
  1084. package/src/utils/file-mentions.ts +3 -1
  1085. package/src/utils/git.ts +315 -15
  1086. package/src/utils/image-loading.ts +65 -4
  1087. package/src/utils/session-color.ts +83 -9
  1088. package/src/utils/thinking-display.ts +37 -0
  1089. package/src/utils/title-generator.ts +73 -10
  1090. package/src/utils/tool-choice.ts +16 -0
  1091. package/src/utils/tools-manager.ts +19 -1
  1092. package/src/web/kagi.ts +28 -26
  1093. package/src/web/parallel.ts +7 -3
  1094. package/src/web/scrapers/arxiv.ts +1 -1
  1095. package/src/web/scrapers/github.ts +351 -3
  1096. package/src/web/scrapers/go-pkg.ts +1 -1
  1097. package/src/web/scrapers/iacr.ts +1 -1
  1098. package/src/web/scrapers/readthedocs.ts +1 -1
  1099. package/src/web/scrapers/twitter.ts +2 -1
  1100. package/src/web/scrapers/types.ts +87 -8
  1101. package/src/web/scrapers/wikipedia.ts +1 -1
  1102. package/src/web/scrapers/youtube.ts +9 -3
  1103. package/src/web/search/index.ts +15 -2
  1104. package/src/web/search/providers/anthropic.ts +62 -21
  1105. package/src/web/search/providers/base.ts +2 -1
  1106. package/src/web/search/providers/brave.ts +5 -2
  1107. package/src/web/search/providers/codex.ts +87 -51
  1108. package/src/web/search/providers/exa.ts +101 -10
  1109. package/src/web/search/providers/gemini.ts +49 -24
  1110. package/src/web/search/providers/jina.ts +15 -5
  1111. package/src/web/search/providers/kagi.ts +9 -2
  1112. package/src/web/search/providers/kimi.ts +45 -20
  1113. package/src/web/search/providers/parallel.ts +39 -24
  1114. package/src/web/search/providers/perplexity.ts +226 -63
  1115. package/src/web/search/providers/searxng.ts +19 -3
  1116. package/src/web/search/providers/synthetic.ts +16 -11
  1117. package/src/web/search/providers/tavily.ts +12 -9
  1118. package/src/web/search/providers/zai.ts +22 -9
  1119. package/src/web/search/render.ts +59 -64
  1120. package/src/web/search/types.ts +5 -1
  1121. package/dist/types/discovery/context-files.d.ts +0 -17
  1122. package/dist/types/exa/factory.d.ts +0 -13
  1123. package/dist/types/exa/render.d.ts +0 -19
  1124. package/dist/types/exa/researcher.d.ts +0 -9
  1125. package/dist/types/exa/search.d.ts +0 -9
  1126. package/dist/types/exa/websets.d.ts +0 -9
  1127. package/dist/types/export/html/template.generated.d.ts +0 -1
  1128. package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
  1129. package/dist/types/modes/components/status-line.d.ts +0 -77
  1130. package/dist/types/slash-commands/headless-plan.d.ts +0 -3
  1131. package/dist/types/stt/setup.d.ts +0 -18
  1132. package/scripts/generate-template.ts +0 -33
  1133. package/src/discovery/context-files.ts +0 -49
  1134. package/src/exa/factory.ts +0 -60
  1135. package/src/exa/render.ts +0 -244
  1136. package/src/exa/researcher.ts +0 -36
  1137. package/src/exa/search.ts +0 -47
  1138. package/src/exa/websets.ts +0 -248
  1139. package/src/export/html/template.generated.ts +0 -2
  1140. package/src/modes/components/session-observer-overlay.ts +0 -852
  1141. package/src/slash-commands/headless-plan.ts +0 -142
  1142. package/src/stt/setup.ts +0 -52
  1143. package/src/stt/transcribe.py +0 -70
  1144. /package/dist/types/extensibility/{legacy-pi-coding-agent-shim.d.ts → legacy-package-agent-shim.d.ts} +0 -0
  1145. /package/src/extensibility/{legacy-pi-coding-agent-shim.ts → legacy-package-agent-shim.ts} +0 -0
package/src/main.ts CHANGED
@@ -5,16 +5,14 @@
5
5
  * createAgentSession() options. The SDK does the heavy lifting.
6
6
  */
7
7
 
8
- import * as fs from "node:fs/promises";
8
+ import * as fsSync from "node:fs";
9
9
  import * as os from "node:os";
10
- import * as path from "node:path";
11
10
  import { createInterface } from "node:readline/promises";
12
11
  import { EventLoopKeepalive } from "@prometheus-ai/agent-core";
13
12
  import type { ImageContent } from "@prometheus-ai/ai";
14
13
  import {
15
14
  $env,
16
- $which,
17
- APP_NAME,
15
+ getLogPath,
18
16
  getProjectDir,
19
17
  logger,
20
18
  normalizePathForComparison,
@@ -24,16 +22,22 @@ import {
24
22
  } from "@prometheus-ai/utils";
25
23
  import chalk from "chalk";
26
24
  import { reset as resetCapabilities } from "./capability";
27
- import type { Args } from "./cli/args";
25
+ import { type Args, reportUnrecognizedFlags } from "./cli/args";
28
26
  import { applyExtensionFlags, type ExtensionFlagSink } from "./cli/extension-flags";
29
27
  import { processFileArguments } from "./cli/file-processor";
30
28
  import { buildInitialMessage } from "./cli/initial-message";
31
- import { runListModelsCommand } from "./cli/list-models";
32
29
  import { selectSession } from "./cli/session-picker";
33
- import { getSourceUpdateInfo, resolveSourceCheckoutFromPath } from "./cli/update-cli";
30
+ import { applyStartupCwd } from "./cli/startup-cwd";
34
31
  import { findConfigFile } from "./config";
35
- import { ModelRegistry, ModelsConfigFile } from "./config/model-registry";
36
- import { resolveCliModel, resolveModelRoleValue, resolveModelScope, type ScopedModel } from "./config/model-resolver";
32
+ import { ModelRegistry } from "./config/model-registry";
33
+ import {
34
+ getModelMatchPreferences,
35
+ resolveCliModel,
36
+ resolveModelRoleValue,
37
+ resolveModelScope,
38
+ type ScopedModel,
39
+ } from "./config/model-resolver";
40
+ import { ModelsConfigFile } from "./config/models-config";
37
41
  import { getDefault, type SettingPath, Settings, settings } from "./config/settings";
38
42
  import { initializeWithSettings } from "./discovery";
39
43
  import {
@@ -42,20 +46,14 @@ import {
42
46
  preloadPluginRoots,
43
47
  resolveActiveProjectRegistryPath,
44
48
  } from "./discovery/helpers";
45
- import { injectOmpExtensionCliRoots } from "./discovery/prometheus-extension-roots";
46
- import { exportFromFile } from "./export/html";
49
+ import { injectPrometheusExtensionCliRoots } from "./discovery/prometheus-extension-roots";
47
50
  import { ExtensionRunner } from "./extensibility/extensions/runner";
48
51
  import type { ExtensionUIContext } from "./extensibility/extensions/types";
49
- import {
50
- getInstalledPluginsRegistryPath,
51
- getMarketplacesCacheDir,
52
- getMarketplacesRegistryPath,
53
- getPluginsCacheDir,
54
- MarketplaceManager,
55
- } from "./extensibility/plugins/marketplace";
52
+ import { scheduleMarketplaceAutoUpdate } from "./extensibility/plugins/marketplace-auto-update";
56
53
  import type { MCPManager } from "./mcp";
57
- import { InteractiveMode, runAcpMode, runPrintMode, runRpcMode } from "./modes";
58
- import { ALL_SCENES, runSetupWizard, selectSetupScenes } from "./modes/setup-wizard";
54
+ import { InteractiveMode } from "./modes/interactive-mode";
55
+ import type { PrintModeOptions } from "./modes/print-mode";
56
+ import { CURRENT_SETUP_VERSION } from "./modes/setup-version";
59
57
  import { initTheme, stopThemeWatcher } from "./modes/theme/theme";
60
58
  import type { SubmittedUserInput } from "./modes/types";
61
59
  import {
@@ -67,29 +65,52 @@ import {
67
65
  } from "./sdk";
68
66
  import type { AgentSession } from "./session/agent-session";
69
67
  import type { AuthStorage } from "./session/auth-storage";
70
- import { resolveResumableSession, type SessionInfo, SessionManager } from "./session/session-manager";
71
- import { resolvePromptInput } from "./system-prompt";
68
+ import { resolveResumableSession, type SessionInfo } from "./session/session-listing";
69
+ import { SessionManager } from "./session/session-manager";
70
+ import { executeBuiltinSlashCommand } from "./slash-commands/builtin-registry";
71
+ import { discoverTitleSystemPromptFile, resolvePromptInput } from "./system-prompt";
72
72
  import { initTelemetryExport, isTelemetryExportEnabled } from "./telemetry-export";
73
73
  import { AUTO_THINKING } from "./thinking";
74
74
  import type { LspStartupServerInfo } from "./tools";
75
- import { getChangelogPath, getNewEntries, parseChangelog } from "./utils/changelog";
75
+ import {
76
+ getChangelogPath,
77
+ getNewEntries,
78
+ parseChangelog,
79
+ readLastChangelogVersion,
80
+ writeLastChangelogVersion,
81
+ } from "./utils/changelog";
76
82
  import { EventBus } from "./utils/event-bus";
77
83
 
84
+ type RunAcpMode = (createSession: AcpSessionFactory) => Promise<never>;
85
+ type RunPrintMode = (session: AgentSession, options: PrintModeOptions) => Promise<void>;
86
+ type RunRpcMode = (
87
+ session: AgentSession,
88
+ setToolUIContext?: (uiContext: ExtensionUIContext, hasUI: boolean) => void,
89
+ eventBus?: EventBus,
90
+ ) => Promise<never>;
91
+
92
+ function isStartupTimingEnabled(): boolean {
93
+ return Boolean($env.PROMETHEUS_TIMING || $env.PROMETHEUS_TIMING);
94
+ }
95
+
96
+ function maybeShowStartupSplash(options: {
97
+ isInteractive: boolean;
98
+ resuming: boolean;
99
+ quiet: boolean;
100
+ version: string;
101
+ }): void {
102
+ if (!options.isInteractive) return;
103
+ if (options.resuming || options.quiet) return;
104
+ if (isStartupTimingEnabled()) return;
105
+ if (!process.stdin.isTTY || !process.stdout.isTTY) return;
106
+ //process.stdout.write(`${chalk.dim(`prometheus ${options.version}`)}\n${chalk.dim("Initializing session…")}\n`);
107
+ }
108
+
78
109
  async function checkForNewVersion(currentVersion: string): Promise<string | undefined> {
79
110
  if (!settings.get("startup.checkUpdate")) {
80
111
  return;
81
112
  }
82
113
  try {
83
- const sourceDir = resolveSourceCheckoutFromPath($which(APP_NAME) ?? "");
84
- if (sourceDir) {
85
- const sourceUpdate = await getSourceUpdateInfo(sourceDir);
86
- if (sourceUpdate.behind && sourceUpdate.behind > 0) {
87
- const commitLabel = sourceUpdate.behind === 1 ? "commit" : "commits";
88
- return `${sourceUpdate.behind} upstream ${commitLabel}`;
89
- }
90
- return undefined;
91
- }
92
-
93
114
  const response = await fetch("https://registry.npmjs.org/@prometheus-ai/agent/latest");
94
115
  if (!response.ok) return undefined;
95
116
 
@@ -115,7 +136,7 @@ const HOST_DEFAULTED_SETTING_PATHS: SettingPath[] = [
115
136
  "task.isolation.merge",
116
137
  "task.isolation.commits",
117
138
  "task.eager",
118
- "task.simple",
139
+ "task.batch",
119
140
  "task.maxConcurrency",
120
141
  "task.maxRecursionDepth",
121
142
  "task.disabledAgents",
@@ -150,26 +171,106 @@ function applyAcpDefaultSettingOverrides(targetSettings: Settings = settings): v
150
171
 
151
172
  async function readPipedInput(): Promise<string | undefined> {
152
173
  if (process.stdin.isTTY !== false) return undefined;
174
+ // stdin is a pipe: a producer that never writes nor closes would block
175
+ // startup forever with zero output. Say what we're blocked on after 1s.
176
+ const notice = setTimeout(() => {
177
+ process.stderr.write(`${chalk.dim("Reading prompt from piped stdin (waiting for EOF; ctrl+c to abort)…")}\n`);
178
+ }, 1000);
179
+ notice.unref?.();
153
180
  try {
154
181
  const text = await Bun.stdin.text();
155
182
  if (text.trim().length === 0) return undefined;
156
183
  return text;
157
184
  } catch {
158
185
  return undefined;
186
+ } finally {
187
+ clearTimeout(notice);
159
188
  }
160
189
  }
161
190
 
191
+ // ---------------------------------------------------------------------------
192
+ // Startup watchdog
193
+ // ---------------------------------------------------------------------------
194
+ // Speculative-hang reporter: until startup hands off to a mode runner, print a
195
+ // stderr line every 10s naming the deepest in-flight startup phase. Turns
196
+ // zero-output indefinite hangs (stuck discovery read, network wait, stdin
197
+ // pipe) into self-diagnosing reports instead of "it just hangs" (see the
198
+ // PROMETHEUS_DEBUG_STARTUP markers for the synchronous-hang counterpart).
199
+
200
+ const STARTUP_WATCHDOG_INTERVAL_MS = 10_000;
201
+ let startupWatchdogTimer: NodeJS.Timeout | undefined;
202
+ let startupWatchdogActive = false;
203
+ let startupWatchdogStartedAt = 0;
204
+
205
+ function armStartupWatchdog(): void {
206
+ if (startupWatchdogTimer) return;
207
+ startupWatchdogTimer = setInterval(() => {
208
+ const elapsed = Math.round((Date.now() - startupWatchdogStartedAt) / 1000);
209
+ const phase = logger.openSpanPath().join(" > ") || "module load / pre-phase work";
210
+ process.stderr.write(
211
+ `${chalk.yellow(`Still starting after ${elapsed}s`)}${chalk.dim(` — phase: ${phase}`)}\n` +
212
+ `${chalk.dim(` logs: ${getLogPath()} · re-run with PROMETHEUS_DEBUG_STARTUP=1 for streaming phase markers`)}\n`,
213
+ );
214
+ }, STARTUP_WATCHDOG_INTERVAL_MS);
215
+ startupWatchdogTimer.unref?.();
216
+ }
217
+
218
+ function disarmStartupWatchdog(): void {
219
+ if (!startupWatchdogTimer) return;
220
+ clearInterval(startupWatchdogTimer);
221
+ startupWatchdogTimer = undefined;
222
+ }
223
+
224
+ /** Begin watching startup (idempotent). */
225
+ function startStartupWatchdog(): void {
226
+ startupWatchdogActive = true;
227
+ startupWatchdogStartedAt = Date.now();
228
+ armStartupWatchdog();
229
+ }
230
+
231
+ /** Permanently stop watching: a mode runner now owns the terminal. */
232
+ function stopStartupWatchdog(): void {
233
+ startupWatchdogActive = false;
234
+ disarmStartupWatchdog();
235
+ }
236
+
237
+ /** Pause while an interactive prompt legitimately waits on the user. */
238
+ function pauseStartupWatchdog(): void {
239
+ disarmStartupWatchdog();
240
+ }
241
+
242
+ /** Resume after an interactive prompt, if startup is still being watched. */
243
+ function resumeStartupWatchdog(): void {
244
+ if (startupWatchdogActive) armStartupWatchdog();
245
+ }
246
+
162
247
  export interface InteractiveModeNotify {
163
248
  kind: "warn" | "error" | "info";
164
249
  message: string;
165
250
  }
166
251
 
252
+ export function buildModelScopeNotification(
253
+ scopedModelsForDisplay: readonly Pick<ScopedModel, "model" | "thinkingLevel" | "explicitThinkingLevel">[],
254
+ startupQuiet: boolean,
255
+ ): InteractiveModeNotify | null {
256
+ if (startupQuiet || scopedModelsForDisplay.length === 0) {
257
+ return null;
258
+ }
259
+ const modelList = scopedModelsForDisplay
260
+ .map(scopedModel => {
261
+ const thinkingStr =
262
+ scopedModel.explicitThinkingLevel && scopedModel.thinkingLevel ? `:${scopedModel.thinkingLevel}` : "";
263
+ return `${scopedModel.model.id}${thinkingStr}`;
264
+ })
265
+ .join(", ");
266
+ return { kind: "info", message: `Model scope: ${modelList} (Ctrl+P to cycle)` };
267
+ }
167
268
  export async function submitInteractiveInput(
168
269
  mode: Pick<
169
270
  InteractiveMode,
170
271
  "markPendingSubmissionStarted" | "finishPendingSubmission" | "showError" | "checkShutdownRequested"
171
272
  >,
172
- session: Pick<AgentSession, "prompt" | "promptCustomMessage">,
273
+ session: Pick<AgentSession, "prompt" | "promptCustomMessage" | "isStreaming">,
173
274
  input: SubmittedUserInput,
174
275
  ): Promise<void> {
175
276
  if (input.cancelled) {
@@ -178,19 +279,32 @@ export async function submitInteractiveInput(
178
279
 
179
280
  try {
180
281
  using _keepalive = new EventLoopKeepalive();
181
- // Continue shortcuts submit an already-started empty prompt with no optimistic user message.
282
+ const streamingBehavior = session.isStreaming ? ("followUp" as const) : undefined;
283
+ // Continue shortcuts submit an already-started synthetic developer prompt with
284
+ // no optimistic user message.
182
285
  if (!input.started && !mode.markPendingSubmissionStarted(input)) {
183
286
  return;
184
287
  }
185
288
  if (input.customType) {
186
- await session.promptCustomMessage({
289
+ const message = {
187
290
  customType: input.customType,
188
291
  content: input.text,
189
292
  display: input.display ?? false,
190
- attribution: "agent",
191
- });
293
+ attribution: "agent" as const,
294
+ };
295
+ await (streamingBehavior
296
+ ? session.promptCustomMessage(message, { streamingBehavior })
297
+ : session.promptCustomMessage(message));
298
+ } else if (input.synthetic) {
299
+ // Synthetic continue shortcuts are hidden developer prompts. The streaming
300
+ // queue (#queueUserMessage) only carries user-attributed messages, so we do
301
+ // NOT pass streamingBehavior here: queueing would silently demote the
302
+ // developer directive to a visible user message. A synthetic submit while
303
+ // streaming keeps its prior behavior (rejected as busy) rather than changing
304
+ // its role.
305
+ await session.prompt(input.text, { synthetic: true, expandPromptTemplates: false });
192
306
  } else {
193
- await session.prompt(input.text, { images: input.images });
307
+ await session.prompt(input.text, { images: input.images, ...(streamingBehavior && { streamingBehavior }) });
194
308
  }
195
309
  } catch (error: unknown) {
196
310
  const errorMessage = error instanceof Error ? error.message : "Unknown error occurred";
@@ -263,6 +377,8 @@ async function runInteractiveMode(
263
377
  eventBus?: EventBus,
264
378
  initialMessage?: string,
265
379
  initialImages?: ImageContent[],
380
+ titleSystemPrompt?: string,
381
+ joinLink?: string,
266
382
  ): Promise<void> {
267
383
  const mode = new InteractiveMode(
268
384
  session,
@@ -272,19 +388,32 @@ async function runInteractiveMode(
272
388
  lspServers,
273
389
  mcpManager,
274
390
  eventBus,
391
+ titleSystemPrompt,
275
392
  );
276
393
 
277
- const setupScenes = await selectSetupScenes(settings.get("setupVersion"), ALL_SCENES, mode, {
278
- resuming,
279
- isTTY: process.stdin.isTTY && process.stdout.isTTY,
280
- setupWizardEnabled: settings.get("startup.setupWizard"),
281
- force: forceSetupWizard,
394
+ // Cold-launch gate: the full setup wizard (every scene + the overlay and
395
+ // their TUI/OAuth/search/theme deps) is heavy, yet the common case only needs
396
+ // to know whether the stored setup version is current. Lazy-load the wizard
397
+ // barrel only when setup is stale or forced; otherwise skip it entirely.
398
+ const storedSetupVersion = settings.get("setupVersion");
399
+ const setupWizard =
400
+ forceSetupWizard || storedSetupVersion < CURRENT_SETUP_VERSION ? await import("./modes/setup-wizard") : undefined;
401
+ const setupScenes = setupWizard
402
+ ? await setupWizard.selectSetupScenes(storedSetupVersion, setupWizard.ALL_SCENES, mode, {
403
+ resuming,
404
+ isTTY: process.stdin.isTTY && process.stdout.isTTY,
405
+ setupWizardEnabled: settings.get("startup.setupWizard"),
406
+ force: forceSetupWizard,
407
+ })
408
+ : [];
409
+
410
+ await mode.init({
411
+ suppressWelcomeIntro: resuming || setupScenes.length > 0,
412
+ clearInitialTerminalHistory: true,
282
413
  });
283
414
 
284
- await mode.init({ suppressWelcomeIntro: resuming || setupScenes.length > 0 });
285
-
286
- if (setupScenes.length > 0) {
287
- await runSetupWizard(mode, setupScenes);
415
+ if (setupWizard && setupScenes.length > 0) {
416
+ await setupWizard.runSetupWizard(mode, setupScenes);
288
417
  }
289
418
 
290
419
  versionCheckPromise
@@ -298,13 +427,12 @@ async function runInteractiveMode(
298
427
  })
299
428
  .catch(() => {});
300
429
 
301
- // Cold-launch cleanup: wipe the terminal scrollback before painting the
302
- // resumed/new transcript. The TUI's initial paint deliberately preserves
303
- // native scrollback (prior shell content), but on `prometheus`/`prometheus -c` that leaves
304
- // the previous run's welcome + transcript stacked above the fresh one. Every
305
- // in-process session load already clears via `clearTerminalHistory`; the cold
306
- // launch is the lone path that did not.
307
- mode.renderInitialMessages(undefined, { preserveExistingChat: true, clearTerminalHistory: true });
430
+ // Cold-launch cleanup: the first paint already clears native history, and this
431
+ // replay replaces the welcome/startup frame with the resumed/new transcript.
432
+ // Every in-process session load also uses `clearTerminalHistory`; cold launch
433
+ // follows the same clean-cutover path instead of preserving a previous run's
434
+ // transcript above the fresh one.
435
+ mode.renderInitialMessages({ preserveExistingChat: true, clearTerminalHistory: true });
308
436
 
309
437
  for (const notify of notifs) {
310
438
  if (!notify) {
@@ -319,6 +447,12 @@ async function runInteractiveMode(
319
447
  }
320
448
  }
321
449
 
450
+ // `prometheus join <link>`: dispatch through the same builtin path as a typed
451
+ // `/join` so collab guards and error rendering stay in one place.
452
+ if (joinLink !== undefined) {
453
+ await executeBuiltinSlashCommand(`/join ${joinLink}`, { ctx: mode });
454
+ }
455
+
322
456
  if (initialMessage !== undefined) {
323
457
  try {
324
458
  using _keepalive = new EventLoopKeepalive();
@@ -345,22 +479,88 @@ async function runInteractiveMode(
345
479
  }
346
480
  }
347
481
 
348
- type ForkSessionPromptResult = "accepted" | "declined" | "unavailable";
482
+ type SessionPromptResult = "accepted" | "declined" | "unavailable";
349
483
 
350
- type ForkSessionPrompt = (session: SessionInfo) => Promise<ForkSessionPromptResult>;
484
+ type SessionPrompt = (session: SessionInfo) => Promise<SessionPromptResult>;
351
485
 
352
- async function promptForkSession(session: SessionInfo): Promise<ForkSessionPromptResult> {
486
+ async function promptForkSession(session: SessionInfo): Promise<SessionPromptResult> {
353
487
  if (!process.stdin.isTTY) {
354
488
  return "unavailable";
355
489
  }
356
490
  const message = `Session found in different project: ${session.cwd}. Fork into current directory? [y/N] `;
491
+ pauseStartupWatchdog();
357
492
  const rl = createInterface({ input: process.stdin, output: process.stdout });
358
493
  try {
359
494
  const answer = (await rl.question(message)).trim().toLowerCase();
360
495
  return answer === "y" || answer === "yes" ? "accepted" : "declined";
361
496
  } finally {
362
497
  rl.close();
498
+ resumeStartupWatchdog();
499
+ }
500
+ }
501
+
502
+ async function promptMoveSession(session: SessionInfo): Promise<SessionPromptResult> {
503
+ if (!process.stdin.isTTY) {
504
+ return "unavailable";
505
+ }
506
+ const message = `Session's directory no longer exists (${session.cwd}). Move (re-root) it into the current directory? [Y/n] `;
507
+ pauseStartupWatchdog();
508
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
509
+ try {
510
+ const answer = (await rl.question(message)).trim().toLowerCase();
511
+ return answer === "" || answer === "y" || answer === "yes" ? "accepted" : "declined";
512
+ } finally {
513
+ rl.close();
514
+ resumeStartupWatchdog();
515
+ }
516
+ }
517
+
518
+ /**
519
+ * Friendly CLI failure raised by {@link createSessionManager} when the user's
520
+ * session-resolution flags (`--resume`/`--fork`/cross-project prompts) cannot
521
+ * be satisfied. {@link runRootCommand} catches it and prints a clean stderr
522
+ * message instead of letting it surface as `[Uncaught Exception]`
523
+ * (see issue #2084).
524
+ */
525
+ export class SessionResolutionError extends Error {
526
+ readonly hint?: string;
527
+ constructor(message: string, hint?: string) {
528
+ super(message);
529
+ this.name = "SessionResolutionError";
530
+ this.hint = hint;
531
+ }
532
+ }
533
+
534
+ type MissingCwdMoveResult =
535
+ | { status: "not-needed" }
536
+ | { status: "declined" }
537
+ | { status: "moved"; manager: SessionManager };
538
+
539
+ async function moveMissingCwdSessionIfNeeded(
540
+ sessionArg: string,
541
+ session: SessionInfo,
542
+ cwd: string,
543
+ sessionDir: string | undefined,
544
+ askToMoveSession: SessionPrompt,
545
+ ): Promise<MissingCwdMoveResult> {
546
+ const sourceCwd = session.cwd;
547
+ if (!sourceCwd || fsSync.existsSync(sourceCwd)) {
548
+ return { status: "not-needed" };
549
+ }
550
+
551
+ const movePromptResult = await askToMoveSession(session);
552
+ if (movePromptResult === "unavailable") {
553
+ throw new SessionResolutionError(
554
+ `Session "${sessionArg}" belongs to a directory that no longer exists (${sourceCwd}); run interactively to move it into the current project.`,
555
+ );
556
+ }
557
+ if (movePromptResult === "declined") {
558
+ return { status: "declined" };
363
559
  }
560
+
561
+ const manager = await SessionManager.open(session.path, sessionDir);
562
+ await manager.moveTo(cwd, sessionDir);
563
+ return { status: "moved", manager };
364
564
  }
365
565
 
366
566
  async function getChangelogForDisplay(parsed: Args): Promise<string | undefined> {
@@ -368,7 +568,7 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
368
568
  return undefined;
369
569
  }
370
570
 
371
- const lastVersion = settings.get("lastChangelogVersion");
571
+ const lastVersion = await readLastChangelogVersion();
372
572
  if (lastVersion === VERSION) {
373
573
  // Steady state: user already saw the current version's changelog. Skip the file read + parse.
374
574
  return undefined;
@@ -379,15 +579,13 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
379
579
 
380
580
  if (!lastVersion) {
381
581
  if (entries.length > 0) {
382
- settings.set("lastChangelogVersion", VERSION);
383
- await flushChangelogVersion();
582
+ await writeLastChangelogVersion(VERSION);
384
583
  return entries.map(e => e.content).join("\n\n");
385
584
  }
386
585
  } else {
387
586
  const newEntries = getNewEntries(entries, lastVersion);
388
587
  if (newEntries.length > 0) {
389
- settings.set("lastChangelogVersion", VERSION);
390
- await flushChangelogVersion();
588
+ await writeLastChangelogVersion(VERSION);
391
589
  return newEntries.map(e => e.content).join("\n\n");
392
590
  }
393
591
  }
@@ -395,24 +593,17 @@ async function getChangelogForDisplay(parsed: Args): Promise<string | undefined>
395
593
  return undefined;
396
594
  }
397
595
 
398
- async function flushChangelogVersion(): Promise<void> {
399
- try {
400
- await settings.flush();
401
- } catch (error: unknown) {
402
- logger.warn("Failed to persist lastChangelogVersion", { error });
403
- }
404
- }
405
-
406
596
  /** Resolves CLI session flags into an existing, forked, in-memory, or cancelled session manager. */
407
597
  export async function createSessionManager(
408
598
  parsed: Args,
409
599
  cwd: string,
410
600
  activeSettings: Settings = settings,
411
- askToForkSession: ForkSessionPrompt = promptForkSession,
601
+ askToForkSession: SessionPrompt = promptForkSession,
602
+ askToMoveSession: SessionPrompt = promptMoveSession,
412
603
  ): Promise<SessionManager | undefined> {
413
604
  if (parsed.fork) {
414
605
  if (parsed.noSession) {
415
- throw new Error("--fork requires session persistence");
606
+ throw new SessionResolutionError("--fork requires session persistence");
416
607
  }
417
608
  const forkSource = parsed.fork;
418
609
  if (forkSource.includes("/") || forkSource.includes("\\") || forkSource.endsWith(".jsonl")) {
@@ -420,7 +611,10 @@ export async function createSessionManager(
420
611
  }
421
612
  const match = await resolveResumableSession(forkSource, cwd, parsed.sessionDir);
422
613
  if (!match) {
423
- throw new Error(`Session "${forkSource}" not found.`);
614
+ throw new SessionResolutionError(
615
+ `Session "${forkSource}" not found.`,
616
+ "Run `prometheus --resume` without an argument to pick from recent sessions, or `prometheus` to start a new one.",
617
+ );
424
618
  }
425
619
  return await SessionManager.forkFrom(match.session.path, cwd, parsed.sessionDir);
426
620
  }
@@ -435,15 +629,46 @@ export async function createSessionManager(
435
629
  }
436
630
  const match = await resolveResumableSession(sessionArg, cwd, parsed.sessionDir);
437
631
  if (!match) {
438
- throw new Error(`Session "${sessionArg}" not found.`);
632
+ throw new SessionResolutionError(
633
+ `Session "${sessionArg}" not found.`,
634
+ "Run `prometheus --resume` without an argument to pick from recent sessions, or `prometheus` to start a new one.",
635
+ );
636
+ }
637
+ if (match.scope === "local") {
638
+ const moveResult = await moveMissingCwdSessionIfNeeded(
639
+ sessionArg,
640
+ match.session,
641
+ cwd,
642
+ parsed.sessionDir,
643
+ askToMoveSession,
644
+ );
645
+ if (moveResult.status === "moved") {
646
+ return moveResult.manager;
647
+ }
648
+ if (moveResult.status === "declined") {
649
+ return undefined;
650
+ }
439
651
  }
440
652
  if (match.scope === "global") {
441
653
  const normalizedCwd = normalizePathForComparison(cwd);
442
654
  const normalizedMatchCwd = normalizePathForComparison(match.session.cwd || cwd);
443
655
  if (normalizedCwd !== normalizedMatchCwd) {
656
+ const moveResult = await moveMissingCwdSessionIfNeeded(
657
+ sessionArg,
658
+ match.session,
659
+ cwd,
660
+ parsed.sessionDir,
661
+ askToMoveSession,
662
+ );
663
+ if (moveResult.status === "moved") {
664
+ return moveResult.manager;
665
+ }
666
+ if (moveResult.status === "declined") {
667
+ return undefined;
668
+ }
444
669
  const forkPromptResult = await askToForkSession(match.session);
445
670
  if (forkPromptResult === "unavailable") {
446
- throw new Error(
671
+ throw new SessionResolutionError(
447
672
  `Session "${sessionArg}" is in another project (${match.session.cwd}); run interactively to fork it into the current project.`,
448
673
  );
449
674
  }
@@ -481,59 +706,9 @@ export async function createSessionManager(
481
706
  return undefined;
482
707
  }
483
708
 
484
- async function maybeAutoChdir(parsed: Args): Promise<void> {
485
- if (parsed.allowHome || parsed.cwd) {
486
- return;
487
- }
488
-
489
- const home = os.homedir();
490
- if (!home) {
491
- return;
492
- }
493
-
494
- const normalizePath = normalizePathForComparison;
495
-
496
- const cwd = normalizePath(getProjectDir());
497
- const normalizedHome = normalizePath(home);
498
- if (cwd !== normalizedHome) {
499
- return;
500
- }
501
-
502
- const isDirectory = async (p: string) => {
503
- try {
504
- const s = await fs.stat(p);
505
- return s.isDirectory();
506
- } catch {
507
- return false;
508
- }
509
- };
510
-
511
- const candidates = [path.join(home, "tmp"), "/tmp", "/var/tmp"];
512
- for (const candidate of candidates) {
513
- try {
514
- if (!(await isDirectory(candidate))) {
515
- continue;
516
- }
517
- setProjectDir(candidate);
518
- return;
519
- } catch {
520
- // Try next candidate.
521
- }
522
- }
523
-
524
- try {
525
- const fallback = os.tmpdir();
526
- if (fallback && normalizePath(fallback) !== cwd && (await isDirectory(fallback))) {
527
- setProjectDir(fallback);
528
- }
529
- } catch {
530
- // Ignore fallback errors.
531
- }
532
- }
533
-
534
709
  /** Discover SYSTEM.md file if no CLI system prompt was provided */
535
710
  function discoverSystemPromptFile(): string | undefined {
536
- // Check project-local first (.prometheus/SYSTEM.md, then compatibility config directories).
711
+ // Check project-local first (.prometheus/SYSTEM.md, .prometheus/SYSTEM.md legacy)
537
712
  const projectPath = findConfigFile("SYSTEM.md", { user: false });
538
713
  if (projectPath) {
539
714
  return projectPath;
@@ -565,7 +740,7 @@ async function buildSessionOptions(
565
740
  sessionManager: SessionManager | undefined,
566
741
  modelRegistry: ModelRegistry,
567
742
  activeSettings: Settings,
568
- ): Promise<{ options: CreateAgentSessionOptions }> {
743
+ ): Promise<{ options: CreateAgentSessionOptions; titleSystemPrompt?: string }> {
569
744
  const options: CreateAgentSessionOptions = {
570
745
  cwd: parsed.cwd ?? getProjectDir(),
571
746
  autoApprove: parsed.autoApprove ?? false,
@@ -576,6 +751,8 @@ async function buildSessionOptions(
576
751
  const resolvedSystemPrompt = await resolvePromptInput(systemPromptSource, "system prompt");
577
752
  const appendPromptSource = parsed.appendSystemPrompt ?? discoverAppendSystemPromptFile();
578
753
  const resolvedAppendPrompt = await resolvePromptInput(appendPromptSource, "append system prompt");
754
+ const titleSystemPromptSource = discoverTitleSystemPromptFile();
755
+ const titleSystemPrompt = await resolvePromptInput(titleSystemPromptSource, "title system prompt");
579
756
 
580
757
  if (sessionManager) {
581
758
  options.sessionManager = sessionManager;
@@ -587,9 +764,7 @@ async function buildSessionOptions(
587
764
  // Model from CLI
588
765
  // - supports --provider <name> --model <pattern>
589
766
  // - supports --model <provider>/<pattern>
590
- const modelMatchPreferences = {
591
- usageOrder: activeSettings.getStorage()?.getModelUsageOrder(),
592
- };
767
+ const modelMatchPreferences = getModelMatchPreferences(activeSettings);
593
768
  if (parsed.model) {
594
769
  const resolved = resolveCliModel({
595
770
  cliProvider: parsed.provider,
@@ -723,13 +898,13 @@ async function buildSessionOptions(
723
898
  options.additionalExtensionPaths = [];
724
899
  }
725
900
 
726
- return { options };
901
+ return { options, titleSystemPrompt };
727
902
  }
728
903
 
729
904
  interface RunRootCommandDependencies {
730
905
  createAgentSession?: typeof createAgentSession;
731
906
  discoverAuthStorage?: typeof discoverAuthStorage;
732
- runAcpMode?: typeof runAcpMode;
907
+ runAcpMode?: RunAcpMode;
733
908
  settings?: Settings;
734
909
  forceSetupWizard?: boolean;
735
910
  }
@@ -740,52 +915,31 @@ export async function runRootCommand(
740
915
  deps: RunRootCommandDependencies = {},
741
916
  ): Promise<void> {
742
917
  logger.startTiming();
918
+ startStartupWatchdog();
743
919
 
744
920
  // Initialize theme early with defaults (CLI commands need symbols)
745
921
  // Will be re-initialized with user preferences later
746
922
  await logger.time("initTheme:initial", initTheme);
747
923
 
748
924
  const parsedArgs = parsed;
749
- await logger.time("maybeAutoChdir", maybeAutoChdir, parsedArgs);
925
+ await logger.time("applyStartupCwd", applyStartupCwd, parsedArgs);
750
926
 
751
927
  const notifs: (InteractiveModeNotify | null)[] = [];
752
928
 
753
929
  // Create AuthStorage and ModelRegistry upfront
754
- const authStorage = await logger.time("discoverModels", deps.discoverAuthStorage ?? discoverAuthStorage);
755
- const modelRegistry = new ModelRegistry(authStorage);
930
+ const authStorage = await logger.time("discoverAuthStorage", deps.discoverAuthStorage ?? discoverAuthStorage);
931
+ const modelRegistry = logger.time("modelRegistry:init", () => new ModelRegistry(authStorage));
756
932
 
757
933
  if (parsedArgs.version) {
758
934
  process.stdout.write(`${VERSION}\n`);
759
935
  process.exit(0);
760
936
  }
761
937
 
762
- if (parsedArgs.listModels !== undefined) {
763
- const settingsInstance = await logger.time("settings:init:list-models", Settings.init, {
764
- cwd: getProjectDir(),
765
- });
766
- await modelRegistry.refresh("online");
767
- const cliExtensionPaths = parsedArgs.noExtensions
768
- ? []
769
- : [...(parsedArgs.extensions ?? []), ...(parsedArgs.hooks ?? [])];
770
- const settingsExtensions = settingsInstance.get("extensions") ?? [];
771
- const disabledExtensionIds = settingsInstance.get("disabledExtensions") ?? [];
772
- const searchPattern = typeof parsedArgs.listModels === "string" ? parsedArgs.listModels : undefined;
773
- await runListModelsCommand({
774
- modelRegistry,
775
- cwd: getProjectDir(),
776
- additionalExtensionPaths: cliExtensionPaths,
777
- settingsExtensions,
778
- disabledExtensionIds,
779
- disableExtensionDiscovery: Boolean(parsedArgs.noExtensions),
780
- searchPattern,
781
- });
782
- process.exit(0);
783
- }
784
-
785
938
  if (parsedArgs.export) {
786
939
  let result: string;
787
940
  try {
788
941
  const outputPath = parsedArgs.messages.length > 0 ? parsedArgs.messages[0] : undefined;
942
+ const { exportFromFile } = await import("./export/html");
789
943
  result = await exportFromFile(parsedArgs.export, outputPath);
790
944
  } catch (error: unknown) {
791
945
  const message = error instanceof Error ? error.message : "Failed to export session";
@@ -819,16 +973,21 @@ export async function runRootCommand(
819
973
  if (!parsedArgs.noExtensions) {
820
974
  const cliExtensions = [...(parsedArgs.extensions ?? []), ...(parsedArgs.hooks ?? [])];
821
975
  if (cliExtensions.length > 0) {
822
- injectOmpExtensionCliRoots(cliExtensions, home, getProjectDir());
976
+ injectPrometheusExtensionCliRoots(cliExtensions, home, getProjectDir());
823
977
  }
824
978
  }
825
979
 
826
980
  let cwd = getProjectDir();
827
- const settingsInstance = deps.settings ?? (await logger.time("settings:init", Settings.init, { cwd }));
981
+ const settingsInstance =
982
+ deps.settings ?? (await logger.time("settings:init", Settings.init, { cwd, configFiles: parsedArgs.config }));
828
983
  if (parsedArgs.approvalMode) {
829
984
  // Runtime override (not persisted): every settings.get("tools.approvalMode") downstream
830
985
  // sees this value. The wrapper still honours --auto-approve / --yolo on top of it.
831
986
  settingsInstance.override("tools.approvalMode", parsedArgs.approvalMode);
987
+ } else if (parsedArgs.autoApprove) {
988
+ // --auto-approve / --yolo without an explicit --approval-mode: reflect in settings so
989
+ // setup-time checks (e.g. #wrapToolForAcpPermission) also see the yolo intent.
990
+ settingsInstance.override("tools.approvalMode", "yolo");
832
991
  }
833
992
  if (parsedArgs.mode === "rpc" || parsedArgs.mode === "rpc-ui") {
834
993
  applyRpcDefaultSettingOverrides(settingsInstance);
@@ -880,9 +1039,7 @@ export async function runRootCommand(
880
1039
 
881
1040
  let scopedModels: ScopedModel[] = [];
882
1041
  const modelPatterns = parsedArgs.models ?? settingsInstance.get("enabledModels");
883
- const modelMatchPreferences = {
884
- usageOrder: settingsInstance.getStorage()?.getModelUsageOrder(),
885
- };
1042
+ const modelMatchPreferences = getModelMatchPreferences(settingsInstance);
886
1043
  if (modelPatterns && modelPatterns.length > 0) {
887
1044
  scopedModels = await logger.time(
888
1045
  "resolveModelScope",
@@ -893,14 +1050,29 @@ export async function runRootCommand(
893
1050
  );
894
1051
  }
895
1052
 
896
- // Create session manager based on CLI flags
897
- let sessionManager = await logger.time(
898
- "createSessionManager",
899
- createSessionManager,
900
- parsedArgs,
901
- cwd,
902
- settingsInstance,
903
- );
1053
+ // Create session manager based on CLI flags. SessionResolutionError signals a
1054
+ // user-facing failure (unknown --resume/--fork id, non-interactive fork
1055
+ // prompt, --fork with --no-session): print + exit cleanly instead of letting
1056
+ // it surface as `[Uncaught Exception]` (see issue #2084).
1057
+ let sessionManager: SessionManager | undefined;
1058
+ try {
1059
+ sessionManager = await logger.time(
1060
+ "createSessionManager",
1061
+ createSessionManager,
1062
+ parsedArgs,
1063
+ cwd,
1064
+ settingsInstance,
1065
+ );
1066
+ } catch (error: unknown) {
1067
+ if (error instanceof SessionResolutionError) {
1068
+ process.stderr.write(`${chalk.red(`Error: ${error.message}`)}\n`);
1069
+ if (error.hint) {
1070
+ process.stderr.write(`${chalk.dim(error.hint)}\n`);
1071
+ }
1072
+ process.exit(1);
1073
+ }
1074
+ throw error;
1075
+ }
904
1076
 
905
1077
  // User declined the cross-project fork prompt — exit cleanly with a friendly
906
1078
  // message rather than letting the decline bubble up as an uncaught exception
@@ -925,10 +1097,12 @@ export async function runRootCommand(
925
1097
  }
926
1098
  startInAllScope = true;
927
1099
  }
1100
+ pauseStartupWatchdog();
928
1101
  const selected = await logger.time("selectSession", selectSession, folderSessions, {
929
1102
  allSessions: preloadedAllSessions,
930
1103
  startInAllScope,
931
1104
  });
1105
+ resumeStartupWatchdog();
932
1106
  if (!selected) {
933
1107
  process.stdout.write(`${chalk.dim("No session selected")}\n`);
934
1108
  return;
@@ -953,35 +1127,13 @@ export async function runRootCommand(
953
1127
 
954
1128
  await pluginPreloadPromise;
955
1129
 
956
- // Background marketplace auto-update — never blocks startup.
957
- const autoUpdate = settingsInstance.get("marketplace.autoUpdate");
958
- if (autoUpdate !== "off") {
959
- void (async () => {
960
- try {
961
- const mgr = new MarketplaceManager({
962
- marketplacesRegistryPath: getMarketplacesRegistryPath(),
963
- installedRegistryPath: getInstalledPluginsRegistryPath(),
964
- projectInstalledRegistryPath: (await resolveActiveProjectRegistryPath(getProjectDir())) ?? undefined,
965
- marketplacesCacheDir: getMarketplacesCacheDir(),
966
- pluginsCacheDir: getPluginsCacheDir(),
967
- clearPluginRootsCache: clearPluginRootsAndCaches,
968
- });
969
- await mgr.refreshStaleMarketplaces();
970
- const updates = await mgr.checkForUpdates();
971
- if (updates.length === 0) return;
972
- if (autoUpdate === "auto") {
973
- await mgr.upgradeAllPlugins();
974
- logger.debug(`Auto-upgraded ${updates.length} marketplace plugin(s)`);
975
- } else {
976
- logger.debug(`${updates.length} marketplace plugin update(s) available — /marketplace upgrade`);
977
- }
978
- } catch {
979
- // Silently ignore — network failure, corrupt data, offline.
980
- }
981
- })();
982
- }
1130
+ scheduleMarketplaceAutoUpdate({
1131
+ autoUpdate: settingsInstance.get("marketplace.autoUpdate"),
1132
+ resolveActiveProjectRegistryPath,
1133
+ clearPluginRootsCache: clearPluginRootsAndCaches,
1134
+ });
983
1135
 
984
- const { options: sessionOptions } = await logger.time(
1136
+ const { options: sessionOptions, titleSystemPrompt } = await logger.time(
985
1137
  "buildSessionOptions",
986
1138
  buildSessionOptions,
987
1139
  parsedArgs,
@@ -1001,7 +1153,7 @@ export async function runRootCommand(
1001
1153
  // Both are no-ops when OTEL_EXPORTER_OTLP_ENDPOINT is unset. An empty config
1002
1154
  // is enough to enable telemetry — content capture is governed by the
1003
1155
  // standard OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT env var.
1004
- initTelemetryExport();
1156
+ await logger.time("initTelemetryExport", initTelemetryExport);
1005
1157
  if (isTelemetryExportEnabled()) {
1006
1158
  sessionOptions.telemetry = {};
1007
1159
  }
@@ -1040,7 +1192,10 @@ export async function runRootCommand(
1040
1192
  rawArgs,
1041
1193
  createSession,
1042
1194
  });
1043
- await (deps.runAcpMode ?? runAcpMode)(createAcpSession);
1195
+ // Branch-only protocol runner: keep ACP server code out of normal interactive startup.
1196
+ const runAcpMode = deps.runAcpMode ?? (await import("./modes/acp/acp-mode")).runAcpMode;
1197
+ stopStartupWatchdog();
1198
+ await runAcpMode(createAcpSession);
1044
1199
  } else {
1045
1200
  // Resolve extension-registered CLI flags before creating the session so a
1046
1201
  // bad `@file` fails fast WITHOUT leaving a junk session/breadcrumb
@@ -1058,6 +1213,15 @@ export async function runRootCommand(
1058
1213
  },
1059
1214
  };
1060
1215
  const initialArgs = applyExtensionFlags(extensionFlagSink, rawArgs) ?? parsedArgs;
1216
+ // Fail fast on stale/typo flags (e.g. `prometheus --list-models`) now that we
1217
+ // know the real extension flag set. Without this check the unrecognized
1218
+ // token gets silently consumed and any following positional leaks as the
1219
+ // initial prompt — kicking off a real LLM session, MCP connection, and
1220
+ // tool calls (issue #2459). Exit code 2 matches the conventional
1221
+ // "command line usage error" convention.
1222
+ if (reportUnrecognizedFlags(initialArgs)) {
1223
+ process.exit(2);
1224
+ }
1061
1225
  const processedFiles =
1062
1226
  initialArgs.fileArgs.length > 0
1063
1227
  ? await logger.time("processFileArguments", () =>
@@ -1073,6 +1237,13 @@ export async function runRootCommand(
1073
1237
  stdinContent: pipedInput,
1074
1238
  });
1075
1239
 
1240
+ maybeShowStartupSplash({
1241
+ isInteractive,
1242
+ resuming: Boolean(parsedArgs.continue || parsedArgs.resume || parsedArgs.fork),
1243
+ quiet: settingsInstance.get("startup.quiet"),
1244
+ version: VERSION,
1245
+ });
1246
+
1076
1247
  const { session, setToolUIContext, modelFallbackMessage, lspServers, mcpManager } = await createSession({
1077
1248
  ...sessionOptions,
1078
1249
  eventBus,
@@ -1104,29 +1275,33 @@ export async function runRootCommand(
1104
1275
  }
1105
1276
 
1106
1277
  if (mode === "rpc" || mode === "rpc-ui") {
1107
- await runRpcMode(session, mode === "rpc-ui" ? setToolUIContext : undefined);
1278
+ // Branch-only protocol runner: keep RPC host code out of normal interactive startup.
1279
+ const runRpcMode: RunRpcMode = (await import("./modes/rpc/rpc-mode")).runRpcMode;
1280
+ stopStartupWatchdog();
1281
+ await runRpcMode(session, mode === "rpc-ui" ? setToolUIContext : undefined, eventBus);
1108
1282
  } else if (isInteractive) {
1109
1283
  const versionCheckPromise = checkForNewVersion(VERSION).catch(() => undefined);
1110
1284
  const changelogMarkdown = await logger.time("main:getChangelogForDisplay", getChangelogForDisplay, parsedArgs);
1111
1285
 
1112
- const scopedModelsForDisplay = sessionOptions.scopedModels ?? scopedModels;
1113
- if (scopedModelsForDisplay.length > 0) {
1114
- const modelList = scopedModelsForDisplay
1115
- .map(scopedModel => {
1116
- const thinkingStr = !scopedModel.thinkingLevel ? `:${scopedModel.thinkingLevel}` : "";
1117
- return `${scopedModel.model.id}${thinkingStr}`;
1118
- })
1119
- .join(", ");
1120
- process.stdout.write(`${chalk.dim(`Model scope: ${modelList} ${chalk.gray("(Ctrl+P to cycle)")}`)}\n`);
1286
+ const modelScopeNotification = buildModelScopeNotification(
1287
+ scopedModels,
1288
+ settingsInstance.get("startup.quiet"),
1289
+ );
1290
+ if (modelScopeNotification) {
1291
+ // Routed through the TUI (not stdout): the startup capture owns the
1292
+ // terminal in raw mode here, and the TUI's first clearScrollback paint
1293
+ // would wipe a pre-TUI line anyway.
1294
+ notifs.push(modelScopeNotification);
1121
1295
  }
1122
1296
 
1123
- if ($env.PROMETHEUS_TIMING) {
1297
+ if (isStartupTimingEnabled()) {
1124
1298
  logger.printTimings();
1125
- if ($env.PROMETHEUS_TIMING === "x") {
1299
+ if (logger.shouldExitAfterTimings()) {
1126
1300
  process.exit(0);
1127
1301
  }
1128
1302
  }
1129
1303
 
1304
+ stopStartupWatchdog();
1130
1305
  logger.endTiming();
1131
1306
  await runInteractiveMode(
1132
1307
  session,
@@ -1143,15 +1318,20 @@ export async function runRootCommand(
1143
1318
  eventBus,
1144
1319
  initialMessage,
1145
1320
  initialImages,
1321
+ titleSystemPrompt,
1322
+ parsedArgs.join,
1146
1323
  );
1147
1324
  } else {
1325
+ // Branch-only single-shot runner: keep print-mode code out of normal interactive startup.
1326
+ stopStartupWatchdog();
1327
+ const runPrintMode: RunPrintMode = (await import("./modes/print-mode")).runPrintMode;
1148
1328
  await runPrintMode(session, {
1149
1329
  mode,
1150
1330
  messages: initialArgs.messages,
1151
1331
  initialMessage,
1152
1332
  initialImages,
1153
1333
  });
1154
- if ($env.PROMETHEUS_TIMING) {
1334
+ if (isStartupTimingEnabled()) {
1155
1335
  logger.printTimings();
1156
1336
  }
1157
1337
  await session.dispose();