@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
@@ -1,5 +1,8 @@
1
1
  import { THINKING_EFFORTS } from "@prometheus-ai/ai";
2
- import { TASK_SIMPLE_MODES } from "../task/simple-mode";
2
+ import { SHAPE_VARIANT_NAMES } from "@prometheus-ai/snapcompact";
3
+ import { DEFAULT_SHARE_URL } from "@prometheus-ai/wire";
4
+ import { DEFAULT_RELAY_URL } from "../collab/protocol";
5
+ import { DEFAULT_STT_MODEL_KEY, STT_MODEL_OPTIONS, STT_MODEL_VALUES } from "../stt/models";
3
6
  import { AUTO_THINKING, getConfiguredThinkingLevelMetadata, getThinkingLevelMetadata } from "../thinking";
4
7
  import {
5
8
  TINY_MODEL_DEVICE_DEFAULT,
@@ -22,15 +25,27 @@ import {
22
25
  TINY_TITLE_MODEL_OPTIONS,
23
26
  TINY_TITLE_MODEL_VALUES,
24
27
  } from "../tiny/models";
28
+ import {
29
+ DEFAULT_TTS_LOCAL_MODEL_KEY,
30
+ DEFAULT_TTS_VOICE,
31
+ TTS_LOCAL_MODEL_OPTIONS,
32
+ TTS_LOCAL_MODEL_VALUES,
33
+ TTS_LOCAL_VOICE_OPTIONS,
34
+ TTS_LOCAL_VOICE_VALUES,
35
+ } from "../tts/models";
25
36
  import { EDIT_MODES } from "../utils/edit-mode";
26
37
  import { SEARCH_PROVIDER_OPTIONS, SEARCH_PROVIDER_PREFERENCES } from "../web/search/types";
27
38
 
28
39
  /** Unified settings schema - single source of truth for all settings.
29
- * Unified settings schema - single source of truth for all settings.
30
40
  *
31
41
  * Each setting is defined once here with:
32
42
  * - Type and default value
33
- * - Optional UI metadata (label, description, tab)
43
+ * - Optional UI metadata (label, description, tab, group)
44
+ *
45
+ * UI metadata places the setting in the settings panel: `tab` picks the
46
+ * panel tab, `group` the titled section within it (registered in
47
+ * TAB_GROUPS). Sections render in TAB_GROUPS order; settings within a
48
+ * section keep declaration order.
34
49
  *
35
50
  * The Settings singleton provides type-safe path-based access:
36
51
  * settings.get("compaction.enabled") // => boolean
@@ -47,7 +62,8 @@ export type SettingTab =
47
62
  | "interaction"
48
63
  | "context"
49
64
  | "memory"
50
- | "editing"
65
+ | "files"
66
+ | "shell"
51
67
  | "tools"
52
68
  | "tasks"
53
69
  | "providers"
@@ -63,7 +79,8 @@ export const SETTING_TABS: SettingTab[] = [
63
79
  "interaction",
64
80
  "context",
65
81
  "memory",
66
- "editing",
82
+ "files",
83
+ "shell",
67
84
  "tools",
68
85
  "tasks",
69
86
  "providers",
@@ -77,16 +94,54 @@ export const TAB_METADATA: Record<SettingTab, { label: string; icon: `tab.${stri
77
94
  interaction: { label: "Interaction", icon: "tab.interaction" },
78
95
  context: { label: "Context", icon: "tab.context" },
79
96
  memory: { label: "Memory", icon: "tab.memory" },
80
- editing: { label: "Editing", icon: "tab.editing" },
97
+ files: { label: "Files", icon: "tab.files" },
98
+ shell: { label: "Shell", icon: "tab.shell" },
81
99
  tools: { label: "Tools", icon: "tab.tools" },
82
100
  tasks: { label: "Tasks", icon: "tab.tasks" },
83
101
  providers: { label: "Providers", icon: "tab.providers" },
84
102
  channels: { label: "Channels", icon: "tab.channels" },
85
103
  };
86
104
 
105
+ /**
106
+ * Ordered section groups per tab. Settings declare their section via `ui.group`;
107
+ * the settings UI renders groups in this order with a heading row between them.
108
+ * Ungrouped settings render first, before any section heading.
109
+ */
110
+ export const TAB_GROUPS: Record<SettingTab, readonly string[]> = {
111
+ appearance: ["Theme", "Status Line", "Display", "Images"],
112
+ model: ["Thinking", "Sampling", "Prompt", "Retry & Fallback"],
113
+ interaction: [
114
+ "Input",
115
+ "Approvals",
116
+ "Notifications",
117
+ "Speech",
118
+ "Collab",
119
+ "Magic Keywords",
120
+ "Startup & Updates",
121
+ "Power (macOS)",
122
+ ],
123
+ context: ["General", "Compaction", "Rules (TTSR)", "Experimental"],
124
+ memory: ["General", "Auto-Learn", "Mnemopi", "Hindsight", "Self Improvement"],
125
+ files: ["Editing", "Reading", "Read Summaries", "LSP"],
126
+ shell: ["Bash", "Eval & Python"],
127
+ tools: [
128
+ "Available Tools",
129
+ "Todos",
130
+ "Search & Browser",
131
+ "GitHub",
132
+ "Output Limits",
133
+ "Execution",
134
+ "Discovery & MCP",
135
+ "Developer",
136
+ ],
137
+ tasks: ["Modes", "Subagents", "Isolation", "Commands & Skills"],
138
+ providers: ["Services", "Tiny Model", "Protocol", "Privacy"],
139
+ channels: ["Telegram"],
140
+ };
141
+
87
142
  /** Status line segment identifiers */
88
143
  export type StatusLineSegmentId =
89
- | "prometheus"
144
+ | "pi"
90
145
  | "model"
91
146
  | "mode"
92
147
  | "path"
@@ -108,7 +163,8 @@ export type StatusLineSegmentId =
108
163
  | "cache_write"
109
164
  | "cache_hit"
110
165
  | "session_name"
111
- | "usage";
166
+ | "usage"
167
+ | "collab";
112
168
 
113
169
  /** Submenu choice metadata. */
114
170
  export type SubmenuOption<V extends string = string> = {
@@ -119,6 +175,8 @@ export type SubmenuOption<V extends string = string> = {
119
175
 
120
176
  interface UiBase {
121
177
  tab: SettingTab;
178
+ /** Section within the tab; must be listed in TAB_GROUPS[tab]. Ungrouped settings render at the top. */
179
+ group?: string;
122
180
  label: string;
123
181
  description: string;
124
182
  /** Condition function name - setting only shown when true */
@@ -154,7 +212,7 @@ export type AnyUiMetadata = UiBase & {
154
212
 
155
213
  interface BooleanDef {
156
214
  type: "boolean";
157
- default: boolean;
215
+ default: boolean | undefined;
158
216
  ui?: UiBoolean;
159
217
  }
160
218
 
@@ -204,6 +262,8 @@ type SettingDef =
204
262
  export interface ModelTagDef {
205
263
  name: string;
206
264
  color?: string;
265
+ /** If true, the role is functional but not shown in the model selector UI. */
266
+ hidden?: boolean;
207
267
  }
208
268
 
209
269
  export interface ModelTagsSettings {
@@ -250,7 +310,11 @@ export const DEFAULT_BASH_INTERCEPTOR_RULES: BashInterceptorRule[] = [
250
310
  message: "Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching.",
251
311
  },
252
312
  {
253
- pattern: "^\\s*(echo|printf|cat\\s*<<)\\s+.*[^|]>\\s*\\S",
313
+ // `>` must sit outside quoted regions (so `echo "a -> b"` passes) and be
314
+ // followed by a plausible filename — including `$VAR` targets; `>|`
315
+ // (clobber) counts as a redirect; `>&2`/`2>&1` style fd duplication is
316
+ // not matched.
317
+ pattern: "^\\s*(echo|printf|cat\\s*<<)\\s+(?:[^\"'>]|\"[^\"]*\"|'[^']*')*(?<!\\|)>{1,2}\\|?\\s*[$\\w./~\"'-]",
254
318
  tool: "write",
255
319
  message: "Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation.",
256
320
  },
@@ -260,7 +324,6 @@ export const SETTINGS_SCHEMA = {
260
324
  // ────────────────────────────────────────────────────────────────────────
261
325
  // General settings (no UI)
262
326
  // ────────────────────────────────────────────────────────────────────────
263
- lastChangelogVersion: { type: "string", default: undefined },
264
327
  setupVersion: { type: "number", default: 0 },
265
328
 
266
329
  // Auth broker — credentials proxied through a remote `prometheus auth-broker serve`
@@ -277,6 +340,7 @@ export const SETTINGS_SCHEMA = {
277
340
  default: false,
278
341
  ui: {
279
342
  tab: "channels",
343
+ group: "Telegram",
280
344
  label: "Telegram Gateway",
281
345
  description: "Use the configured Telegram Bot API gateway when serving Prometheus externally",
282
346
  },
@@ -287,6 +351,7 @@ export const SETTINGS_SCHEMA = {
287
351
  default: "webhook",
288
352
  ui: {
289
353
  tab: "channels",
354
+ group: "Telegram",
290
355
  label: "Telegram Connection Mode",
291
356
  description: "Use webhook ingress or Bot API long polling for Telegram updates",
292
357
  options: [
@@ -304,6 +369,7 @@ export const SETTINGS_SCHEMA = {
304
369
  default: undefined,
305
370
  ui: {
306
371
  tab: "channels",
372
+ group: "Telegram",
307
373
  label: "Telegram Bot Username",
308
374
  description: "Telegram bot username without @; setup can fill this from getMe",
309
375
  },
@@ -313,6 +379,7 @@ export const SETTINGS_SCHEMA = {
313
379
  default: undefined,
314
380
  ui: {
315
381
  tab: "channels",
382
+ group: "Telegram",
316
383
  label: "Telegram Public URL",
317
384
  description: "HTTPS public base URL that Telegram should call through the tunnel",
318
385
  },
@@ -322,6 +389,7 @@ export const SETTINGS_SCHEMA = {
322
389
  default: "/telegram/webhook",
323
390
  ui: {
324
391
  tab: "channels",
392
+ group: "Telegram",
325
393
  label: "Telegram Webhook Path",
326
394
  description: "HTTP path that receives Telegram webhook updates",
327
395
  },
@@ -331,6 +399,7 @@ export const SETTINGS_SCHEMA = {
331
399
  default: undefined,
332
400
  ui: {
333
401
  tab: "channels",
402
+ group: "Telegram",
334
403
  label: "Telegram Allowed Users",
335
404
  description: "Comma-separated Telegram user IDs allowed to use the gateway",
336
405
  },
@@ -340,6 +409,7 @@ export const SETTINGS_SCHEMA = {
340
409
  default: undefined,
341
410
  ui: {
342
411
  tab: "channels",
412
+ group: "Telegram",
343
413
  label: "Telegram Allowed Chats",
344
414
  description: "Comma-separated Telegram chat IDs allowed to use the gateway",
345
415
  },
@@ -350,6 +420,7 @@ export const SETTINGS_SCHEMA = {
350
420
  default: "shared",
351
421
  ui: {
352
422
  tab: "channels",
423
+ group: "Telegram",
353
424
  label: "Telegram Group Scope",
354
425
  description: "Session sharing for non-threaded group chats",
355
426
  options: [
@@ -364,6 +435,7 @@ export const SETTINGS_SCHEMA = {
364
435
  default: "shared",
365
436
  ui: {
366
437
  tab: "channels",
438
+ group: "Telegram",
367
439
  label: "Telegram Thread Scope",
368
440
  description: "Session sharing for Telegram topics and direct-message topics",
369
441
  options: [
@@ -378,6 +450,7 @@ export const SETTINGS_SCHEMA = {
378
450
  default: "none",
379
451
  ui: {
380
452
  tab: "channels",
453
+ group: "Telegram",
381
454
  label: "Telegram Parse Mode",
382
455
  description: "Telegram parse_mode for bot replies",
383
456
  options: [
@@ -393,6 +466,7 @@ export const SETTINGS_SCHEMA = {
393
466
  default: false,
394
467
  ui: {
395
468
  tab: "channels",
469
+ group: "Telegram",
396
470
  label: "Telegram Silent Replies",
397
471
  description: "Send Telegram replies without notification sound",
398
472
  },
@@ -402,6 +476,7 @@ export const SETTINGS_SCHEMA = {
402
476
  default: true,
403
477
  ui: {
404
478
  tab: "channels",
479
+ group: "Telegram",
405
480
  label: "Telegram HD Previews",
406
481
  description: "Ask Telegram to use larger media previews where the Bot API supports it",
407
482
  },
@@ -411,6 +486,7 @@ export const SETTINGS_SCHEMA = {
411
486
  default: false,
412
487
  ui: {
413
488
  tab: "channels",
489
+ group: "Telegram",
414
490
  label: "Telegram Bot Messages",
415
491
  description: "Allow Telegram messages sent by bot accounts",
416
492
  },
@@ -420,6 +496,7 @@ export const SETTINGS_SCHEMA = {
420
496
  default: false,
421
497
  ui: {
422
498
  tab: "channels",
499
+ group: "Telegram",
423
500
  label: "Telegram Raw Payloads",
424
501
  description: "Attach raw Telegram update payloads to gateway events for debugging",
425
502
  },
@@ -429,6 +506,7 @@ export const SETTINGS_SCHEMA = {
429
506
  default: true,
430
507
  ui: {
431
508
  tab: "channels",
509
+ group: "Telegram",
432
510
  label: "Telegram Expressions",
433
511
  description: "Allow Prometheus to attach matching Telegram expression intents to replies",
434
512
  },
@@ -438,6 +516,7 @@ export const SETTINGS_SCHEMA = {
438
516
  default: 2,
439
517
  ui: {
440
518
  tab: "channels",
519
+ group: "Telegram",
441
520
  label: "Telegram Expression Match",
442
521
  description: "Minimum local catalog match score before attaching a Telegram expression",
443
522
  options: [
@@ -452,6 +531,7 @@ export const SETTINGS_SCHEMA = {
452
531
  default: EMPTY_UNKNOWN_RECORD,
453
532
  ui: {
454
533
  tab: "channels",
534
+ group: "Telegram",
455
535
  label: "Telegram Expression Catalog",
456
536
  description: "Searchable Telegram expression intents with sticker/GIF variants",
457
537
  },
@@ -461,6 +541,7 @@ export const SETTINGS_SCHEMA = {
461
541
  default: undefined,
462
542
  ui: {
463
543
  tab: "channels",
544
+ group: "Telegram",
464
545
  label: "Telegram Expression File",
465
546
  description: "Optional JSON catalog path for Telegram expression intents",
466
547
  },
@@ -471,6 +552,7 @@ export const SETTINGS_SCHEMA = {
471
552
  default: false,
472
553
  ui: {
473
554
  tab: "interaction",
555
+ group: "Startup & Updates",
474
556
  label: "Auto Resume",
475
557
  description: "Automatically resume the most recent session in the current directory",
476
558
  },
@@ -482,8 +564,9 @@ export const SETTINGS_SCHEMA = {
482
564
  default: true,
483
565
  ui: {
484
566
  tab: "interaction",
485
- label: "Prevent Idle Sleep (macOS)",
486
- description: "caffeinate -i: keep the system awake while a session is open",
567
+ group: "Power (macOS)",
568
+ label: "Prevent Idle Sleep",
569
+ description: "Keep the system awake while a session is open (caffeinate -i)",
487
570
  },
488
571
  },
489
572
  "power.preventSystemSleep": {
@@ -491,8 +574,9 @@ export const SETTINGS_SCHEMA = {
491
574
  default: false,
492
575
  ui: {
493
576
  tab: "interaction",
494
- label: "Prevent System Sleep on AC (macOS)",
495
- description: "caffeinate -s: block all system sleep while on AC power",
577
+ group: "Power (macOS)",
578
+ label: "Prevent System Sleep on AC",
579
+ description: "Block all system sleep while on AC power (caffeinate -s)",
496
580
  },
497
581
  },
498
582
  "power.declareUserActive": {
@@ -500,8 +584,9 @@ export const SETTINGS_SCHEMA = {
500
584
  default: false,
501
585
  ui: {
502
586
  tab: "interaction",
503
- label: "Declare User Active (macOS)",
504
- description: "caffeinate -u: keep the display lit and treat the user as active",
587
+ group: "Power (macOS)",
588
+ label: "Declare User Active",
589
+ description: "Keep the display lit and treat the user as active (caffeinate -u)",
505
590
  },
506
591
  },
507
592
  "power.preventDisplaySleep": {
@@ -509,30 +594,15 @@ export const SETTINGS_SCHEMA = {
509
594
  default: false,
510
595
  ui: {
511
596
  tab: "interaction",
512
- label: "Prevent Display Sleep (macOS)",
513
- description: "caffeinate -d: keep the display from idle-sleeping while a session is open",
597
+ group: "Power (macOS)",
598
+ label: "Prevent Display Sleep",
599
+ description: "Keep the display from idle-sleeping while a session is open (caffeinate -d)",
514
600
  },
515
601
  },
516
602
  shellPath: { type: "string", default: undefined },
517
603
 
518
604
  extensions: { type: "array", default: EMPTY_STRING_ARRAY },
519
605
 
520
- "marketplace.autoUpdate": {
521
- type: "enum",
522
- values: ["off", "notify", "auto"] as const,
523
- default: "notify",
524
- ui: {
525
- tab: "tools",
526
- label: "Marketplace Auto-Update",
527
- description: "Check for plugin updates on startup (off/notify/auto)",
528
- options: [
529
- { value: "off", label: "Off", description: "Don't check for plugin updates" },
530
- { value: "notify", label: "Notify", description: "Check on startup and notify when updates are available" },
531
- { value: "auto", label: "Auto", description: "Check on startup and auto-install updates" },
532
- ],
533
- },
534
- },
535
-
536
606
  enabledModels: { type: "array", default: EMPTY_STRING_ARRAY },
537
607
 
538
608
  disabledProviders: { type: "array", default: EMPTY_STRING_ARRAY },
@@ -557,8 +627,9 @@ export const SETTINGS_SCHEMA = {
557
627
  default: "titanium",
558
628
  ui: {
559
629
  tab: "appearance",
630
+ group: "Theme",
560
631
  label: "Dark Theme",
561
- description: "Theme used when terminal has dark background",
632
+ description: "Theme used when the terminal has a dark background",
562
633
  options: "runtime",
563
634
  },
564
635
  },
@@ -568,8 +639,9 @@ export const SETTINGS_SCHEMA = {
568
639
  default: "light",
569
640
  ui: {
570
641
  tab: "appearance",
642
+ group: "Theme",
571
643
  label: "Light Theme",
572
- description: "Theme used when terminal has light background",
644
+ description: "Theme used when the terminal has a light background",
573
645
  options: "runtime",
574
646
  },
575
647
  },
@@ -580,8 +652,9 @@ export const SETTINGS_SCHEMA = {
580
652
  default: "unicode",
581
653
  ui: {
582
654
  tab: "appearance",
655
+ group: "Theme",
583
656
  label: "Symbol Preset",
584
- description: "Icon/symbol style",
657
+ description: "Glyph set for icons and symbols (Unicode, Nerd Font, or ASCII)",
585
658
  options: [
586
659
  { value: "unicode", label: "Unicode", description: "Standard symbols (default)" },
587
660
  { value: "nerd", label: "Nerd Font", description: "Requires Nerd Font" },
@@ -595,6 +668,7 @@ export const SETTINGS_SCHEMA = {
595
668
  default: false,
596
669
  ui: {
597
670
  tab: "appearance",
671
+ group: "Theme",
598
672
  label: "Color-Blind Mode",
599
673
  description: "Use blue instead of green for diff additions",
600
674
  },
@@ -607,6 +681,7 @@ export const SETTINGS_SCHEMA = {
607
681
  default: "default",
608
682
  ui: {
609
683
  tab: "appearance",
684
+ group: "Status Line",
610
685
  label: "Status Line Preset",
611
686
  description: "Pre-built status line configurations",
612
687
  options: [
@@ -627,6 +702,7 @@ export const SETTINGS_SCHEMA = {
627
702
  default: "powerline-thin",
628
703
  ui: {
629
704
  tab: "appearance",
705
+ group: "Status Line",
630
706
  label: "Status Line Separator",
631
707
  description: "Style of separators between segments",
632
708
  options: [
@@ -646,16 +722,30 @@ export const SETTINGS_SCHEMA = {
646
722
  default: true,
647
723
  ui: {
648
724
  tab: "appearance",
725
+ group: "Status Line",
649
726
  label: "Session Accent",
650
727
  description: "Use the session name color for the editor border and status line gap",
651
728
  },
652
729
  },
730
+
731
+ "statusLine.transparent": {
732
+ type: "boolean",
733
+ default: false,
734
+ ui: {
735
+ tab: "appearance",
736
+ group: "Status Line",
737
+ label: "Transparent Status Line",
738
+ description:
739
+ "Use the terminal's default background for the status line instead of the theme's `statusLineBg`. Powerline end caps are dropped because they need a contrasting fill to bridge into the surrounding terminal.",
740
+ },
741
+ },
653
742
  "tools.artifactSpillThreshold": {
654
743
  type: "number",
655
744
  default: 50,
656
745
  ui: {
657
746
  tab: "tools",
658
- label: "Artifact spill threshold (KB)",
747
+ group: "Output Limits",
748
+ label: "Artifact Spill Threshold (KB)",
659
749
  description: "Tool output above this size is saved as an artifact; tail is kept inline",
660
750
  options: [
661
751
  { value: "1", label: "1 KB", description: "~250 tokens" },
@@ -678,7 +768,8 @@ export const SETTINGS_SCHEMA = {
678
768
  default: 20,
679
769
  ui: {
680
770
  tab: "tools",
681
- label: "Artifact tail size (KB)",
771
+ group: "Output Limits",
772
+ label: "Artifact Tail Size (KB)",
682
773
  description: "Amount of tail content kept inline when output spills to artifact",
683
774
  options: [
684
775
  { value: "1", label: "1 KB", description: "~250 tokens" },
@@ -697,7 +788,8 @@ export const SETTINGS_SCHEMA = {
697
788
  default: 20,
698
789
  ui: {
699
790
  tab: "tools",
700
- label: "Artifact head size (KB)",
791
+ group: "Output Limits",
792
+ label: "Artifact Head Size (KB)",
701
793
  description:
702
794
  "Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables — keep tail only.",
703
795
  options: [
@@ -718,7 +810,8 @@ export const SETTINGS_SCHEMA = {
718
810
  default: 768,
719
811
  ui: {
720
812
  tab: "tools",
721
- label: "Output column cap",
813
+ group: "Output Limits",
814
+ label: "Output Column Cap",
722
815
  description:
723
816
  "Per-line byte cap for streaming tool outputs (bash, ssh, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.",
724
817
  options: [
@@ -737,7 +830,8 @@ export const SETTINGS_SCHEMA = {
737
830
  default: 500,
738
831
  ui: {
739
832
  tab: "tools",
740
- label: "Artifact tail lines",
833
+ group: "Output Limits",
834
+ label: "Artifact Tail Lines",
741
835
  description: "Maximum lines of tail content kept inline when output spills to artifact",
742
836
  options: [
743
837
  { value: "50", label: "50 lines", description: "~250 tokens" },
@@ -756,8 +850,9 @@ export const SETTINGS_SCHEMA = {
756
850
  default: true,
757
851
  ui: {
758
852
  tab: "appearance",
853
+ group: "Status Line",
759
854
  label: "Show Hook Status",
760
- description: "Display hook status messages below status line",
855
+ description: "Display hook status messages below the status line",
761
856
  },
762
857
  },
763
858
 
@@ -773,8 +868,9 @@ export const SETTINGS_SCHEMA = {
773
868
  default: true,
774
869
  ui: {
775
870
  tab: "appearance",
871
+ group: "Images",
776
872
  label: "Show Inline Images",
777
- description: "Render images inline in terminal",
873
+ description: "Render images inline in the terminal",
778
874
  condition: "hasImageProtocol",
779
875
  },
780
876
  },
@@ -784,6 +880,7 @@ export const SETTINGS_SCHEMA = {
784
880
  default: true,
785
881
  ui: {
786
882
  tab: "appearance",
883
+ group: "Images",
787
884
  label: "Auto-Resize Images",
788
885
  description: "Resize large images to 2000x2000 max for better model compatibility",
789
886
  },
@@ -792,7 +889,12 @@ export const SETTINGS_SCHEMA = {
792
889
  "images.blockImages": {
793
890
  type: "boolean",
794
891
  default: false,
795
- ui: { tab: "appearance", label: "Block Images", description: "Prevent images from being sent to LLM providers" },
892
+ ui: {
893
+ tab: "appearance",
894
+ group: "Images",
895
+ label: "Block Images",
896
+ description: "Prevent images from being sent to LLM providers",
897
+ },
796
898
  },
797
899
 
798
900
  "tui.maxInlineImageColumns": {
@@ -821,6 +923,7 @@ export const SETTINGS_SCHEMA = {
821
923
  default: false,
822
924
  ui: {
823
925
  tab: "appearance",
926
+ group: "Display",
824
927
  label: "Large Headings (Kitty)",
825
928
  description:
826
929
  "Render Markdown H1 headings at 2x scale using Kitty's OSC 66 text-sizing protocol. Only takes effect on Kitty terminals; ignored everywhere else. Off by default.",
@@ -833,6 +936,7 @@ export const SETTINGS_SCHEMA = {
833
936
  default: "auto",
834
937
  ui: {
835
938
  tab: "appearance",
939
+ group: "Display",
836
940
  label: "Terminal Hyperlinks",
837
941
  description:
838
942
  "Wrap paths and URLs in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional)",
@@ -850,6 +954,7 @@ export const SETTINGS_SCHEMA = {
850
954
  default: "classic",
851
955
  ui: {
852
956
  tab: "appearance",
957
+ group: "Display",
853
958
  label: "Shimmer",
854
959
  description: "Animation style for working/loading messages",
855
960
  options: [
@@ -860,11 +965,23 @@ export const SETTINGS_SCHEMA = {
860
965
  },
861
966
  },
862
967
 
968
+ "display.smoothStreaming": {
969
+ type: "boolean",
970
+ default: true,
971
+ ui: {
972
+ tab: "appearance",
973
+ group: "Display",
974
+ label: "Smooth Streaming",
975
+ description: "Reveal assistant text and streamed tool input smoothly while chunks arrive",
976
+ },
977
+ },
978
+
863
979
  "display.showTokenUsage": {
864
980
  type: "boolean",
865
981
  default: false,
866
982
  ui: {
867
983
  tab: "appearance",
984
+ group: "Display",
868
985
  label: "Show Token Usage",
869
986
  description: "Show per-turn token usage on assistant messages",
870
987
  },
@@ -873,16 +990,11 @@ export const SETTINGS_SCHEMA = {
873
990
  showHardwareCursor: {
874
991
  type: "boolean",
875
992
  default: true, // will be computed based on platform if undefined
876
- ui: { tab: "appearance", label: "Show Hardware Cursor", description: "Show terminal cursor for IME support" },
877
- },
878
-
879
- clearOnShrink: {
880
- type: "boolean",
881
- default: false,
882
993
  ui: {
883
994
  tab: "appearance",
884
- label: "Clear on Shrink",
885
- description: "Clear empty rows when content shrinks (may cause flicker)",
995
+ group: "Display",
996
+ label: "Show Hardware Cursor",
997
+ description: "Show terminal cursor for IME support",
886
998
  },
887
999
  },
888
1000
 
@@ -897,6 +1009,7 @@ export const SETTINGS_SCHEMA = {
897
1009
  default: "high",
898
1010
  ui: {
899
1011
  tab: "model",
1012
+ group: "Thinking",
900
1013
  label: "Thinking Level",
901
1014
  description: "Reasoning depth for thinking-capable models",
902
1015
  options: [
@@ -909,7 +1022,12 @@ export const SETTINGS_SCHEMA = {
909
1022
  hideThinkingBlock: {
910
1023
  type: "boolean",
911
1024
  default: false,
912
- ui: { tab: "model", label: "Hide Thinking Blocks", description: "Hide thinking blocks in assistant responses" },
1025
+ ui: {
1026
+ tab: "model",
1027
+ group: "Thinking",
1028
+ label: "Hide Thinking Blocks",
1029
+ description: "Hide thinking blocks in assistant responses",
1030
+ },
913
1031
  },
914
1032
 
915
1033
  repeatToolDescriptions: {
@@ -917,6 +1035,7 @@ export const SETTINGS_SCHEMA = {
917
1035
  default: false,
918
1036
  ui: {
919
1037
  tab: "model",
1038
+ group: "Prompt",
920
1039
  label: "Repeat Tool Descriptions",
921
1040
  description: "Render full tool descriptions in the system prompt instead of a tool name list",
922
1041
  },
@@ -927,17 +1046,49 @@ export const SETTINGS_SCHEMA = {
927
1046
  default: true,
928
1047
  ui: {
929
1048
  tab: "model",
930
- label: "Include Model In Prompt",
1049
+ group: "Prompt",
1050
+ label: "Include Model in Prompt",
931
1051
  description: "Surface the active model identifier in the system prompt so the agent knows which model it is",
932
1052
  },
933
1053
  },
934
1054
 
1055
+ personality: {
1056
+ type: "enum",
1057
+ values: ["default", "friendly", "pragmatic", "none"] as const,
1058
+ default: "default",
1059
+ ui: {
1060
+ tab: "model",
1061
+ group: "Prompt",
1062
+ label: "Personality",
1063
+ description: "Communication style rendered into the system prompt's personality block",
1064
+ options: [
1065
+ {
1066
+ value: "default",
1067
+ label: "Default",
1068
+ description: "Terse, evidence-first engineer; dense, action-oriented replies",
1069
+ },
1070
+ {
1071
+ value: "friendly",
1072
+ label: "Friendly",
1073
+ description: "Warm, encouraging collaborator focused on momentum and morale",
1074
+ },
1075
+ {
1076
+ value: "pragmatic",
1077
+ label: "Pragmatic",
1078
+ description: "Direct, efficient engineer focused on clarity and rigor",
1079
+ },
1080
+ { value: "none", label: "None", description: "Omit the personality block entirely" },
1081
+ ],
1082
+ },
1083
+ },
1084
+
935
1085
  // Sampling
936
1086
  temperature: {
937
1087
  type: "number",
938
1088
  default: -1,
939
1089
  ui: {
940
1090
  tab: "model",
1091
+ group: "Sampling",
941
1092
  label: "Temperature",
942
1093
  description: "Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)",
943
1094
  options: [
@@ -956,6 +1107,7 @@ export const SETTINGS_SCHEMA = {
956
1107
  default: -1,
957
1108
  ui: {
958
1109
  tab: "model",
1110
+ group: "Sampling",
959
1111
  label: "Top P",
960
1112
  description: "Nucleus sampling cutoff (0-1, -1 = provider default)",
961
1113
  options: [
@@ -974,6 +1126,7 @@ export const SETTINGS_SCHEMA = {
974
1126
  default: -1,
975
1127
  ui: {
976
1128
  tab: "model",
1129
+ group: "Sampling",
977
1130
  label: "Top K",
978
1131
  description: "Sample from top-K tokens (-1 = provider default)",
979
1132
  options: [
@@ -991,6 +1144,7 @@ export const SETTINGS_SCHEMA = {
991
1144
  default: -1,
992
1145
  ui: {
993
1146
  tab: "model",
1147
+ group: "Sampling",
994
1148
  label: "Min P",
995
1149
  description: "Minimum probability threshold (0-1, -1 = provider default)",
996
1150
  options: [
@@ -1007,6 +1161,7 @@ export const SETTINGS_SCHEMA = {
1007
1161
  default: -1,
1008
1162
  ui: {
1009
1163
  tab: "model",
1164
+ group: "Sampling",
1010
1165
  label: "Presence Penalty",
1011
1166
  description: "Penalty for introducing already-present tokens (-1 = provider default)",
1012
1167
  options: [
@@ -1024,6 +1179,7 @@ export const SETTINGS_SCHEMA = {
1024
1179
  default: -1,
1025
1180
  ui: {
1026
1181
  tab: "model",
1182
+ group: "Sampling",
1027
1183
  label: "Repetition Penalty",
1028
1184
  description: "Penalty for repeated tokens (-1 = provider default)",
1029
1185
  options: [
@@ -1043,6 +1199,7 @@ export const SETTINGS_SCHEMA = {
1043
1199
  default: "none",
1044
1200
  ui: {
1045
1201
  tab: "model",
1202
+ group: "Sampling",
1046
1203
  label: "Service Tier",
1047
1204
  description:
1048
1205
  'Processing priority hint (none = omit). OpenAI accepts the tier values directly; Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.',
@@ -1071,14 +1228,41 @@ export const SETTINGS_SCHEMA = {
1071
1228
  },
1072
1229
  },
1073
1230
 
1231
+ fastModeScope: {
1232
+ type: "enum",
1233
+ values: ["both", "openai", "claude"] as const,
1234
+ default: "both",
1235
+ ui: {
1236
+ tab: "model",
1237
+ group: "Sampling",
1238
+ label: "Fast Mode Scope",
1239
+ description:
1240
+ 'Which providers `/fast on` (and the fast-mode toggle) target. "both" = priority on every supported provider; "openai"/"claude" scope it to one family (mirrors serviceTier openai-only/claude-only).',
1241
+ options: [
1242
+ { value: "both", label: "Both", description: "Priority on every supported provider" },
1243
+ {
1244
+ value: "openai",
1245
+ label: "OpenAI only",
1246
+ description: "Priority on OpenAI/OpenAI-Codex requests; ignored elsewhere",
1247
+ },
1248
+ {
1249
+ value: "claude",
1250
+ label: "Claude only",
1251
+ description: "Anthropic fast mode on direct Claude requests; ignored elsewhere",
1252
+ },
1253
+ ],
1254
+ },
1255
+ },
1256
+
1074
1257
  // Retries
1075
1258
  "retry.enabled": { type: "boolean", default: true },
1076
1259
 
1077
1260
  "retry.maxRetries": {
1078
1261
  type: "number",
1079
- default: 3,
1262
+ default: 10,
1080
1263
  ui: {
1081
1264
  tab: "model",
1265
+ group: "Retry & Fallback",
1082
1266
  label: "Retry Attempts",
1083
1267
  description: "Maximum retry attempts on API errors",
1084
1268
  options: [
@@ -1091,12 +1275,13 @@ export const SETTINGS_SCHEMA = {
1091
1275
  },
1092
1276
  },
1093
1277
 
1094
- "retry.baseDelayMs": { type: "number", default: 2000 },
1278
+ "retry.baseDelayMs": { type: "number", default: 500 },
1095
1279
  "retry.maxDelayMs": {
1096
1280
  type: "number",
1097
1281
  default: 5 * 60 * 1000,
1098
1282
  ui: {
1099
1283
  tab: "model",
1284
+ group: "Retry & Fallback",
1100
1285
  label: "Max Retry Delay",
1101
1286
  description:
1102
1287
  "Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows).",
@@ -1107,6 +1292,7 @@ export const SETTINGS_SCHEMA = {
1107
1292
  default: true,
1108
1293
  ui: {
1109
1294
  tab: "model",
1295
+ group: "Retry & Fallback",
1110
1296
  label: "Retry Model Fallback",
1111
1297
  description: "Allow retry recovery to switch to configured fallback models",
1112
1298
  },
@@ -1118,6 +1304,7 @@ export const SETTINGS_SCHEMA = {
1118
1304
  default: "cooldown-expiry",
1119
1305
  ui: {
1120
1306
  tab: "model",
1307
+ group: "Retry & Fallback",
1121
1308
  label: "Fallback Revert Policy",
1122
1309
  description: "When to return to the primary model after a fallback",
1123
1310
  options: [
@@ -1142,6 +1329,7 @@ export const SETTINGS_SCHEMA = {
1142
1329
  default: "one-at-a-time",
1143
1330
  ui: {
1144
1331
  tab: "interaction",
1332
+ group: "Input",
1145
1333
  label: "Steering Mode",
1146
1334
  description: "How to process queued messages while agent is working",
1147
1335
  },
@@ -1153,6 +1341,7 @@ export const SETTINGS_SCHEMA = {
1153
1341
  default: "one-at-a-time",
1154
1342
  ui: {
1155
1343
  tab: "interaction",
1344
+ group: "Input",
1156
1345
  label: "Follow-Up Mode",
1157
1346
  description: "How to drain follow-up messages after a turn completes",
1158
1347
  },
@@ -1164,6 +1353,7 @@ export const SETTINGS_SCHEMA = {
1164
1353
  default: "immediate",
1165
1354
  ui: {
1166
1355
  tab: "interaction",
1356
+ group: "Input",
1167
1357
  label: "Interrupt Mode",
1168
1358
  description: "When steering messages interrupt tool execution",
1169
1359
  },
@@ -1175,6 +1365,7 @@ export const SETTINGS_SCHEMA = {
1175
1365
  default: "prompt",
1176
1366
  ui: {
1177
1367
  tab: "interaction",
1368
+ group: "Input",
1178
1369
  label: "Loop Mode",
1179
1370
  description: "What happens between /loop iterations before re-submitting the prompt",
1180
1371
  options: [
@@ -1200,6 +1391,7 @@ export const SETTINGS_SCHEMA = {
1200
1391
  default: "tree",
1201
1392
  ui: {
1202
1393
  tab: "interaction",
1394
+ group: "Input",
1203
1395
  label: "Double-Escape Action",
1204
1396
  description: "Action when pressing Escape twice with empty editor",
1205
1397
  },
@@ -1211,6 +1403,7 @@ export const SETTINGS_SCHEMA = {
1211
1403
  default: "default",
1212
1404
  ui: {
1213
1405
  tab: "interaction",
1406
+ group: "Input",
1214
1407
  label: "Session Tree Filter",
1215
1408
  description: "Default filter mode when opening the session tree",
1216
1409
  },
@@ -1221,6 +1414,7 @@ export const SETTINGS_SCHEMA = {
1221
1414
  default: 5,
1222
1415
  ui: {
1223
1416
  tab: "interaction",
1417
+ group: "Input",
1224
1418
  label: "Autocomplete Items",
1225
1419
  description: "Max visible items in autocomplete dropdown (3-20)",
1226
1420
  options: [
@@ -1239,16 +1433,37 @@ export const SETTINGS_SCHEMA = {
1239
1433
  default: true,
1240
1434
  ui: {
1241
1435
  tab: "interaction",
1436
+ group: "Input",
1242
1437
  label: "Emoji Autocomplete",
1243
1438
  description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`",
1244
1439
  },
1245
1440
  },
1246
1441
 
1442
+ "paste.largeMenuThreshold": {
1443
+ type: "number",
1444
+ default: 100,
1445
+ ui: {
1446
+ tab: "interaction",
1447
+ group: "Input",
1448
+ label: "Large Paste Menu",
1449
+ description:
1450
+ "When a paste reaches this many lines, offer a menu to wrap it in a code block, wrap it in XML tags, or save it to a file. 0 disables the menu (large pastes still collapse to a [Paste] marker).",
1451
+ options: [
1452
+ { value: "0", label: "Off" },
1453
+ { value: "100", label: "100 lines" },
1454
+ { value: "250", label: "250 lines" },
1455
+ { value: "500", label: "500 lines" },
1456
+ { value: "1000", label: "1000 lines" },
1457
+ ],
1458
+ },
1459
+ },
1460
+
1247
1461
  "startup.quiet": {
1248
1462
  type: "boolean",
1249
1463
  default: false,
1250
1464
  ui: {
1251
1465
  tab: "interaction",
1466
+ group: "Startup & Updates",
1252
1467
  label: "Quiet Startup",
1253
1468
  description: "Skip welcome screen and startup status messages",
1254
1469
  },
@@ -1259,6 +1474,7 @@ export const SETTINGS_SCHEMA = {
1259
1474
  default: true,
1260
1475
  ui: {
1261
1476
  tab: "interaction",
1477
+ group: "Startup & Updates",
1262
1478
  label: "Setup Wizard",
1263
1479
  description: "Show newly added onboarding steps once per setup version",
1264
1480
  },
@@ -1269,15 +1485,82 @@ export const SETTINGS_SCHEMA = {
1269
1485
  default: true,
1270
1486
  ui: {
1271
1487
  tab: "interaction",
1488
+ group: "Startup & Updates",
1272
1489
  label: "Check for Updates",
1273
- description: "If false, skip update check",
1490
+ description: "Check for prometheus updates on startup",
1491
+ },
1492
+ },
1493
+
1494
+ "marketplace.autoUpdate": {
1495
+ type: "enum",
1496
+ values: ["off", "notify", "auto"] as const,
1497
+ default: "notify",
1498
+ ui: {
1499
+ tab: "interaction",
1500
+ group: "Startup & Updates",
1501
+ label: "Marketplace Auto-Update",
1502
+ description: "Check for plugin updates on startup",
1503
+ options: [
1504
+ { value: "off", label: "Off", description: "Don't check for plugin updates" },
1505
+ { value: "notify", label: "Notify", description: "Check on startup and notify when updates are available" },
1506
+ { value: "auto", label: "Auto", description: "Check on startup and auto-install updates" },
1507
+ ],
1274
1508
  },
1275
1509
  },
1276
1510
 
1277
1511
  collapseChangelog: {
1278
1512
  type: "boolean",
1279
1513
  default: false,
1280
- ui: { tab: "interaction", label: "Collapse Changelog", description: "Show condensed changelog after updates" },
1514
+ ui: {
1515
+ tab: "interaction",
1516
+ group: "Startup & Updates",
1517
+ label: "Collapse Changelog",
1518
+ description: "Show condensed changelog after updates",
1519
+ },
1520
+ },
1521
+
1522
+ "magicKeywords.enabled": {
1523
+ type: "boolean",
1524
+ default: true,
1525
+ ui: {
1526
+ tab: "interaction",
1527
+ group: "Magic Keywords",
1528
+ label: "Magic Keywords",
1529
+ description: "Enable hidden notices for standalone ultrathink, orchestrate, and workflowz keywords",
1530
+ },
1531
+ },
1532
+
1533
+ "magicKeywords.ultrathink": {
1534
+ type: "boolean",
1535
+ default: true,
1536
+ ui: {
1537
+ tab: "interaction",
1538
+ group: "Magic Keywords",
1539
+ label: "Ultrathink Keyword",
1540
+ description: "Let standalone ultrathink request maximum automatic thinking and append its hidden notice",
1541
+ },
1542
+ },
1543
+
1544
+ "magicKeywords.orchestrate": {
1545
+ type: "boolean",
1546
+ default: true,
1547
+ ui: {
1548
+ tab: "interaction",
1549
+ group: "Magic Keywords",
1550
+ label: "Orchestrate Keyword",
1551
+ description: "Let standalone orchestrate append its hidden multi-agent orchestration notice",
1552
+ },
1553
+ },
1554
+
1555
+ "magicKeywords.workflow": {
1556
+ type: "boolean",
1557
+ default: true,
1558
+ ui: {
1559
+ tab: "interaction",
1560
+ group: "Magic Keywords",
1561
+ label: "Workflow Keyword",
1562
+ description: "Let standalone workflowz append its hidden eval workflow notice",
1563
+ },
1281
1564
  },
1282
1565
 
1283
1566
  // Notifications
@@ -1285,7 +1568,12 @@ export const SETTINGS_SCHEMA = {
1285
1568
  type: "enum",
1286
1569
  values: ["on", "off"] as const,
1287
1570
  default: "on",
1288
- ui: { tab: "interaction", label: "Completion Notification", description: "Notify when the agent completes" },
1571
+ ui: {
1572
+ tab: "interaction",
1573
+ group: "Notifications",
1574
+ label: "Completion Notification",
1575
+ description: "Notify when the agent finishes a turn",
1576
+ },
1289
1577
  },
1290
1578
 
1291
1579
  "ask.timeout": {
@@ -1293,8 +1581,9 @@ export const SETTINGS_SCHEMA = {
1293
1581
  default: 0,
1294
1582
  ui: {
1295
1583
  tab: "interaction",
1584
+ group: "Notifications",
1296
1585
  label: "Ask Timeout",
1297
- description: "Auto-select recommended option after timeout (0 to disable)",
1586
+ description: "Auto-select the recommended ask option after this many seconds (0 disables)",
1298
1587
  options: [
1299
1588
  { value: "0", label: "Disabled" },
1300
1589
  { value: "15", label: "15 seconds" },
@@ -1309,14 +1598,70 @@ export const SETTINGS_SCHEMA = {
1309
1598
  type: "enum",
1310
1599
  values: ["on", "off"] as const,
1311
1600
  default: "on",
1312
- ui: { tab: "interaction", label: "Ask Notification", description: "Notify when ask tool is waiting for input" },
1601
+ ui: {
1602
+ tab: "interaction",
1603
+ group: "Notifications",
1604
+ label: "Ask Notification",
1605
+ description: "Notify when the ask tool is waiting for input",
1606
+ },
1607
+ },
1608
+
1609
+ // Collab
1610
+ "collab.relayUrl": {
1611
+ type: "string",
1612
+ default: DEFAULT_RELAY_URL,
1613
+ ui: {
1614
+ tab: "interaction",
1615
+ group: "Collab",
1616
+ label: "Relay URL",
1617
+ description: "Relay used by /collab (wss://host[:port])",
1618
+ },
1619
+ },
1620
+
1621
+ "collab.displayName": {
1622
+ type: "string",
1623
+ default: "",
1624
+ ui: {
1625
+ tab: "interaction",
1626
+ group: "Collab",
1627
+ label: "Display Name",
1628
+ description: "Name shown to other collab participants (default: OS username)",
1629
+ },
1630
+ },
1631
+
1632
+ "share.serverUrl": {
1633
+ type: "string",
1634
+ default: DEFAULT_SHARE_URL,
1635
+ ui: {
1636
+ tab: "interaction",
1637
+ group: "Collab",
1638
+ label: "Share Server",
1639
+ description:
1640
+ "Share viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>)",
1641
+ },
1642
+ },
1643
+
1644
+ "share.redactSecrets": {
1645
+ type: "boolean",
1646
+ default: true,
1647
+ ui: {
1648
+ tab: "interaction",
1649
+ group: "Collab",
1650
+ label: "Share Secret Redaction",
1651
+ description: "Run the secret obfuscator over /share snapshots before upload (uses the secrets.* config)",
1652
+ },
1313
1653
  },
1314
1654
 
1315
1655
  // Speech-to-text
1316
1656
  "stt.enabled": {
1317
1657
  type: "boolean",
1318
1658
  default: false,
1319
- ui: { tab: "interaction", label: "Speech-to-Text", description: "Enable speech-to-text input via microphone" },
1659
+ ui: {
1660
+ tab: "interaction",
1661
+ group: "Speech",
1662
+ label: "Speech-to-Text",
1663
+ description: "Enable speech-to-text input via microphone",
1664
+ },
1320
1665
  },
1321
1666
 
1322
1667
  "stt.language": {
@@ -1326,23 +1671,15 @@ export const SETTINGS_SCHEMA = {
1326
1671
 
1327
1672
  "stt.modelName": {
1328
1673
  type: "enum",
1329
- values: ["tiny", "tiny.en", "base", "base.en", "small", "small.en", "medium", "medium.en", "large"] as const,
1330
- default: "base.en",
1674
+ values: STT_MODEL_VALUES,
1675
+ default: DEFAULT_STT_MODEL_KEY,
1331
1676
  ui: {
1332
1677
  tab: "interaction",
1678
+ group: "Speech",
1333
1679
  label: "Speech Model",
1334
- description: "Whisper model size (larger = more accurate but slower)",
1335
- options: [
1336
- { value: "tiny", label: "tiny", description: "Multilingual; fastest, lowest accuracy" },
1337
- { value: "tiny.en", label: "tiny.en", description: "English-only; fastest" },
1338
- { value: "base", label: "base", description: "Multilingual; small and fast" },
1339
- { value: "base.en", label: "base.en", description: "English-only; default" },
1340
- { value: "small", label: "small", description: "Multilingual; balanced" },
1341
- { value: "small.en", label: "small.en", description: "English-only; balanced" },
1342
- { value: "medium", label: "medium", description: "Multilingual; accurate but slower" },
1343
- { value: "medium.en", label: "medium.en", description: "English-only; accurate but slower" },
1344
- { value: "large", label: "large", description: "Multilingual; most accurate" },
1345
- ],
1680
+ description:
1681
+ "Local on-device speech model. Parakeet TDT v3 (sherpa-onnx) is the SoTA default; Whisper base/small/large-v3-turbo tiers (transformers.js) trade size for multilingual coverage. Downloaded on first use.",
1682
+ options: STT_MODEL_OPTIONS,
1346
1683
  },
1347
1684
  },
1348
1685
 
@@ -1356,6 +1693,7 @@ export const SETTINGS_SCHEMA = {
1356
1693
  default: true,
1357
1694
  ui: {
1358
1695
  tab: "context",
1696
+ group: "General",
1359
1697
  label: "Auto-Promote Context",
1360
1698
  description: "Promote to a larger-context model on context overflow instead of compacting",
1361
1699
  },
@@ -1367,6 +1705,7 @@ export const SETTINGS_SCHEMA = {
1367
1705
  default: true,
1368
1706
  ui: {
1369
1707
  tab: "context",
1708
+ group: "Compaction",
1370
1709
  label: "Auto-Compact",
1371
1710
  description: "Automatically compact context when it gets too large",
1372
1711
  },
@@ -1374,13 +1713,14 @@ export const SETTINGS_SCHEMA = {
1374
1713
 
1375
1714
  "compaction.strategy": {
1376
1715
  type: "enum",
1377
- values: ["context-full", "handoff", "shake", "off"] as const,
1716
+ values: ["context-full", "handoff", "shake", "snapcompact", "off"] as const,
1378
1717
  default: "context-full",
1379
1718
  ui: {
1380
1719
  tab: "context",
1720
+ group: "Compaction",
1381
1721
  label: "Compaction Strategy",
1382
1722
  description:
1383
- "Choose in-place context-full maintenance, auto-handoff, surgical shake (drop heavy content), or disable auto maintenance (off)",
1723
+ "Choose in-place context-full maintenance, auto-handoff, surgical shake (drop heavy content), snapcompact (archive history as dense images), or disable auto maintenance (off)",
1384
1724
  options: [
1385
1725
  {
1386
1726
  value: "context-full",
@@ -1393,6 +1733,11 @@ export const SETTINGS_SCHEMA = {
1393
1733
  label: "Shake",
1394
1734
  description: "Drop heavy content (tool results + large blocks) in place; recover via artifact",
1395
1735
  },
1736
+ {
1737
+ value: "snapcompact",
1738
+ label: "Snapcompact",
1739
+ description: "Archive history onto dense bitmap images the model reads back; no LLM call",
1740
+ },
1396
1741
  {
1397
1742
  value: "off",
1398
1743
  label: "Off",
@@ -1407,6 +1752,7 @@ export const SETTINGS_SCHEMA = {
1407
1752
  default: -1,
1408
1753
  ui: {
1409
1754
  tab: "context",
1755
+ group: "Compaction",
1410
1756
  label: "Compaction Threshold",
1411
1757
  description: "Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior",
1412
1758
  options: [
@@ -1431,6 +1777,7 @@ export const SETTINGS_SCHEMA = {
1431
1777
  default: -1,
1432
1778
  ui: {
1433
1779
  tab: "context",
1780
+ group: "Compaction",
1434
1781
  label: "Compaction Token Limit",
1435
1782
  description: "Fixed token limit for context maintenance; overrides percentage if set",
1436
1783
  options: [
@@ -1451,6 +1798,7 @@ export const SETTINGS_SCHEMA = {
1451
1798
  default: false,
1452
1799
  ui: {
1453
1800
  tab: "context",
1801
+ group: "Compaction",
1454
1802
  label: "Save Handoff Docs",
1455
1803
  description: "Save generated handoff documents to markdown files for the auto-handoff flow",
1456
1804
  },
@@ -1461,6 +1809,7 @@ export const SETTINGS_SCHEMA = {
1461
1809
  default: true,
1462
1810
  ui: {
1463
1811
  tab: "context",
1812
+ group: "Compaction",
1464
1813
  label: "Remote Compaction",
1465
1814
  description: "Use remote compaction endpoints when available instead of local summarization",
1466
1815
  },
@@ -1480,6 +1829,7 @@ export const SETTINGS_SCHEMA = {
1480
1829
  default: false,
1481
1830
  ui: {
1482
1831
  tab: "context",
1832
+ group: "Compaction",
1483
1833
  label: "Idle Compaction",
1484
1834
  description: "Compact context while idle when token count exceeds threshold",
1485
1835
  },
@@ -1490,6 +1840,7 @@ export const SETTINGS_SCHEMA = {
1490
1840
  default: 200000,
1491
1841
  ui: {
1492
1842
  tab: "context",
1843
+ group: "Compaction",
1493
1844
  label: "Idle Compaction Threshold",
1494
1845
  description: "Token count above which idle compaction triggers",
1495
1846
  options: [
@@ -1511,6 +1862,7 @@ export const SETTINGS_SCHEMA = {
1511
1862
  default: 300,
1512
1863
  ui: {
1513
1864
  tab: "context",
1865
+ group: "Compaction",
1514
1866
  label: "Idle Compaction Delay",
1515
1867
  description: "Seconds to wait while idle before compacting",
1516
1868
  options: [
@@ -1523,93 +1875,294 @@ export const SETTINGS_SCHEMA = {
1523
1875
  ],
1524
1876
  },
1525
1877
  },
1526
- // Branch summaries
1527
- "branchSummary.enabled": {
1878
+
1879
+ "compaction.supersedeReads": {
1528
1880
  type: "boolean",
1529
- default: false,
1530
- ui: { tab: "context", label: "Branch Summaries", description: "Prompt to summarize when leaving a branch" },
1881
+ default: true,
1882
+ ui: {
1883
+ tab: "context",
1884
+ group: "Compaction",
1885
+ label: "Supersede Stale Reads",
1886
+ description: "Prune older read results when the same file is read again (cache-aware, runs every turn)",
1887
+ },
1531
1888
  },
1532
1889
 
1533
- "branchSummary.reserveTokens": { type: "number", default: 16384 },
1534
-
1535
- // Memories
1536
- // Legacy local-memory enable flag kept only for back-compat migration.
1537
- // Hidden from UI — users should use `memory.backend` instead.
1538
- "memories.enabled": {
1890
+ "compaction.dropUseless": {
1539
1891
  type: "boolean",
1540
- default: false,
1892
+ default: true,
1893
+ ui: {
1894
+ tab: "context",
1895
+ group: "Compaction",
1896
+ label: "Elide Uneventful Results",
1897
+ description:
1898
+ "Prune tool results flagged contextually useless (no matches, timed-out waits) once consumed (cache-aware)",
1899
+ },
1541
1900
  },
1542
1901
 
1543
- "memories.maxRolloutsPerStartup": { type: "number", default: 64 },
1544
-
1545
- "memories.maxRolloutAgeDays": { type: "number", default: 30 },
1546
-
1547
- "memories.minRolloutIdleHours": { type: "number", default: 12 },
1548
-
1549
- "memories.threadScanLimit": { type: "number", default: 300 },
1550
-
1551
- "memories.maxRawMemoriesForGlobal": { type: "number", default: 200 },
1552
-
1553
- "memories.stage1Concurrency": { type: "number", default: 8 },
1554
-
1555
- "memories.stage1LeaseSeconds": { type: "number", default: 120 },
1556
-
1557
- "memories.stage1RetryDelaySeconds": { type: "number", default: 120 },
1558
-
1559
- "memories.phase2LeaseSeconds": { type: "number", default: 180 },
1560
-
1561
- "memories.phase2RetryDelaySeconds": { type: "number", default: 180 },
1562
-
1563
- "memories.phase2HeartbeatSeconds": { type: "number", default: 30 },
1564
-
1565
- "memories.rolloutPayloadPercent": { type: "number", default: 0.7 },
1566
-
1567
- "memories.phase1InputTokenLimit": { type: "number", default: 4000 },
1568
-
1569
- "memories.fallbackTokenLimit": { type: "number", default: 16000 },
1570
-
1571
- "memories.summaryInjectionTokenLimit": { type: "number", default: 5000 },
1572
-
1573
- // Memory backend selector — picks between local memories pipeline,
1574
- // Prometheus Memory local SQLite, Hindsight remote memory, or off. Legacy
1575
- // `memories.enabled` keeps gating the local backend; see config/settings.ts
1576
- // migration for details.
1577
- "memory.backend": {
1902
+ // Experimental: snapcompact inline imaging (transient, per-request; never persisted)
1903
+ "snapcompact.systemPrompt": {
1578
1904
  type: "enum",
1579
- values: ["off", "local", "hindsight", "prometheus-memory"] as const,
1580
- default: "off",
1905
+ values: ["none", "agents-md", "all"] as const,
1906
+ default: "none",
1581
1907
  ui: {
1582
- tab: "memory",
1583
- label: "Memory Backend",
1584
- description: "Off, local summary pipeline, Prometheus Memory SQLite, or Hindsight remote memory",
1908
+ tab: "context",
1909
+ group: "Experimental",
1910
+ label: "Snapcompact System Prompt",
1911
+ description:
1912
+ "Experimental: render selected system prompt text as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses prompt caching for imaged text.",
1585
1913
  options: [
1586
- { value: "off", label: "Off", description: "No memory subsystem runs" },
1587
- { value: "local", label: "Local", description: "Local rollout summarisation pipeline (memory_summary.md)" },
1588
- { value: "hindsight", label: "Hindsight", description: "Vectorize Hindsight remote memory service" },
1914
+ { value: "none", label: "None", description: "Keep the system prompt as text." },
1589
1915
  {
1590
- value: "prometheus-memory",
1591
- label: "Prometheus Memory",
1592
- description: "Local SQLite recall/retain backend with optional embeddings",
1916
+ value: "agents-md",
1917
+ label: "AGENTS.md",
1918
+ description: "Only move loaded context-file instructions to images, when that saves tokens.",
1919
+ },
1920
+ {
1921
+ value: "all",
1922
+ label: "All",
1923
+ description: "Move the full system prompt to images, when that saves tokens.",
1593
1924
  },
1594
1925
  ],
1595
1926
  },
1596
1927
  },
1597
1928
 
1598
- // Self-improvement trajectory. This deliberately follows the proven
1599
- // Hermes-style split: automatic learning is allowed for memory, user
1600
- // profile, and generated skills; SOUL/identity stays stable and proposal-only.
1601
- "selfImprovement.mode": {
1602
- type: "enum",
1603
- values: ["memory-and-skills", "off"] as const,
1604
- default: "memory-and-skills",
1929
+ "snapcompact.toolResults": {
1930
+ type: "boolean",
1931
+ default: false,
1605
1932
  ui: {
1606
- tab: "memory",
1607
- label: "Self Improvement",
1933
+ tab: "context",
1934
+ group: "Experimental",
1935
+ label: "Snapcompact Tool Results",
1608
1936
  description:
1609
- "Hermes-style native learning: memory, user profile, and skills update automatically; SOUL stays stable",
1610
- options: [
1611
- {
1612
- value: "memory-and-skills",
1937
+ "Experimental: render large historical tool results as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated read/search output.",
1938
+ },
1939
+ },
1940
+
1941
+ "snapcompact.shape": {
1942
+ type: "enum",
1943
+ values: ["auto", ...SHAPE_VARIANT_NAMES] as const,
1944
+ default: "auto",
1945
+ ui: {
1946
+ tab: "context",
1947
+ group: "Experimental",
1948
+ label: "Snapcompact Shape",
1949
+ description:
1950
+ "Frame shape snapcompact prints text with (compaction archive and inline imaging). Auto picks a shape tuned for the current model.",
1951
+ options: [
1952
+ {
1953
+ value: "auto",
1954
+ label: "Auto",
1955
+ description: "Picks a shape tuned for the current model, falling back to its provider family.",
1956
+ },
1957
+ {
1958
+ value: "8x8r-bw",
1959
+ label: "8x8 repeated, black",
1960
+ description:
1961
+ "unscii square cell, black ink, every line printed twice with the copy on a pale highlight band.",
1962
+ },
1963
+ {
1964
+ value: "8x8r-sent",
1965
+ label: "8x8 repeated, sentence hues",
1966
+ description: "Repeated grid with ink cycling six hues at sentence boundaries.",
1967
+ },
1968
+ {
1969
+ value: "8x8u-bw",
1970
+ label: "8x8, black",
1971
+ description: "Plain unscii square cell, single-printed lines, black ink.",
1972
+ },
1973
+ {
1974
+ value: "8x8u-sent",
1975
+ label: "8x8, sentence hues",
1976
+ description: "Plain unscii square cell with sentence-hue ink.",
1977
+ },
1978
+ {
1979
+ value: "6x6u-bw",
1980
+ label: "6x6 dense, black",
1981
+ description: "unscii squeezed to 6x6 — densest readable cell, fewest frames — in black ink.",
1982
+ },
1983
+ {
1984
+ value: "6x6u-sent",
1985
+ label: "6x6 dense, sentence hues",
1986
+ description: "Densest cell with sentence-hue ink.",
1987
+ },
1988
+ {
1989
+ value: "5x8-bw",
1990
+ label: "5x8 legacy, black",
1991
+ description: "Original X.org 5x8 glyphs on the 2576px frame, black ink.",
1992
+ },
1993
+ {
1994
+ value: "5x8-sent",
1995
+ label: "5x8 legacy, sentence hues",
1996
+ description: "The original snapcompact shape (pre-shape-table sessions rendered this).",
1997
+ },
1998
+ {
1999
+ value: "6x12-dim",
2000
+ label: "6x12, dimmed stopwords",
2001
+ description: "X.org 6x12 glyphs, black ink, function words dimmed gray.",
2002
+ },
2003
+ {
2004
+ value: "8x13-bw",
2005
+ label: "8x13, black",
2006
+ description: "X.org 8x13 glyphs, black ink.",
2007
+ },
2008
+ {
2009
+ value: "8on16-bw",
2010
+ label: "8x13 on 16px pitch, black",
2011
+ description: "8x13 glyphs on an 8x16 cell (extra leading), black ink.",
2012
+ },
2013
+ {
2014
+ value: "8on22-bw",
2015
+ label: "8x13 on 22px pitch (leading), black",
2016
+ description:
2017
+ "8x13 glyphs on an 8x22 cell — extra line spacing so rows don't crowd. Default for OpenAI/Google.",
2018
+ },
2019
+ {
2020
+ value: "11on16-bw",
2021
+ label: "8x13 on 11px advance (tracking), black",
2022
+ description:
2023
+ "8x13 glyphs on an 11x16 cell — extra letter spacing so characters don't merge. Default for Anthropic.",
2024
+ },
2025
+ {
2026
+ value: "doc-8on16-bw",
2027
+ label: "Doc 8on16, black",
2028
+ description: "Two word-wrapped newspaper columns of 8x13 glyphs on a 16px pitch, black ink.",
2029
+ },
2030
+ {
2031
+ value: "doc-8on16-sent",
2032
+ label: "Doc 8on16, sentence hues",
2033
+ description: "Two-column doc layout with sentence-hue ink.",
2034
+ },
2035
+ {
2036
+ value: "doc-8on16-sent-dim",
2037
+ label: "Doc 8on16, sentence hues + dimmed stopwords",
2038
+ description: "Two-column doc layout, sentence-hue ink, function words dimmed gray.",
2039
+ },
2040
+ ],
2041
+ },
2042
+ },
2043
+
2044
+ // Branch summaries
2045
+ "branchSummary.enabled": {
2046
+ type: "boolean",
2047
+ default: false,
2048
+ ui: {
2049
+ tab: "context",
2050
+ group: "General",
2051
+ label: "Branch Summaries",
2052
+ description: "Prompt to summarize when leaving a branch",
2053
+ },
2054
+ },
2055
+
2056
+ "branchSummary.reserveTokens": { type: "number", default: 16384 },
2057
+
2058
+ // Memories
2059
+ // Legacy local-memory enable flag kept only for back-compat migration.
2060
+ // Hidden from UI — users should use `memory.backend` instead.
2061
+ "memories.enabled": {
2062
+ type: "boolean",
2063
+ default: false,
2064
+ },
2065
+
2066
+ "memories.maxRolloutsPerStartup": { type: "number", default: 64 },
2067
+
2068
+ "memories.maxRolloutAgeDays": { type: "number", default: 30 },
2069
+
2070
+ "memories.minRolloutIdleHours": { type: "number", default: 12 },
2071
+
2072
+ "memories.threadScanLimit": { type: "number", default: 300 },
2073
+
2074
+ "memories.maxRawMemoriesForGlobal": { type: "number", default: 200 },
2075
+
2076
+ "memories.stage1Concurrency": { type: "number", default: 8 },
2077
+
2078
+ "memories.stage1LeaseSeconds": { type: "number", default: 120 },
2079
+
2080
+ "memories.stage1RetryDelaySeconds": { type: "number", default: 120 },
2081
+
2082
+ "memories.phase2LeaseSeconds": { type: "number", default: 180 },
2083
+
2084
+ "memories.phase2RetryDelaySeconds": { type: "number", default: 180 },
2085
+
2086
+ "memories.phase2HeartbeatSeconds": { type: "number", default: 30 },
2087
+
2088
+ "memories.rolloutPayloadPercent": { type: "number", default: 0.7 },
2089
+
2090
+ "memories.phase1InputTokenLimit": { type: "number", default: 4000 },
2091
+
2092
+ "memories.fallbackTokenLimit": { type: "number", default: 16000 },
2093
+
2094
+ "memories.summaryInjectionTokenLimit": { type: "number", default: 5000 },
2095
+
2096
+ // Memory backend selector — picks between local memories pipeline,
2097
+ // Mnemopi local SQLite, Hindsight remote memory, or off. Legacy
2098
+ // `memories.enabled` keeps gating the local backend; see config/settings.ts
2099
+ // migration for details.
2100
+ "memory.backend": {
2101
+ type: "enum",
2102
+ values: ["off", "local", "hindsight", "mnemopi"] as const,
2103
+ default: "off",
2104
+ ui: {
2105
+ tab: "memory",
2106
+ group: "General",
2107
+ label: "Memory Backend",
2108
+ description: "Off, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory",
2109
+ options: [
2110
+ { value: "off", label: "Off", description: "No memory subsystem runs" },
2111
+ { value: "local", label: "Local", description: "Local rollout summarisation pipeline (memory_summary.md)" },
2112
+ { value: "hindsight", label: "Hindsight", description: "Vectorize Hindsight remote memory service" },
2113
+ {
2114
+ value: "mnemopi",
2115
+ label: "Mnemopi",
2116
+ description: "Local SQLite recall/retain backend with optional embeddings",
2117
+ },
2118
+ ],
2119
+ },
2120
+ },
2121
+
2122
+ // Auto-Learn (experimental): post-stop nudge to capture lessons to memory
2123
+ // and mint/enhance isolated managed skills under ~/.prometheus/agent/managed-skills.
2124
+ // Master flag is default-off -> zero footprint; sub-flags gate behaviour.
2125
+ "autolearn.enabled": {
2126
+ type: "boolean",
2127
+ default: false,
2128
+ ui: {
2129
+ tab: "memory",
2130
+ group: "Auto-Learn",
2131
+ label: "Auto-Learn (experimental)",
2132
+ description:
2133
+ "After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills",
2134
+ },
2135
+ },
2136
+ "autolearn.autoContinue": {
2137
+ type: "boolean",
2138
+ default: false,
2139
+ ui: {
2140
+ tab: "memory",
2141
+ group: "Auto-Learn",
2142
+ label: "Auto-run capture at stop",
2143
+ description:
2144
+ "When on, auto-run one capture turn at stop (uses extra tokens). Off = passive reminder on your next turn.",
2145
+ condition: "autolearnActive",
2146
+ },
2147
+ },
2148
+ // Config-file-only knob (numbers without `options` are hidden from the UI).
2149
+ "autolearn.minToolCalls": { type: "number", default: 5 },
2150
+
2151
+ // Self-improvement trajectory. Automatic learning may update memory, user
2152
+ // profile, and generated skills; SOUL/identity stays stable and proposal-only.
2153
+ "selfImprovement.mode": {
2154
+ type: "enum",
2155
+ values: ["memory-and-skills", "off"] as const,
2156
+ default: "memory-and-skills",
2157
+ ui: {
2158
+ tab: "memory",
2159
+ group: "Self Improvement",
2160
+ label: "Self Improvement",
2161
+ description:
2162
+ "Hermes-style native learning: memory, user profile, and skills update automatically; SOUL stays stable",
2163
+ options: [
2164
+ {
2165
+ value: "memory-and-skills",
1613
2166
  label: "Memory and Skills",
1614
2167
  description: "Allow the local memory backend to maintain MEMORY.md, USER.md, and generated skills",
1615
2168
  },
@@ -1623,6 +2176,7 @@ export const SETTINGS_SCHEMA = {
1623
2176
  default: "memory-and-skills",
1624
2177
  ui: {
1625
2178
  tab: "memory",
2179
+ group: "Self Improvement",
1626
2180
  label: "Post-Turn Review",
1627
2181
  description:
1628
2182
  "Hermes-style background review after settled turns, routed through the native Prometheus memory pipeline",
@@ -1642,6 +2196,7 @@ export const SETTINGS_SCHEMA = {
1642
2196
  default: 10,
1643
2197
  ui: {
1644
2198
  tab: "memory",
2199
+ group: "Self Improvement",
1645
2200
  label: "Review Turn Interval",
1646
2201
  description: "User turns between post-turn self-improvement reviews; 10 mirrors Hermes",
1647
2202
  },
@@ -1652,6 +2207,7 @@ export const SETTINGS_SCHEMA = {
1652
2207
  default: "propose",
1653
2208
  ui: {
1654
2209
  tab: "memory",
2210
+ group: "Self Improvement",
1655
2211
  label: "Identity Review",
1656
2212
  description: "Proposal-only SOUL review; never rewrites SOUL.md automatically",
1657
2213
  options: [
@@ -1670,6 +2226,7 @@ export const SETTINGS_SCHEMA = {
1670
2226
  default: "dry-run",
1671
2227
  ui: {
1672
2228
  tab: "memory",
2229
+ group: "Self Improvement",
1673
2230
  label: "Skill Curator",
1674
2231
  description: "Report-only generated-skill curation with recoverable archive lifecycle",
1675
2232
  options: [
@@ -1687,6 +2244,7 @@ export const SETTINGS_SCHEMA = {
1687
2244
  default: 30,
1688
2245
  ui: {
1689
2246
  tab: "memory",
2247
+ group: "Self Improvement",
1690
2248
  label: "Skill Stale Days",
1691
2249
  description: "Days of no generated-skill activity before the dry-run curator marks it stale",
1692
2250
  },
@@ -1696,51 +2254,55 @@ export const SETTINGS_SCHEMA = {
1696
2254
  default: 90,
1697
2255
  ui: {
1698
2256
  tab: "memory",
2257
+ group: "Self Improvement",
1699
2258
  label: "Skill Archive Days",
1700
2259
  description: "Days of no generated-skill activity before the dry-run curator suggests archive",
1701
2260
  },
1702
2261
  },
1703
2262
 
1704
- // Prometheus Memory local SQLite memory backend.
1705
- "prometheusMemory.dbPath": {
2263
+ // Mnemopi local SQLite memory backend.
2264
+ "mnemopi.dbPath": {
1706
2265
  type: "string",
1707
2266
  default: undefined,
1708
2267
  ui: {
1709
2268
  tab: "memory",
1710
- label: "Prometheus Memory DB Path",
2269
+ group: "Mnemopi",
2270
+ label: "Mnemopi DB Path",
1711
2271
  description: "Optional SQLite DB path. Defaults to the agent memories directory.",
1712
- condition: "prometheusMemoryActive",
2272
+ condition: "mnemopiActive",
1713
2273
  },
1714
2274
  },
1715
- "prometheusMemory.bank": {
2275
+ "mnemopi.bank": {
1716
2276
  type: "string",
1717
2277
  default: undefined,
1718
2278
  ui: {
1719
2279
  tab: "memory",
1720
- label: "Prometheus Memory Bank",
2280
+ group: "Mnemopi",
2281
+ label: "Mnemopi Bank",
1721
2282
  description: "Optional shared bank base name. Per-project modes derive project-local banks from it.",
1722
- condition: "prometheusMemoryActive",
2283
+ condition: "mnemopiActive",
1723
2284
  },
1724
2285
  },
1725
- "prometheusMemory.scoping": {
2286
+ "mnemopi.scoping": {
1726
2287
  type: "enum",
1727
2288
  values: ["global", "per-project", "per-project-tagged"] as const,
1728
2289
  default: "per-project",
1729
2290
  ui: {
1730
2291
  tab: "memory",
1731
- label: "Prometheus Memory Scoping",
2292
+ group: "Mnemopi",
2293
+ label: "Mnemopi Scoping",
1732
2294
  description:
1733
2295
  "global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility",
1734
2296
  options: [
1735
2297
  {
1736
2298
  value: "global",
1737
2299
  label: "Global",
1738
- description: "One shared Prometheus Memory bank for every project",
2300
+ description: "One shared Mnemopi bank for every project",
1739
2301
  },
1740
2302
  {
1741
2303
  value: "per-project",
1742
2304
  label: "Per project",
1743
- description: "Project-local Prometheus Memory bank per cwd basename",
2305
+ description: "Project-local Mnemopi bank per cwd basename",
1744
2306
  },
1745
2307
  {
1746
2308
  value: "per-project-tagged",
@@ -1748,121 +2310,179 @@ export const SETTINGS_SCHEMA = {
1748
2310
  description: "Write to a project-local bank but merge project + shared recall results",
1749
2311
  },
1750
2312
  ],
1751
- condition: "prometheusMemoryActive",
2313
+ condition: "mnemopiActive",
2314
+ },
2315
+ },
2316
+ "mnemopi.embeddingVariant": {
2317
+ type: "enum",
2318
+ values: ["en", "multilingual"] as const,
2319
+ default: "en",
2320
+ ui: {
2321
+ tab: "memory",
2322
+ group: "Mnemopi",
2323
+ label: "Embedding variant",
2324
+ description:
2325
+ "Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.",
2326
+ options: [
2327
+ {
2328
+ value: "en",
2329
+ label: "English (bge-base-en-v1.5)",
2330
+ description: "BAAI/bge-base-en-v1.5 (768d), English-only",
2331
+ },
2332
+ {
2333
+ value: "multilingual",
2334
+ label: "Multilingual (multilingual-e5-large)",
2335
+ description: "intfloat/multilingual-e5-large (1024d), cross-language recall",
2336
+ },
2337
+ ],
2338
+ condition: "mnemopiActive",
1752
2339
  },
1753
2340
  },
1754
- "prometheusMemory.autoRecall": {
2341
+ "mnemopi.autoRecall": {
1755
2342
  type: "boolean",
1756
2343
  default: true,
1757
2344
  ui: {
1758
2345
  tab: "memory",
1759
- label: "Prometheus Memory Auto Recall",
2346
+ group: "Mnemopi",
2347
+ label: "Mnemopi Auto Recall",
1760
2348
  description: "Recall local memories into the first turn of each session",
1761
- condition: "prometheusMemoryActive",
2349
+ condition: "mnemopiActive",
1762
2350
  },
1763
2351
  },
1764
- "prometheusMemory.autoRetain": {
2352
+ "mnemopi.autoRetain": {
1765
2353
  type: "boolean",
1766
2354
  default: true,
1767
2355
  ui: {
1768
2356
  tab: "memory",
1769
- label: "Prometheus Memory Auto Retain",
1770
- description: "Retain completed conversation turns into local Prometheus Memory",
1771
- condition: "prometheusMemoryActive",
2357
+ group: "Mnemopi",
2358
+ label: "Mnemopi Auto Retain",
2359
+ description: "Retain completed conversation turns into local Mnemopi memory",
2360
+ condition: "mnemopiActive",
2361
+ },
2362
+ },
2363
+ "mnemopi.polyphonicRecall": {
2364
+ type: "boolean",
2365
+ default: false,
2366
+ ui: {
2367
+ tab: "memory",
2368
+ group: "Mnemopi",
2369
+ label: "Mnemopi Polyphonic Recall",
2370
+ description: "Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion",
2371
+ condition: "mnemopiActive",
1772
2372
  },
1773
2373
  },
1774
- "prometheusMemory.noEmbeddings": {
2374
+ "mnemopi.enhancedRecall": {
1775
2375
  type: "boolean",
1776
2376
  default: false,
1777
2377
  ui: {
1778
2378
  tab: "memory",
1779
- label: "Prometheus Memory Disable Embeddings",
2379
+ group: "Mnemopi",
2380
+ label: "Mnemopi Enhanced Recall",
2381
+ description: "Enable the tiered query result cache for repeated and similar recall queries",
2382
+ condition: "mnemopiActive",
2383
+ },
2384
+ },
2385
+ "mnemopi.noEmbeddings": {
2386
+ type: "boolean",
2387
+ default: false,
2388
+ ui: {
2389
+ tab: "memory",
2390
+ group: "Mnemopi",
2391
+ label: "Mnemopi Disable Embeddings",
1780
2392
  description: "Force deterministic FTS-only recall instead of vector embeddings",
1781
- condition: "prometheusMemoryActive",
2393
+ condition: "mnemopiActive",
1782
2394
  },
1783
2395
  },
1784
- "prometheusMemory.embeddingModel": {
2396
+ "mnemopi.embeddingModel": {
1785
2397
  type: "string",
1786
2398
  default: undefined,
1787
2399
  ui: {
1788
2400
  tab: "memory",
1789
- label: "Prometheus Memory Embedding Model",
1790
- description: "Optional embedding model override passed to Prometheus Memory",
1791
- condition: "prometheusMemoryActive",
2401
+ group: "Mnemopi",
2402
+ label: "Mnemopi Embedding Model",
2403
+ description:
2404
+ "Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.",
2405
+ condition: "mnemopiActive",
1792
2406
  },
1793
2407
  },
1794
- "prometheusMemory.embeddingApiUrl": {
2408
+ "mnemopi.embeddingApiUrl": {
1795
2409
  type: "string",
1796
2410
  default: undefined,
1797
2411
  ui: {
1798
2412
  tab: "memory",
1799
- label: "Prometheus Memory Embedding API URL",
1800
- description: "Optional OpenAI-compatible embedding endpoint passed to Prometheus Memory",
1801
- condition: "prometheusMemoryActive",
2413
+ group: "Mnemopi",
2414
+ label: "Mnemopi Embedding API URL",
2415
+ description: "Optional OpenAI-compatible embedding endpoint passed to Mnemopi",
2416
+ condition: "mnemopiActive",
1802
2417
  },
1803
2418
  },
1804
- "prometheusMemory.embeddingApiKey": {
2419
+ "mnemopi.embeddingApiKey": {
1805
2420
  type: "string",
1806
2421
  default: undefined,
1807
2422
  ui: {
1808
2423
  tab: "memory",
1809
- label: "Prometheus Memory Embedding API Key",
1810
- description: "Optional embedding API key passed to Prometheus Memory",
1811
- condition: "prometheusMemoryActive",
2424
+ group: "Mnemopi",
2425
+ label: "Mnemopi Embedding API Key",
2426
+ description: "Optional embedding API key passed to Mnemopi",
2427
+ condition: "mnemopiActive",
1812
2428
  },
1813
2429
  },
1814
- "prometheusMemory.llmMode": {
2430
+ "mnemopi.llmMode": {
1815
2431
  type: "enum",
1816
2432
  values: ["none", "smol", "remote"] as const,
1817
2433
  default: "smol",
1818
2434
  ui: {
1819
2435
  tab: "memory",
1820
- label: "Prometheus Memory LLM Mode",
2436
+ group: "Mnemopi",
2437
+ label: "Mnemopi LLM Mode",
1821
2438
  description: "Use no LLM, the configured smol model, or a remote OpenAI-compatible endpoint",
1822
- condition: "prometheusMemoryActive",
2439
+ condition: "mnemopiActive",
1823
2440
  options: [
1824
- { value: "none", label: "None", description: "Disable Prometheus Memory LLM-backed extraction" },
2441
+ { value: "none", label: "None", description: "Disable Mnemopi LLM-backed extraction" },
1825
2442
  { value: "smol", label: "Smol", description: "Use the configured Prometheus smol model" },
1826
- { value: "remote", label: "Remote", description: "Use the Prometheus Memory remote LLM settings below" },
2443
+ { value: "remote", label: "Remote", description: "Use the Mnemopi remote LLM settings below" },
1827
2444
  ],
1828
2445
  },
1829
2446
  },
1830
- "prometheusMemory.llmBaseUrl": {
2447
+ "mnemopi.llmBaseUrl": {
1831
2448
  type: "string",
1832
2449
  default: undefined,
1833
2450
  ui: {
1834
2451
  tab: "memory",
1835
- label: "Prometheus Memory LLM Base URL",
1836
- description: "Optional OpenAI-compatible LLM endpoint for Prometheus Memory remote mode",
1837
- condition: "prometheusMemoryActive",
2452
+ group: "Mnemopi",
2453
+ label: "Mnemopi LLM Base URL",
2454
+ description: "Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode",
2455
+ condition: "mnemopiActive",
1838
2456
  },
1839
2457
  },
1840
- "prometheusMemory.llmApiKey": {
2458
+ "mnemopi.llmApiKey": {
1841
2459
  type: "string",
1842
2460
  default: undefined,
1843
2461
  ui: {
1844
2462
  tab: "memory",
1845
- label: "Prometheus Memory LLM API Key",
1846
- description: "Optional LLM API key for Prometheus Memory remote mode",
1847
- condition: "prometheusMemoryActive",
2463
+ group: "Mnemopi",
2464
+ label: "Mnemopi LLM API Key",
2465
+ description: "Optional LLM API key for Mnemopi remote mode",
2466
+ condition: "mnemopiActive",
1848
2467
  },
1849
2468
  },
1850
- "prometheusMemory.llmModel": {
2469
+ "mnemopi.llmModel": {
1851
2470
  type: "string",
1852
2471
  default: undefined,
1853
2472
  ui: {
1854
2473
  tab: "memory",
1855
- label: "Prometheus Memory LLM Model",
1856
- description: "Optional LLM model name for Prometheus Memory remote mode",
1857
- condition: "prometheusMemoryActive",
2474
+ group: "Mnemopi",
2475
+ label: "Mnemopi LLM Model",
2476
+ description: "Optional LLM model name for Mnemopi remote mode",
2477
+ condition: "mnemopiActive",
1858
2478
  },
1859
2479
  },
1860
- "prometheusMemory.retainEveryNTurns": { type: "number", default: 4 },
1861
- "prometheusMemory.recallLimit": { type: "number", default: 8 },
1862
- "prometheusMemory.recallContextTurns": { type: "number", default: 3 },
1863
- "prometheusMemory.recallMaxQueryChars": { type: "number", default: 4000 },
1864
- "prometheusMemory.injectionTokenLimit": { type: "number", default: 5000 },
1865
- "prometheusMemory.debug": { type: "boolean", default: false },
2480
+ "mnemopi.retainEveryNTurns": { type: "number", default: 4 },
2481
+ "mnemopi.recallLimit": { type: "number", default: 8 },
2482
+ "mnemopi.recallContextTurns": { type: "number", default: 3 },
2483
+ "mnemopi.recallMaxQueryChars": { type: "number", default: 4000 },
2484
+ "mnemopi.injectionTokenLimit": { type: "number", default: 5000 },
2485
+ "mnemopi.debug": { type: "boolean", default: false },
1866
2486
 
1867
2487
  // Hindsight (https://hindsight.vectorize.io)
1868
2488
  "hindsight.apiUrl": {
@@ -1870,6 +2490,7 @@ export const SETTINGS_SCHEMA = {
1870
2490
  default: "http://localhost:8888",
1871
2491
  ui: {
1872
2492
  tab: "memory",
2493
+ group: "Hindsight",
1873
2494
  label: "Hindsight API URL",
1874
2495
  description: "Hindsight server URL (Cloud or self-hosted)",
1875
2496
  condition: "hindsightActive",
@@ -1883,6 +2504,7 @@ export const SETTINGS_SCHEMA = {
1883
2504
  default: undefined,
1884
2505
  ui: {
1885
2506
  tab: "memory",
2507
+ group: "Hindsight",
1886
2508
  label: "Hindsight Bank ID",
1887
2509
  description: "Memory bank identifier (default: project name)",
1888
2510
  condition: "hindsightActive",
@@ -1896,6 +2518,7 @@ export const SETTINGS_SCHEMA = {
1896
2518
  default: "per-project-tagged",
1897
2519
  ui: {
1898
2520
  tab: "memory",
2521
+ group: "Hindsight",
1899
2522
  label: "Hindsight Scoping",
1900
2523
  description:
1901
2524
  "global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall",
@@ -1928,6 +2551,7 @@ export const SETTINGS_SCHEMA = {
1928
2551
  default: true,
1929
2552
  ui: {
1930
2553
  tab: "memory",
2554
+ group: "Hindsight",
1931
2555
  label: "Hindsight Auto Recall",
1932
2556
  description: "Recall memories on the first turn of each session",
1933
2557
  condition: "hindsightActive",
@@ -1938,6 +2562,7 @@ export const SETTINGS_SCHEMA = {
1938
2562
  default: true,
1939
2563
  ui: {
1940
2564
  tab: "memory",
2565
+ group: "Hindsight",
1941
2566
  label: "Hindsight Auto Retain",
1942
2567
  description: "Retain transcript every N turns and at session boundaries",
1943
2568
  condition: "hindsightActive",
@@ -1950,6 +2575,7 @@ export const SETTINGS_SCHEMA = {
1950
2575
  default: "full-session",
1951
2576
  ui: {
1952
2577
  tab: "memory",
2578
+ group: "Hindsight",
1953
2579
  label: "Hindsight Retain Mode",
1954
2580
  description: "full-session = upsert one document per session, last-turn = chunked",
1955
2581
  options: [
@@ -1984,6 +2610,7 @@ export const SETTINGS_SCHEMA = {
1984
2610
  default: true,
1985
2611
  ui: {
1986
2612
  tab: "memory",
2613
+ group: "Hindsight",
1987
2614
  label: "Hindsight Mental Models",
1988
2615
  description:
1989
2616
  "Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank — does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.",
@@ -1995,6 +2622,7 @@ export const SETTINGS_SCHEMA = {
1995
2622
  default: true,
1996
2623
  ui: {
1997
2624
  tab: "memory",
2625
+ group: "Hindsight",
1998
2626
  label: "Hindsight Mental Model Auto-Seed",
1999
2627
  description:
2000
2628
  "At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.",
@@ -2010,8 +2638,9 @@ export const SETTINGS_SCHEMA = {
2010
2638
  default: true,
2011
2639
  ui: {
2012
2640
  tab: "context",
2641
+ group: "Rules (TTSR)",
2013
2642
  label: "TTSR",
2014
- description: "Time Traveling Stream Rules: interrupt agent when output matches patterns",
2643
+ description: "Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)",
2015
2644
  },
2016
2645
  },
2017
2646
 
@@ -2021,6 +2650,7 @@ export const SETTINGS_SCHEMA = {
2021
2650
  default: "discard",
2022
2651
  ui: {
2023
2652
  tab: "context",
2653
+ group: "Rules (TTSR)",
2024
2654
  label: "TTSR Context Mode",
2025
2655
  description: "What to do with partial output when TTSR triggers",
2026
2656
  },
@@ -2032,6 +2662,7 @@ export const SETTINGS_SCHEMA = {
2032
2662
  default: "always",
2033
2663
  ui: {
2034
2664
  tab: "context",
2665
+ group: "Rules (TTSR)",
2035
2666
  label: "TTSR Interrupt Mode",
2036
2667
  description: "When to interrupt mid-stream vs inject warning after completion",
2037
2668
  options: [
@@ -2049,6 +2680,7 @@ export const SETTINGS_SCHEMA = {
2049
2680
  default: "once",
2050
2681
  ui: {
2051
2682
  tab: "context",
2683
+ group: "Rules (TTSR)",
2052
2684
  label: "TTSR Repeat Mode",
2053
2685
  description: "How rules can repeat: once per session or after a message gap",
2054
2686
  },
@@ -2059,6 +2691,7 @@ export const SETTINGS_SCHEMA = {
2059
2691
  default: 10,
2060
2692
  ui: {
2061
2693
  tab: "context",
2694
+ group: "Rules (TTSR)",
2062
2695
  label: "TTSR Repeat Gap",
2063
2696
  description: "Messages before a rule can trigger again",
2064
2697
  options: [
@@ -2076,7 +2709,8 @@ export const SETTINGS_SCHEMA = {
2076
2709
  default: true,
2077
2710
  ui: {
2078
2711
  tab: "context",
2079
- label: "Builtin Rules",
2712
+ group: "Rules (TTSR)",
2713
+ label: "Built-in Rules",
2080
2714
  description: "Load the default rules shipped with the agent (override individually with ttsr.disabledRules)",
2081
2715
  },
2082
2716
  },
@@ -2086,6 +2720,7 @@ export const SETTINGS_SCHEMA = {
2086
2720
  default: [] as string[],
2087
2721
  ui: {
2088
2722
  tab: "context",
2723
+ group: "Rules (TTSR)",
2089
2724
  label: "Disabled Rules",
2090
2725
  description: "Rule names to ignore entirely (applies to bundled defaults and your own rules)",
2091
2726
  },
@@ -2101,7 +2736,8 @@ export const SETTINGS_SCHEMA = {
2101
2736
  values: EDIT_MODES,
2102
2737
  default: "hashline",
2103
2738
  ui: {
2104
- tab: "editing",
2739
+ tab: "files",
2740
+ group: "Editing",
2105
2741
  label: "Edit Mode",
2106
2742
  description: "Select the edit tool variant (replace, patch, hashline, or apply_patch)",
2107
2743
  },
@@ -2111,7 +2747,8 @@ export const SETTINGS_SCHEMA = {
2111
2747
  type: "boolean",
2112
2748
  default: true,
2113
2749
  ui: {
2114
- tab: "editing",
2750
+ tab: "files",
2751
+ group: "Editing",
2115
2752
  label: "Fuzzy Match",
2116
2753
  description: "Accept high-confidence fuzzy matches for whitespace differences",
2117
2754
  },
@@ -2121,9 +2758,10 @@ export const SETTINGS_SCHEMA = {
2121
2758
  type: "number",
2122
2759
  default: 0.95,
2123
2760
  ui: {
2124
- tab: "editing",
2761
+ tab: "files",
2762
+ group: "Editing",
2125
2763
  label: "Fuzzy Match Threshold",
2126
- description: "Similarity threshold for fuzzy matches",
2764
+ description: "Similarity threshold (0-1) for accepting fuzzy matches",
2127
2765
  options: [
2128
2766
  { value: "0.85", label: "0.85", description: "Lenient" },
2129
2767
  { value: "0.90", label: "0.90", description: "Moderate" },
@@ -2137,7 +2775,8 @@ export const SETTINGS_SCHEMA = {
2137
2775
  type: "boolean",
2138
2776
  default: false,
2139
2777
  ui: {
2140
- tab: "editing",
2778
+ tab: "files",
2779
+ group: "Editing",
2141
2780
  label: "Abort on Failed Preview",
2142
2781
  description: "Abort streaming edit tool calls when patch preview fails",
2143
2782
  },
@@ -2147,7 +2786,8 @@ export const SETTINGS_SCHEMA = {
2147
2786
  type: "boolean",
2148
2787
  default: true,
2149
2788
  ui: {
2150
- tab: "editing",
2789
+ tab: "files",
2790
+ group: "Editing",
2151
2791
  label: "Block Auto-Generated Files",
2152
2792
  description: "Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",
2153
2793
  },
@@ -2157,7 +2797,8 @@ export const SETTINGS_SCHEMA = {
2157
2797
  type: "boolean",
2158
2798
  default: false,
2159
2799
  ui: {
2160
- tab: "editing",
2800
+ tab: "files",
2801
+ group: "Reading",
2161
2802
  label: "Line Numbers",
2162
2803
  description: "Prepend line numbers to read tool output by default",
2163
2804
  },
@@ -2167,7 +2808,8 @@ export const SETTINGS_SCHEMA = {
2167
2808
  type: "boolean",
2168
2809
  default: true,
2169
2810
  ui: {
2170
- tab: "editing",
2811
+ tab: "files",
2812
+ group: "Reading",
2171
2813
  label: "Hash Lines",
2172
2814
  description:
2173
2815
  "Include snapshot-tag headers and line numbers in read output for hashline edit mode ([PATH#TAG] plus LINE:content)",
@@ -2178,7 +2820,8 @@ export const SETTINGS_SCHEMA = {
2178
2820
  type: "number",
2179
2821
  default: 300,
2180
2822
  ui: {
2181
- tab: "editing",
2823
+ tab: "files",
2824
+ group: "Reading",
2182
2825
  label: "Default Read Limit",
2183
2826
  description: "Default number of lines returned when agent calls read without a limit",
2184
2827
  options: [
@@ -2195,7 +2838,8 @@ export const SETTINGS_SCHEMA = {
2195
2838
  type: "boolean",
2196
2839
  default: true,
2197
2840
  ui: {
2198
- tab: "editing",
2841
+ tab: "files",
2842
+ group: "Read Summaries",
2199
2843
  label: "Read Summaries",
2200
2844
  description: "Return structural code summaries when read is called without an explicit selector",
2201
2845
  },
@@ -2205,7 +2849,8 @@ export const SETTINGS_SCHEMA = {
2205
2849
  type: "boolean",
2206
2850
  default: false,
2207
2851
  ui: {
2208
- tab: "editing",
2852
+ tab: "files",
2853
+ group: "Read Summaries",
2209
2854
  label: "Prose Summaries",
2210
2855
  description: "Return structural summaries for Markdown and plain text reads",
2211
2856
  },
@@ -2215,7 +2860,8 @@ export const SETTINGS_SCHEMA = {
2215
2860
  type: "number",
2216
2861
  default: 4,
2217
2862
  ui: {
2218
- tab: "editing",
2863
+ tab: "files",
2864
+ group: "Read Summaries",
2219
2865
  label: "Read Summary Body Lines",
2220
2866
  description: "Minimum multiline body or literal length before read summaries collapse it",
2221
2867
  },
@@ -2225,7 +2871,8 @@ export const SETTINGS_SCHEMA = {
2225
2871
  type: "number",
2226
2872
  default: 6,
2227
2873
  ui: {
2228
- tab: "editing",
2874
+ tab: "files",
2875
+ group: "Read Summaries",
2229
2876
  label: "Read Summary Comment Lines",
2230
2877
  description: "Minimum multiline block comment length before read summaries collapse it",
2231
2878
  },
@@ -2235,7 +2882,8 @@ export const SETTINGS_SCHEMA = {
2235
2882
  type: "number",
2236
2883
  default: 100,
2237
2884
  ui: {
2238
- tab: "editing",
2885
+ tab: "files",
2886
+ group: "Read Summaries",
2239
2887
  label: "Read Summary Minimum File Length",
2240
2888
  description: "Files with fewer total lines are read verbatim instead of structurally summarized",
2241
2889
  },
@@ -2245,7 +2893,8 @@ export const SETTINGS_SCHEMA = {
2245
2893
  type: "number",
2246
2894
  default: 50,
2247
2895
  ui: {
2248
- tab: "editing",
2896
+ tab: "files",
2897
+ group: "Read Summaries",
2249
2898
  label: "Read Summary Unfold Target",
2250
2899
  description:
2251
2900
  "BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.",
@@ -2256,7 +2905,8 @@ export const SETTINGS_SCHEMA = {
2256
2905
  type: "number",
2257
2906
  default: 100,
2258
2907
  ui: {
2259
- tab: "editing",
2908
+ tab: "files",
2909
+ group: "Read Summaries",
2260
2910
  label: "Read Summary Unfold Ceiling",
2261
2911
  description:
2262
2912
  "Hard ceiling on summary size while BFS-unfolding. An unfold that would exceed this is reverted and unfolding stops.",
@@ -2267,7 +2917,8 @@ export const SETTINGS_SCHEMA = {
2267
2917
  type: "boolean",
2268
2918
  default: false,
2269
2919
  ui: {
2270
- tab: "editing",
2920
+ tab: "files",
2921
+ group: "Reading",
2271
2922
  label: "Inline Read Previews",
2272
2923
  description: "Render read tool results inline in the transcript instead of summary rows",
2273
2924
  },
@@ -2277,14 +2928,32 @@ export const SETTINGS_SCHEMA = {
2277
2928
  "lsp.enabled": {
2278
2929
  type: "boolean",
2279
2930
  default: true,
2280
- ui: { tab: "editing", label: "LSP", description: "Enable the lsp tool for language server protocol" },
2931
+ ui: {
2932
+ tab: "files",
2933
+ group: "LSP",
2934
+ label: "LSP",
2935
+ description: "Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)",
2936
+ },
2937
+ },
2938
+
2939
+ "lsp.lazy": {
2940
+ type: "boolean",
2941
+ default: true,
2942
+ ui: {
2943
+ tab: "files",
2944
+ group: "LSP",
2945
+ label: "Lazy LSP Startup",
2946
+ description:
2947
+ "Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup",
2948
+ },
2281
2949
  },
2282
2950
 
2283
2951
  "lsp.formatOnWrite": {
2284
2952
  type: "boolean",
2285
2953
  default: false,
2286
2954
  ui: {
2287
- tab: "editing",
2955
+ tab: "files",
2956
+ group: "LSP",
2288
2957
  label: "Format on Write",
2289
2958
  description: "Automatically format code files using LSP after writing",
2290
2959
  },
@@ -2294,7 +2963,8 @@ export const SETTINGS_SCHEMA = {
2294
2963
  type: "boolean",
2295
2964
  default: true,
2296
2965
  ui: {
2297
- tab: "editing",
2966
+ tab: "files",
2967
+ group: "LSP",
2298
2968
  label: "Diagnostics on Write",
2299
2969
  description: "Return LSP diagnostics after writing code files",
2300
2970
  },
@@ -2304,7 +2974,8 @@ export const SETTINGS_SCHEMA = {
2304
2974
  type: "boolean",
2305
2975
  default: false,
2306
2976
  ui: {
2307
- tab: "editing",
2977
+ tab: "files",
2978
+ group: "LSP",
2308
2979
  label: "Diagnostics on Edit",
2309
2980
  description: "Return LSP diagnostics after editing code files",
2310
2981
  },
@@ -2314,17 +2985,45 @@ export const SETTINGS_SCHEMA = {
2314
2985
  type: "boolean",
2315
2986
  default: true,
2316
2987
  ui: {
2317
- tab: "editing",
2988
+ tab: "files",
2989
+ group: "LSP",
2318
2990
  label: "Deduplicate Diagnostics",
2319
2991
  description: "Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones",
2320
2992
  },
2321
2993
  },
2322
2994
 
2995
+ "bash.enabled": {
2996
+ type: "boolean",
2997
+ default: true,
2998
+ ui: {
2999
+ tab: "shell",
3000
+ group: "Bash",
3001
+ label: "Bash",
3002
+ description: "Enable the bash tool for shell command execution",
3003
+ },
3004
+ },
3005
+
3006
+ "bash.autoBackground.enabled": {
3007
+ type: "boolean",
3008
+ default: false,
3009
+ ui: {
3010
+ tab: "shell",
3011
+ group: "Bash",
3012
+ label: "Bash Auto-Background",
3013
+ description: "Automatically background long-running bash commands and deliver the result later",
3014
+ },
3015
+ },
3016
+
2323
3017
  // Bash interceptor
2324
3018
  "bashInterceptor.enabled": {
2325
3019
  type: "boolean",
2326
3020
  default: false,
2327
- ui: { tab: "editing", label: "Bash Interceptor", description: "Block shell commands that have dedicated tools" },
3021
+ ui: {
3022
+ tab: "shell",
3023
+ group: "Bash",
3024
+ label: "Bash Interceptor",
3025
+ description: "Block shell commands that have dedicated tools",
3026
+ },
2328
3027
  },
2329
3028
  "bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
2330
3029
 
@@ -2332,8 +3031,9 @@ export const SETTINGS_SCHEMA = {
2332
3031
  type: "boolean",
2333
3032
  default: true,
2334
3033
  ui: {
2335
- tab: "editing",
2336
- label: "Strip Trailing head/tail",
3034
+ tab: "shell",
3035
+ group: "Bash",
3036
+ label: "Strip head/tail Pipes",
2337
3037
  description:
2338
3038
  "Silently drop trailing `| head`/`| tail` pipes from single-line bash commands. Output is already truncated automatically.",
2339
3039
  },
@@ -2344,7 +3044,8 @@ export const SETTINGS_SCHEMA = {
2344
3044
  type: "boolean",
2345
3045
  default: true,
2346
3046
  ui: {
2347
- tab: "editing",
3047
+ tab: "shell",
3048
+ group: "Bash",
2348
3049
  label: "Shell Minimizer",
2349
3050
  description: "Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent",
2350
3051
  },
@@ -2359,15 +3060,31 @@ export const SETTINGS_SCHEMA = {
2359
3060
  type: "number",
2360
3061
  default: 4 * 1024 * 1024,
2361
3062
  },
3063
+ "shellMinimizer.sourceOutlineLevel": {
3064
+ type: "enum",
3065
+ values: ["default", "aggressive"] as const,
3066
+ default: "default",
3067
+ ui: {
3068
+ tab: "shell",
3069
+ group: "Bash",
3070
+ label: "Shell Minimizer Source Outline",
3071
+ description: "Source outline mode for cat/read of source files: default or aggressive",
3072
+ },
3073
+ },
3074
+ "shellMinimizer.legacyFilters": {
3075
+ type: "boolean",
3076
+ default: undefined,
3077
+ },
2362
3078
 
2363
3079
  // Eval (per-backend toggles; add more as new backends ship, e.g. eval.ts)
2364
3080
  "eval.py": {
2365
3081
  type: "boolean",
2366
3082
  default: true,
2367
3083
  ui: {
2368
- tab: "editing",
2369
- label: "Eval: Python backend",
2370
- description: "Allow the eval tool to dispatch to the IPython kernel",
3084
+ tab: "shell",
3085
+ group: "Eval & Python",
3086
+ label: "Python Eval Backend",
3087
+ description: "Allow the eval tool to dispatch Python cells to the IPython kernel",
2371
3088
  },
2372
3089
  },
2373
3090
 
@@ -2375,9 +3092,10 @@ export const SETTINGS_SCHEMA = {
2375
3092
  type: "boolean",
2376
3093
  default: true,
2377
3094
  ui: {
2378
- tab: "editing",
2379
- label: "Eval: JavaScript backend",
2380
- description: "Allow the eval tool to dispatch to the in-process JavaScript runtime",
3095
+ tab: "shell",
3096
+ group: "Eval & Python",
3097
+ label: "JavaScript Eval Backend",
3098
+ description: "Allow the eval tool to dispatch JavaScript cells to the in-process runtime",
2381
3099
  },
2382
3100
  },
2383
3101
 
@@ -2387,9 +3105,21 @@ export const SETTINGS_SCHEMA = {
2387
3105
  values: ["session", "per-call"] as const,
2388
3106
  default: "session",
2389
3107
  ui: {
2390
- tab: "editing",
3108
+ tab: "shell",
3109
+ group: "Eval & Python",
2391
3110
  label: "Python Kernel Mode",
2392
- description: "Whether to keep IPython kernel alive across calls",
3111
+ description: "Keep the IPython kernel alive across eval calls or start fresh each time",
3112
+ },
3113
+ },
3114
+ "python.interpreter": {
3115
+ type: "string",
3116
+ default: "",
3117
+ ui: {
3118
+ tab: "shell",
3119
+ group: "Eval & Python",
3120
+ label: "Python Interpreter",
3121
+ description:
3122
+ "Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.",
2393
3123
  },
2394
3124
  },
2395
3125
 
@@ -2402,7 +3132,8 @@ export const SETTINGS_SCHEMA = {
2402
3132
  type: "record",
2403
3133
  default: {},
2404
3134
  ui: {
2405
- tab: "tools",
3135
+ tab: "interaction",
3136
+ group: "Approvals",
2406
3137
  label: "Tool Approval Policies",
2407
3138
  description:
2408
3139
  "Per-tool approval policies. Set to 'allow' to auto-approve, 'prompt' to require confirmation, or 'deny' to block. Overrides are honored in every approval mode.",
@@ -2419,9 +3150,10 @@ export const SETTINGS_SCHEMA = {
2419
3150
  default: "yolo",
2420
3151
  ui: {
2421
3152
  tab: "interaction",
3153
+ group: "Approvals",
2422
3154
  label: "Tool Approval",
2423
3155
  description:
2424
- "Default approval behaviour for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.",
3156
+ "Default approval behavior for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.",
2425
3157
  options: [
2426
3158
  {
2427
3159
  value: "always-ask",
@@ -2448,13 +3180,23 @@ export const SETTINGS_SCHEMA = {
2448
3180
  "todo.enabled": {
2449
3181
  type: "boolean",
2450
3182
  default: true,
2451
- ui: { tab: "tools", label: "Todos", description: "Enable the todo tool for task tracking" },
3183
+ ui: {
3184
+ tab: "tools",
3185
+ group: "Available Tools",
3186
+ label: "Todos",
3187
+ description: "Enable the todo tool for task tracking",
3188
+ },
2452
3189
  },
2453
3190
 
2454
3191
  "todo.reminders": {
2455
3192
  type: "boolean",
2456
3193
  default: true,
2457
- ui: { tab: "tools", label: "Todo Reminders", description: "Remind agent to complete todos before stopping" },
3194
+ ui: {
3195
+ tab: "tools",
3196
+ group: "Todos",
3197
+ label: "Todo Reminders",
3198
+ description: "Remind the agent to complete todos before stopping",
3199
+ },
2458
3200
  },
2459
3201
 
2460
3202
  "todo.reminders.max": {
@@ -2462,8 +3204,9 @@ export const SETTINGS_SCHEMA = {
2462
3204
  default: 3,
2463
3205
  ui: {
2464
3206
  tab: "tools",
3207
+ group: "Todos",
2465
3208
  label: "Todo Reminder Limit",
2466
- description: "Maximum reminders to complete todos before giving up",
3209
+ description: "Maximum number of todo reminders before giving up",
2467
3210
  options: [
2468
3211
  { value: "1", label: "1 reminder" },
2469
3212
  { value: "2", label: "2 reminders" },
@@ -2474,12 +3217,23 @@ export const SETTINGS_SCHEMA = {
2474
3217
  },
2475
3218
 
2476
3219
  "todo.eager": {
2477
- type: "boolean",
2478
- default: false,
3220
+ type: "enum",
3221
+ values: ["default", "preferred", "always"] as const,
3222
+ default: "default",
2479
3223
  ui: {
2480
3224
  tab: "tools",
3225
+ group: "Todos",
2481
3226
  label: "Create Todos Automatically",
2482
- description: "Automatically create a comprehensive todo list after the first message",
3227
+ description: "How strongly to push automatic todo-list creation after the first message",
3228
+ options: [
3229
+ { value: "default", label: "Default", description: "Model decides; no automatic todo list" },
3230
+ {
3231
+ value: "preferred",
3232
+ label: "Preferred",
3233
+ description: "Suggests a todo list on the first message (reminder, not forced)",
3234
+ },
3235
+ { value: "always", label: "Always", description: "Forces a comprehensive todo list on the first message" },
3236
+ ],
2483
3237
  },
2484
3238
  },
2485
3239
 
@@ -2487,13 +3241,23 @@ export const SETTINGS_SCHEMA = {
2487
3241
  "find.enabled": {
2488
3242
  type: "boolean",
2489
3243
  default: true,
2490
- ui: { tab: "tools", label: "Find", description: "Enable the find tool for file searching" },
3244
+ ui: {
3245
+ tab: "tools",
3246
+ group: "Available Tools",
3247
+ label: "Find",
3248
+ description: "Enable the find tool for glob-based file lookup",
3249
+ },
2491
3250
  },
2492
3251
 
2493
3252
  "search.enabled": {
2494
3253
  type: "boolean",
2495
3254
  default: true,
2496
- ui: { tab: "tools", label: "Search", description: "Enable the search tool for content searching" },
3255
+ ui: {
3256
+ tab: "tools",
3257
+ group: "Available Tools",
3258
+ label: "Search",
3259
+ description: "Enable the search tool for regex content search",
3260
+ },
2497
3261
  },
2498
3262
 
2499
3263
  "search.contextBefore": {
@@ -2501,6 +3265,7 @@ export const SETTINGS_SCHEMA = {
2501
3265
  default: 1,
2502
3266
  ui: {
2503
3267
  tab: "tools",
3268
+ group: "Search & Browser",
2504
3269
  label: "Search Context Before",
2505
3270
  description: "Lines of context before each search match",
2506
3271
  options: [
@@ -2518,6 +3283,7 @@ export const SETTINGS_SCHEMA = {
2518
3283
  default: 3,
2519
3284
  ui: {
2520
3285
  tab: "tools",
3286
+ group: "Search & Browser",
2521
3287
  label: "Search Context After",
2522
3288
  description: "Lines of context after each search match",
2523
3289
  options: [
@@ -2536,6 +3302,7 @@ export const SETTINGS_SCHEMA = {
2536
3302
  default: true,
2537
3303
  ui: {
2538
3304
  tab: "tools",
3305
+ group: "Available Tools",
2539
3306
  label: "AST Grep",
2540
3307
  description: "Enable the ast_grep tool for structural AST search",
2541
3308
  },
@@ -2546,39 +3313,12 @@ export const SETTINGS_SCHEMA = {
2546
3313
  default: true,
2547
3314
  ui: {
2548
3315
  tab: "tools",
3316
+ group: "Available Tools",
2549
3317
  label: "AST Edit",
2550
3318
  description: "Enable the ast_edit tool for structural AST rewrites",
2551
3319
  },
2552
3320
  },
2553
3321
 
2554
- "irc.enabled": {
2555
- type: "boolean",
2556
- default: true,
2557
- ui: {
2558
- tab: "tools",
2559
- label: "IRC",
2560
- description: "Enable agent-to-agent IRC messaging via the irc tool",
2561
- },
2562
- },
2563
-
2564
- "irc.timeoutMs": {
2565
- type: "number",
2566
- default: 120_000,
2567
- ui: {
2568
- tab: "tools",
2569
- label: "IRC Timeout",
2570
- description:
2571
- "Drop IRC messages whose recipient does not respond within this many milliseconds (0 disables the timeout)",
2572
- options: [
2573
- { value: "0", label: "Disabled" },
2574
- { value: "30000", label: "30 seconds" },
2575
- { value: "60000", label: "1 minute" },
2576
- { value: "120000", label: "2 minutes" },
2577
- { value: "300000", label: "5 minutes" },
2578
- ],
2579
- },
2580
- },
2581
-
2582
3322
  // Optional tools
2583
3323
 
2584
3324
  "renderMermaid.enabled": {
@@ -2586,6 +3326,7 @@ export const SETTINGS_SCHEMA = {
2586
3326
  default: false,
2587
3327
  ui: {
2588
3328
  tab: "tools",
3329
+ group: "Available Tools",
2589
3330
  label: "Render Mermaid",
2590
3331
  description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering",
2591
3332
  },
@@ -2596,18 +3337,20 @@ export const SETTINGS_SCHEMA = {
2596
3337
  default: true,
2597
3338
  ui: {
2598
3339
  tab: "tools",
3340
+ group: "Available Tools",
2599
3341
  label: "Debug",
2600
3342
  description: "Enable the debug tool for DAP-based debugging",
2601
3343
  },
2602
3344
  },
2603
3345
 
2604
- "tts.enabled": {
3346
+ "speechgen.enabled": {
2605
3347
  type: "boolean",
2606
3348
  default: false,
2607
3349
  ui: {
2608
3350
  tab: "tools",
2609
- label: "Text-to-Speech",
2610
- description: "Enable the tts tool for xAI Grok Voice speech synthesis",
3351
+ group: "Available Tools",
3352
+ label: "Speech Generation",
3353
+ description: "Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis",
2611
3354
  },
2612
3355
  },
2613
3356
 
@@ -2616,6 +3359,7 @@ export const SETTINGS_SCHEMA = {
2616
3359
  default: false,
2617
3360
  ui: {
2618
3361
  tab: "tools",
3362
+ group: "Available Tools",
2619
3363
  label: "Inspect Image",
2620
3364
  description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model",
2621
3365
  },
@@ -2626,6 +3370,7 @@ export const SETTINGS_SCHEMA = {
2626
3370
  default: false,
2627
3371
  ui: {
2628
3372
  tab: "tools",
3373
+ group: "Available Tools",
2629
3374
  label: "Checkpoint/Rewind",
2630
3375
  description: "Enable the checkpoint and rewind tools for context checkpointing",
2631
3376
  },
@@ -2635,7 +3380,12 @@ export const SETTINGS_SCHEMA = {
2635
3380
  "fetch.enabled": {
2636
3381
  type: "boolean",
2637
3382
  default: true,
2638
- ui: { tab: "tools", label: "Read URLs", description: "Allow the read tool to fetch and process URLs" },
3383
+ ui: {
3384
+ tab: "tools",
3385
+ group: "Available Tools",
3386
+ label: "Read URLs",
3387
+ description: "Allow the read tool to fetch and process URLs",
3388
+ },
2639
3389
  },
2640
3390
 
2641
3391
  "vault.enabled": {
@@ -2643,6 +3393,7 @@ export const SETTINGS_SCHEMA = {
2643
3393
  default: false,
2644
3394
  ui: {
2645
3395
  tab: "tools",
3396
+ group: "Available Tools",
2646
3397
  label: "Obsidian Vault",
2647
3398
  description:
2648
3399
  "Enable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.",
@@ -2654,6 +3405,7 @@ export const SETTINGS_SCHEMA = {
2654
3405
  default: false,
2655
3406
  ui: {
2656
3407
  tab: "tools",
3408
+ group: "Available Tools",
2657
3409
  label: "GitHub CLI",
2658
3410
  description:
2659
3411
  "Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)",
@@ -2665,7 +3417,8 @@ export const SETTINGS_SCHEMA = {
2665
3417
  default: true,
2666
3418
  ui: {
2667
3419
  tab: "tools",
2668
- label: "GitHub view cache",
3420
+ group: "GitHub",
3421
+ label: "GitHub View Cache",
2669
3422
  description:
2670
3423
  "Cache rendered issue/PR view output in ~/.prometheus/cache/github-cache.db so repeated reads are free",
2671
3424
  },
@@ -2676,8 +3429,10 @@ export const SETTINGS_SCHEMA = {
2676
3429
  default: 300,
2677
3430
  ui: {
2678
3431
  tab: "tools",
2679
- label: "GitHub cache soft TTL (seconds)",
2680
- description: "Within this window, cached issue/PR view rows are returned directly. Default 5 minutes.",
3432
+ group: "GitHub",
3433
+ label: "GitHub Cache Soft TTL",
3434
+ description:
3435
+ "Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)",
2681
3436
  },
2682
3437
  },
2683
3438
 
@@ -2686,16 +3441,22 @@ export const SETTINGS_SCHEMA = {
2686
3441
  default: 604800,
2687
3442
  ui: {
2688
3443
  tab: "tools",
2689
- label: "GitHub cache hard TTL (seconds)",
3444
+ group: "GitHub",
3445
+ label: "GitHub Cache Hard TTL",
2690
3446
  description:
2691
- "Past soft TTL but within hard TTL, the tool returns the cached row and refreshes it in the background. Past hard TTL, the row is dropped. Default 7 days.",
3447
+ "Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days)",
2692
3448
  },
2693
3449
  },
2694
3450
 
2695
3451
  "web_search.enabled": {
2696
3452
  type: "boolean",
2697
3453
  default: true,
2698
- ui: { tab: "tools", label: "Web Search", description: "Enable the web_search tool for web searching" },
3454
+ ui: {
3455
+ tab: "tools",
3456
+ group: "Available Tools",
3457
+ label: "Web Search",
3458
+ description: "Enable the web_search tool for live web results",
3459
+ },
2699
3460
  },
2700
3461
 
2701
3462
  "browser.enabled": {
@@ -2703,8 +3464,9 @@ export const SETTINGS_SCHEMA = {
2703
3464
  default: true,
2704
3465
  ui: {
2705
3466
  tab: "tools",
3467
+ group: "Available Tools",
2706
3468
  label: "Browser",
2707
- description: "Enable the browser tool (Ulixee Hero)",
3469
+ description: "Enable the browser tool for scripted Chromium automation (puppeteer)",
2708
3470
  },
2709
3471
  },
2710
3472
 
@@ -2713,16 +3475,30 @@ export const SETTINGS_SCHEMA = {
2713
3475
  default: true,
2714
3476
  ui: {
2715
3477
  tab: "tools",
3478
+ group: "Search & Browser",
2716
3479
  label: "Headless Browser",
2717
3480
  description: "Launch browser in headless mode (disable to show browser UI)",
2718
3481
  },
2719
3482
  },
3483
+
3484
+ "browser.cmux": {
3485
+ type: "boolean",
3486
+ default: true,
3487
+ ui: {
3488
+ tab: "tools",
3489
+ group: "Search & Browser",
3490
+ label: "cmux Browser",
3491
+ description:
3492
+ "Use cmux WKWebView surfaces for browser automation when a cmux socket is available. Set PROMETHEUS_BROWSER_CMUX=0 or PROMETHEUS_BROWSER_CMUX=1 to override.",
3493
+ },
3494
+ },
2720
3495
  "browser.screenshotDir": {
2721
3496
  type: "string",
2722
3497
  default: undefined,
2723
3498
  ui: {
2724
3499
  tab: "tools",
2725
- label: "Screenshot directory",
3500
+ group: "Search & Browser",
3501
+ label: "Screenshot Directory",
2726
3502
  description:
2727
3503
  "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",
2728
3504
  },
@@ -2734,6 +3510,7 @@ export const SETTINGS_SCHEMA = {
2734
3510
  default: true,
2735
3511
  ui: {
2736
3512
  tab: "tools",
3513
+ group: "Execution",
2737
3514
  label: "Intent Tracing",
2738
3515
  description: "Ask the agent to describe the intent of each tool call before executing it",
2739
3516
  },
@@ -2744,6 +3521,7 @@ export const SETTINGS_SCHEMA = {
2744
3521
  default: 0,
2745
3522
  ui: {
2746
3523
  tab: "tools",
3524
+ group: "Execution",
2747
3525
  label: "Max Tool Timeout",
2748
3526
  description: "Maximum timeout in seconds the agent can set for any tool (0 = no limit)",
2749
3527
  options: [
@@ -2760,9 +3538,10 @@ export const SETTINGS_SCHEMA = {
2760
3538
  // Async jobs
2761
3539
  "async.enabled": {
2762
3540
  type: "boolean",
2763
- default: false,
3541
+ default: true,
2764
3542
  ui: {
2765
3543
  tab: "tools",
3544
+ group: "Execution",
2766
3545
  label: "Async Execution",
2767
3546
  description: "Enable async bash commands and background task execution",
2768
3547
  },
@@ -2775,29 +3554,40 @@ export const SETTINGS_SCHEMA = {
2775
3554
 
2776
3555
  "async.pollWaitDuration": {
2777
3556
  type: "enum",
2778
- values: ["5s", "10s", "30s", "1m", "5m"] as const,
2779
- default: "30s",
3557
+ values: ["5s", "10s", "30s", "1m", "5m", "smart"] as const,
3558
+ default: "smart",
2780
3559
  ui: {
2781
3560
  tab: "tools",
2782
- label: "Poll Wait Duration",
2783
- description: "How long the poll tool waits for background job updates before returning the current state",
3561
+ group: "Execution",
3562
+ label: "Max Poll Time",
3563
+ description:
3564
+ "How long the poll tool waits for background job updates before returning the current state. A fixed value waits that exact duration every time. `smart` adapts: it starts at 5s and lengthens with each back-to-back poll (up to 5m), then resets to 5s after about a minute without polling.",
2784
3565
  options: [
2785
3566
  { value: "5s", label: "5 seconds" },
2786
3567
  { value: "10s", label: "10 seconds" },
2787
- { value: "30s", label: "30 seconds", description: "Default" },
3568
+ { value: "30s", label: "30 seconds" },
2788
3569
  { value: "1m", label: "1 minute" },
2789
3570
  { value: "5m", label: "5 minutes" },
3571
+ { value: "smart", label: "Smart", description: "Default — adaptive 5s→5m, resets when you stop polling" },
2790
3572
  ],
2791
3573
  },
2792
3574
  },
2793
3575
 
2794
- "bash.autoBackground.enabled": {
2795
- type: "boolean",
2796
- default: false,
3576
+ "irc.timeoutMs": {
3577
+ type: "number",
3578
+ default: 120_000,
2797
3579
  ui: {
2798
3580
  tab: "tools",
2799
- label: "Bash Auto-Background",
2800
- description: "Automatically background long-running bash commands and deliver the result later",
3581
+ group: "Execution",
3582
+ label: "IRC Timeout",
3583
+ description: "Default timeout for irc wait (and send await:true) in milliseconds; 0 disables the timeout",
3584
+ options: [
3585
+ { value: "0", label: "Disabled" },
3586
+ { value: "30000", label: "30 seconds" },
3587
+ { value: "60000", label: "1 minute" },
3588
+ { value: "120000", label: "2 minutes" },
3589
+ { value: "300000", label: "5 minutes" },
3590
+ ],
2801
3591
  },
2802
3592
  },
2803
3593
 
@@ -2813,6 +3603,7 @@ export const SETTINGS_SCHEMA = {
2813
3603
  default: "auto",
2814
3604
  ui: {
2815
3605
  tab: "tools",
3606
+ group: "Discovery & MCP",
2816
3607
  label: "Tool Discovery",
2817
3608
  description:
2818
3609
  "Hide tools behind a search tool to save tokens. 'auto' hides MCP tools once the tool set has more than 40 tools; 'mcp-only' always hides MCP tools; 'all' hides all non-essential built-ins too.",
@@ -2824,6 +3615,7 @@ export const SETTINGS_SCHEMA = {
2824
3615
  default: [] as string[],
2825
3616
  ui: {
2826
3617
  tab: "tools",
3618
+ group: "Discovery & MCP",
2827
3619
  label: "Essential Tools Override",
2828
3620
  description:
2829
3621
  "Override the always-loaded built-in tools (default: read, bash, edit). Leave empty to use defaults.",
@@ -2834,7 +3626,12 @@ export const SETTINGS_SCHEMA = {
2834
3626
  "mcp.enableProjectConfig": {
2835
3627
  type: "boolean",
2836
3628
  default: true,
2837
- ui: { tab: "tools", label: "MCP Project Config", description: "Load .mcp.json/mcp.json from project root" },
3629
+ ui: {
3630
+ tab: "tools",
3631
+ group: "Discovery & MCP",
3632
+ label: "MCP Project Config",
3633
+ description: "Load .mcp.json/mcp.json from project root",
3634
+ },
2838
3635
  },
2839
3636
 
2840
3637
  "mcp.discoveryMode": {
@@ -2842,6 +3639,7 @@ export const SETTINGS_SCHEMA = {
2842
3639
  default: false,
2843
3640
  ui: {
2844
3641
  tab: "tools",
3642
+ group: "Discovery & MCP",
2845
3643
  label: "MCP Tool Discovery",
2846
3644
  description: "Hide MCP tools by default and expose them through a tool discovery tool",
2847
3645
  },
@@ -2852,6 +3650,7 @@ export const SETTINGS_SCHEMA = {
2852
3650
  default: [] as string[],
2853
3651
  ui: {
2854
3652
  tab: "tools",
3653
+ group: "Discovery & MCP",
2855
3654
  label: "MCP Discovery Default Servers",
2856
3655
  description: "Keep MCP tools from these servers visible while discovery mode hides other MCP tools",
2857
3656
  },
@@ -2862,6 +3661,7 @@ export const SETTINGS_SCHEMA = {
2862
3661
  default: false,
2863
3662
  ui: {
2864
3663
  tab: "tools",
3664
+ group: "Discovery & MCP",
2865
3665
  label: "MCP Update Injection",
2866
3666
  description: "Inject MCP resource updates into the agent conversation",
2867
3667
  },
@@ -2872,8 +3672,10 @@ export const SETTINGS_SCHEMA = {
2872
3672
  default: 500,
2873
3673
  ui: {
2874
3674
  tab: "tools",
3675
+ group: "Discovery & MCP",
2875
3676
  label: "MCP Notification Debounce",
2876
- description: "Debounce window for MCP resource update notifications before injecting into conversation",
3677
+ description:
3678
+ "Debounce window in milliseconds for MCP resource updates before injecting them into the conversation",
2877
3679
  },
2878
3680
  },
2879
3681
 
@@ -2887,6 +3689,7 @@ export const SETTINGS_SCHEMA = {
2887
3689
  default: true,
2888
3690
  ui: {
2889
3691
  tab: "tasks",
3692
+ group: "Modes",
2890
3693
  label: "Plan Mode",
2891
3694
  description: "Enable plan mode for read-only exploration and planning before execution",
2892
3695
  },
@@ -2897,6 +3700,7 @@ export const SETTINGS_SCHEMA = {
2897
3700
  default: true,
2898
3701
  ui: {
2899
3702
  tab: "tasks",
3703
+ group: "Modes",
2900
3704
  label: "Goal Mode",
2901
3705
  description: "Enable per-session goal mode and the hidden goal tool",
2902
3706
  },
@@ -2907,7 +3711,8 @@ export const SETTINGS_SCHEMA = {
2907
3711
  default: true,
2908
3712
  ui: {
2909
3713
  tab: "tasks",
2910
- label: "Goal Status In Footer",
3714
+ group: "Modes",
3715
+ label: "Goal Status in Footer",
2911
3716
  description: "Show token budget alongside the goal indicator in the status line",
2912
3717
  },
2913
3718
  },
@@ -2917,6 +3722,7 @@ export const SETTINGS_SCHEMA = {
2917
3722
  default: ["interactive"],
2918
3723
  ui: {
2919
3724
  tab: "tasks",
3725
+ group: "Modes",
2920
3726
  label: "Goal Continuation Modes",
2921
3727
  description: "Run modes where active goals may auto-continue between turns",
2922
3728
  },
@@ -2940,6 +3746,7 @@ export const SETTINGS_SCHEMA = {
2940
3746
  default: "none",
2941
3747
  ui: {
2942
3748
  tab: "tasks",
3749
+ group: "Isolation",
2943
3750
  label: "Isolation Mode",
2944
3751
  description:
2945
3752
  'Isolation backend for subagents. "auto" lets the native PAL pick the best available backend (CoW-aware filesystems, then overlayfs/ProjFS, then a git worktree / recursive-copy fallback).',
@@ -2976,6 +3783,7 @@ export const SETTINGS_SCHEMA = {
2976
3783
  default: "patch",
2977
3784
  ui: {
2978
3785
  tab: "tasks",
3786
+ group: "Isolation",
2979
3787
  label: "Isolation Merge Strategy",
2980
3788
  description: "How isolated task changes are integrated (patch apply or branch merge)",
2981
3789
  options: [
@@ -2991,6 +3799,7 @@ export const SETTINGS_SCHEMA = {
2991
3799
  default: "generic",
2992
3800
  ui: {
2993
3801
  tab: "tasks",
3802
+ group: "Isolation",
2994
3803
  label: "Isolation Commit Style",
2995
3804
  description: "Commit message style for nested repo changes (generic or AI-generated)",
2996
3805
  options: [
@@ -3001,40 +3810,31 @@ export const SETTINGS_SCHEMA = {
3001
3810
  },
3002
3811
 
3003
3812
  "task.eager": {
3004
- type: "boolean",
3005
- default: false,
3813
+ type: "enum",
3814
+ values: ["default", "preferred", "always"] as const,
3815
+ default: "default",
3006
3816
  ui: {
3007
3817
  tab: "tasks",
3818
+ group: "Subagents",
3008
3819
  label: "Prefer Task Delegation",
3009
- description: "Encourage the agent to delegate work to subagents unless changes are trivial",
3820
+ description: "How strongly to push delegating work to subagents",
3821
+ options: [
3822
+ { value: "default", label: "Default", description: "Model decides when to delegate" },
3823
+ { value: "preferred", label: "Preferred", description: "Adds delegation guidance to the system prompt" },
3824
+ { value: "always", label: "Always", description: "Prompt guidance plus a first-turn delegation reminder" },
3825
+ ],
3010
3826
  },
3011
3827
  },
3012
3828
 
3013
- "task.simple": {
3014
- type: "enum",
3015
- values: TASK_SIMPLE_MODES,
3016
- default: "schema-free",
3829
+ "task.batch": {
3830
+ type: "boolean",
3831
+ default: true,
3017
3832
  ui: {
3018
3833
  tab: "tasks",
3019
- label: "Task Input Mode",
3020
- description: "How much shared structure the task tool accepts (default, schema-free, or independent)",
3021
- options: [
3022
- {
3023
- value: "default",
3024
- label: "Default",
3025
- description: "Shared context and custom task schema are available",
3026
- },
3027
- {
3028
- value: "schema-free",
3029
- label: "Schema-free",
3030
- description: "Shared context stays available, but custom task schema is disabled",
3031
- },
3032
- {
3033
- value: "independent",
3034
- label: "Independent",
3035
- description: "No shared context or custom task schema; each task must stand alone",
3036
- },
3037
- ],
3834
+ group: "Subagents",
3835
+ label: "Batch Task Calls",
3836
+ description:
3837
+ "Switch the task tool to its batch shape: one call carries { agent, context, tasks[] } — one subagent per item (with per-item isolation) and a required shared context prepended to every assignment. With async.enabled=true, each spawn runs as an independent background agent with the normal idle/parked lifecycle; otherwise the call blocks for merged results. Disable to restore the flat single-spawn schema.",
3038
3838
  },
3039
3839
  },
3040
3840
 
@@ -3043,8 +3843,9 @@ export const SETTINGS_SCHEMA = {
3043
3843
  default: 32,
3044
3844
  ui: {
3045
3845
  tab: "tasks",
3846
+ group: "Subagents",
3046
3847
  label: "Max Concurrent Tasks",
3047
- description: "Concurrent limit for subagents",
3848
+ description: "Maximum number of subagents running concurrently",
3048
3849
  options: [
3049
3850
  { value: "0", label: "Unlimited" },
3050
3851
  { value: "1", label: "1 task" },
@@ -3063,6 +3864,7 @@ export const SETTINGS_SCHEMA = {
3063
3864
  default: false,
3064
3865
  ui: {
3065
3866
  tab: "tasks",
3867
+ group: "Subagents",
3066
3868
  label: "LSP in Subagents",
3067
3869
  description:
3068
3870
  "Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.",
@@ -3074,6 +3876,7 @@ export const SETTINGS_SCHEMA = {
3074
3876
  default: 2,
3075
3877
  ui: {
3076
3878
  tab: "tasks",
3879
+ group: "Subagents",
3077
3880
  label: "Max Task Recursion",
3078
3881
  description: "How many levels deep subagents can spawn their own subagents",
3079
3882
  options: [
@@ -3091,6 +3894,7 @@ export const SETTINGS_SCHEMA = {
3091
3894
  default: 0,
3092
3895
  ui: {
3093
3896
  tab: "tasks",
3897
+ group: "Subagents",
3094
3898
  label: "Max Subagent Runtime",
3095
3899
  description:
3096
3900
  "Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.",
@@ -3104,6 +3908,36 @@ export const SETTINGS_SCHEMA = {
3104
3908
  },
3105
3909
  },
3106
3910
 
3911
+ "task.agentIdleTtlMs": {
3912
+ type: "number",
3913
+ default: 420_000,
3914
+ ui: {
3915
+ tab: "tasks",
3916
+ group: "Subagents",
3917
+ label: "Agent Idle TTL",
3918
+ description:
3919
+ "How long an idle subagent stays live in memory before being parked to disk (ms). Parked agents are revived automatically when messaged or resumed. 0 keeps idle agents live until exit.",
3920
+ },
3921
+ },
3922
+
3923
+ "task.softRequestBudget": {
3924
+ type: "number",
3925
+ default: 90,
3926
+ ui: {
3927
+ tab: "tasks",
3928
+ group: "Subagents",
3929
+ label: "Soft Subagent Request Budget",
3930
+ description:
3931
+ "Soft per-subagent request budget (assistant requests per run). Crossing it injects one steering notice asking the subagent to wrap up; at 1.5x the budget the run is aborted gracefully, salvaging partial output. 0 disables the guard. Bundled explore/quick_task agents use a lower built-in budget.",
3932
+ options: [
3933
+ { value: "0", label: "Disabled" },
3934
+ { value: "40", label: "40 requests" },
3935
+ { value: "90", label: "90 requests", description: "Default" },
3936
+ { value: "150", label: "150 requests" },
3937
+ ],
3938
+ },
3939
+ },
3940
+
3107
3941
  "task.disabledAgents": {
3108
3942
  type: "array",
3109
3943
  default: [] as string[],
@@ -3118,9 +3952,10 @@ export const SETTINGS_SCHEMA = {
3118
3952
  type: "number",
3119
3953
  default: 60,
3120
3954
  ui: {
3121
- tab: "tasks",
3122
- label: "Todo auto-clear delay",
3123
- description: "How long to wait before removing completed/abandoned tasks from the list",
3955
+ tab: "tools",
3956
+ group: "Todos",
3957
+ label: "Todo Auto-Clear Delay",
3958
+ description: "Delay before completed or abandoned todos are removed from the todo widget",
3124
3959
  options: [
3125
3960
  { value: "0", label: "Instant" },
3126
3961
  { value: "60", label: "1 minute", description: "Default" },
@@ -3138,6 +3973,7 @@ export const SETTINGS_SCHEMA = {
3138
3973
  default: false,
3139
3974
  ui: {
3140
3975
  tab: "appearance",
3976
+ group: "Display",
3141
3977
  label: "Show Resolved Model Badge",
3142
3978
  description: "Display the actual model ID used by each subagent in the task widget status line",
3143
3979
  },
@@ -3149,7 +3985,12 @@ export const SETTINGS_SCHEMA = {
3149
3985
  "skills.enableSkillCommands": {
3150
3986
  type: "boolean",
3151
3987
  default: true,
3152
- ui: { tab: "tasks", label: "Skill Commands", description: "Register skills as /skill:name commands" },
3988
+ ui: {
3989
+ tab: "tasks",
3990
+ group: "Commands & Skills",
3991
+ label: "Skill Commands",
3992
+ description: "Register skills as /skill:name commands",
3993
+ },
3153
3994
  },
3154
3995
 
3155
3996
  "skills.enableCodexUser": { type: "boolean", default: true },
@@ -3158,9 +3999,13 @@ export const SETTINGS_SCHEMA = {
3158
3999
 
3159
4000
  "skills.enableClaudeProject": { type: "boolean", default: true },
3160
4001
 
3161
- "skills.enablePrometheusUser": { type: "boolean", default: true },
4002
+ "skills.enablePiUser": { type: "boolean", default: true },
4003
+
4004
+ "skills.enablePiProject": { type: "boolean", default: true },
3162
4005
 
3163
- "skills.enablePrometheusProject": { type: "boolean", default: true },
4006
+ "skills.enableAgentsUser": { type: "boolean", default: true },
4007
+
4008
+ "skills.enableAgentsProject": { type: "boolean", default: true },
3164
4009
 
3165
4010
  "skills.customDirectories": { type: "array", default: [] as string[] },
3166
4011
 
@@ -3172,13 +4017,23 @@ export const SETTINGS_SCHEMA = {
3172
4017
  "commands.enableClaudeUser": {
3173
4018
  type: "boolean",
3174
4019
  default: true,
3175
- ui: { tab: "tasks", label: "Claude User Commands", description: "Load commands from ~/.claude/commands/" },
4020
+ ui: {
4021
+ tab: "tasks",
4022
+ group: "Commands & Skills",
4023
+ label: "Claude User Commands",
4024
+ description: "Load commands from ~/.claude/commands/",
4025
+ },
3176
4026
  },
3177
4027
 
3178
4028
  "commands.enableClaudeProject": {
3179
4029
  type: "boolean",
3180
4030
  default: true,
3181
- ui: { tab: "tasks", label: "Claude Project Commands", description: "Load commands from .claude/commands/" },
4031
+ ui: {
4032
+ tab: "tasks",
4033
+ group: "Commands & Skills",
4034
+ label: "Claude Project Commands",
4035
+ description: "Load commands from .claude/commands/",
4036
+ },
3182
4037
  },
3183
4038
 
3184
4039
  "commands.enableOpencodeUser": {
@@ -3186,6 +4041,7 @@ export const SETTINGS_SCHEMA = {
3186
4041
  default: true,
3187
4042
  ui: {
3188
4043
  tab: "tasks",
4044
+ group: "Commands & Skills",
3189
4045
  label: "OpenCode User Commands",
3190
4046
  description: "Load commands from ~/.config/opencode/commands/",
3191
4047
  },
@@ -3194,7 +4050,12 @@ export const SETTINGS_SCHEMA = {
3194
4050
  "commands.enableOpencodeProject": {
3195
4051
  type: "boolean",
3196
4052
  default: true,
3197
- ui: { tab: "tasks", label: "OpenCode Project Commands", description: "Load commands from .opencode/commands/" },
4053
+ ui: {
4054
+ tab: "tasks",
4055
+ group: "Commands & Skills",
4056
+ label: "OpenCode Project Commands",
4057
+ description: "Load commands from .opencode/commands/",
4058
+ },
3198
4059
  },
3199
4060
 
3200
4061
  // ────────────────────────────────────────────────────────────────────────
@@ -3205,7 +4066,12 @@ export const SETTINGS_SCHEMA = {
3205
4066
  "secrets.enabled": {
3206
4067
  type: "boolean",
3207
4068
  default: false,
3208
- ui: { tab: "providers", label: "Hide Secrets", description: "Obfuscate secrets before sending to AI providers" },
4069
+ ui: {
4070
+ tab: "providers",
4071
+ group: "Privacy",
4072
+ label: "Hide Secrets",
4073
+ description: "Obfuscate secrets before sending to AI providers",
4074
+ },
3209
4075
  },
3210
4076
 
3211
4077
  // Provider selection
@@ -3215,8 +4081,9 @@ export const SETTINGS_SCHEMA = {
3215
4081
  default: "auto",
3216
4082
  ui: {
3217
4083
  tab: "providers",
4084
+ group: "Services",
3218
4085
  label: "Web Search Provider",
3219
- description: "Provider for web search tool",
4086
+ description: "Preferred provider for the web_search tool",
3220
4087
  options: SEARCH_PROVIDER_OPTIONS,
3221
4088
  },
3222
4089
  },
@@ -3226,8 +4093,9 @@ export const SETTINGS_SCHEMA = {
3226
4093
  default: "auto",
3227
4094
  ui: {
3228
4095
  tab: "providers",
4096
+ group: "Services",
3229
4097
  label: "Image Provider",
3230
- description: "Provider for image generation tool",
4098
+ description: "Preferred provider for image generation",
3231
4099
  options: [
3232
4100
  {
3233
4101
  value: "auto",
@@ -3243,21 +4111,109 @@ export const SETTINGS_SCHEMA = {
3243
4111
  {
3244
4112
  value: "xai",
3245
4113
  label: "xAI Grok Imagine",
3246
- description: "Requires xAI Grok OAuth or XAI_API_KEY",
4114
+ description: "Requires xAI Grok OAuth or XAI_APROMETHEUS_KEY",
4115
+ },
4116
+ { value: "gemini", label: "Gemini", description: "Requires GEMINI_APROMETHEUS_KEY" },
4117
+ { value: "openrouter", label: "OpenRouter", description: "Requires OPENROUTER_APROMETHEUS_KEY" },
4118
+ ],
4119
+ },
4120
+ },
4121
+ "providers.tts": {
4122
+ type: "enum",
4123
+ values: ["auto", "local", "xai"] as const,
4124
+ default: "auto",
4125
+ ui: {
4126
+ tab: "providers",
4127
+ group: "Services",
4128
+ label: "Text-to-Speech Provider",
4129
+ description: "Backend for the tts tool: local on-device neural TTS (Kokoro-82M) or xAI Grok Voice",
4130
+ options: [
4131
+ {
4132
+ value: "auto",
4133
+ label: "Auto",
4134
+ description: "Prefer local on-device TTS; route .mp3 output to xAI when credentials exist",
4135
+ },
4136
+ { value: "local", label: "Local", description: "On-device neural TTS (Kokoro-82M); output is WAV/PCM16" },
4137
+ {
4138
+ value: "xai",
4139
+ label: "xAI Grok Voice",
4140
+ description: "Requires xAI Grok OAuth or XAI_APROMETHEUS_KEY; MP3 or WAV",
3247
4141
  },
3248
- { value: "gemini", label: "Gemini", description: "Requires GEMINI_API_KEY" },
3249
- { value: "openrouter", label: "OpenRouter", description: "Requires OPENROUTER_API_KEY" },
3250
4142
  ],
3251
4143
  },
3252
4144
  },
4145
+ "tts.localModel": {
4146
+ type: "enum",
4147
+ values: TTS_LOCAL_MODEL_VALUES,
4148
+ default: DEFAULT_TTS_LOCAL_MODEL_KEY,
4149
+ ui: {
4150
+ tab: "providers",
4151
+ group: "Services",
4152
+ label: "Local TTS Model",
4153
+ description: "On-device neural TTS model (Kokoro-82M) used by the local TTS backend",
4154
+ options: TTS_LOCAL_MODEL_OPTIONS,
4155
+ },
4156
+ },
4157
+ "tts.localVoice": {
4158
+ type: "enum",
4159
+ values: TTS_LOCAL_VOICE_VALUES,
4160
+ default: DEFAULT_TTS_VOICE,
4161
+ ui: {
4162
+ tab: "providers",
4163
+ group: "Services",
4164
+ label: "Local TTS Voice",
4165
+ description: "Kokoro voice used by the local TTS backend (American/British, female/male)",
4166
+ options: TTS_LOCAL_VOICE_OPTIONS,
4167
+ },
4168
+ },
4169
+ "speech.enabled": {
4170
+ type: "boolean",
4171
+ default: false,
4172
+ ui: {
4173
+ tab: "providers",
4174
+ group: "Services",
4175
+ label: "Speech Vocalization",
4176
+ description: "Speak the assistant's output aloud through the speakers as it streams",
4177
+ },
4178
+ },
4179
+ "speech.mode": {
4180
+ type: "enum",
4181
+ values: ["all", "assistant", "yield"] as const,
4182
+ default: "assistant",
4183
+ ui: {
4184
+ tab: "providers",
4185
+ group: "Services",
4186
+ label: "Speech Vocalization Mode",
4187
+ description:
4188
+ "What to speak: all = assistant messages + thinking; assistant = messages only; yield = only the final message at turn end",
4189
+ options: [
4190
+ { value: "all", label: "All (messages + thinking)" },
4191
+ { value: "assistant", label: "Assistant messages" },
4192
+ { value: "yield", label: "Final message only" },
4193
+ ],
4194
+ },
4195
+ },
4196
+ "speech.voice": {
4197
+ type: "enum",
4198
+ values: TTS_LOCAL_VOICE_VALUES,
4199
+ default: DEFAULT_TTS_VOICE,
4200
+ ui: {
4201
+ tab: "providers",
4202
+ group: "Services",
4203
+ label: "Speech Vocalization Voice",
4204
+ description: "Kokoro voice used when speaking the assistant's output aloud",
4205
+ options: TTS_LOCAL_VOICE_OPTIONS,
4206
+ },
4207
+ },
3253
4208
  "providers.tinyModel": {
3254
4209
  type: "enum",
3255
4210
  values: TINY_TITLE_MODEL_VALUES,
3256
4211
  default: ONLINE_TINY_TITLE_MODEL_KEY,
3257
4212
  ui: {
3258
4213
  tab: "providers",
4214
+ group: "Tiny Model",
3259
4215
  label: "Tiny Model",
3260
- description: "Session-title model: online prometheus/smol by default, or a local on-device model",
4216
+ description: "Session-title model: online pi/smol by default, or a local on-device model",
3261
4217
  options: TINY_TITLE_MODEL_OPTIONS,
3262
4218
  },
3263
4219
  },
@@ -3267,6 +4223,7 @@ export const SETTINGS_SCHEMA = {
3267
4223
  default: TINY_MODEL_DEVICE_DEFAULT,
3268
4224
  ui: {
3269
4225
  tab: "providers",
4226
+ group: "Tiny Model",
3270
4227
  label: "Tiny Model Device",
3271
4228
  description:
3272
4229
  "ONNX execution provider for local tiny models (titles + memory). Default uses CPU-only inference. The PROMETHEUS_TINY_DEVICE env var overrides this.",
@@ -3279,6 +4236,7 @@ export const SETTINGS_SCHEMA = {
3279
4236
  default: TINY_MODEL_DTYPE_DEFAULT,
3280
4237
  ui: {
3281
4238
  tab: "providers",
4239
+ group: "Tiny Model",
3282
4240
  label: "Tiny Model Precision",
3283
4241
  description:
3284
4242
  "ONNX quantization/precision for local tiny models. Default uses each model's shipped dtype (q4); lower precision is faster, higher is more faithful. The PROMETHEUS_TINY_DTYPE env var overrides this.",
@@ -3291,10 +4249,11 @@ export const SETTINGS_SCHEMA = {
3291
4249
  default: ONLINE_MEMORY_MODEL_KEY,
3292
4250
  ui: {
3293
4251
  tab: "memory",
4252
+ group: "General",
3294
4253
  label: "Memory Model",
3295
4254
  description:
3296
- "Prometheus Memory LLM for fact extraction + consolidation: online (smol/remote) by default, or a local on-device model",
3297
- condition: "prometheusMemoryActive",
4255
+ "Mnemopi LLM for fact extraction + consolidation: online (smol/remote) by default, or a local on-device model",
4256
+ condition: "mnemopiActive",
3298
4257
  options: TINY_MEMORY_MODEL_OPTIONS,
3299
4258
  },
3300
4259
  },
@@ -3305,6 +4264,7 @@ export const SETTINGS_SCHEMA = {
3305
4264
  default: ONLINE_AUTO_THINKING_MODEL_KEY,
3306
4265
  ui: {
3307
4266
  tab: "model",
4267
+ group: "Thinking",
3308
4268
  label: "Auto Thinking Model",
3309
4269
  description:
3310
4270
  "Difficulty classifier for the `auto` thinking level: online smol by default, or a local on-device model",
@@ -3319,6 +4279,7 @@ export const SETTINGS_SCHEMA = {
3319
4279
  default: "anthropic",
3320
4280
  ui: {
3321
4281
  tab: "providers",
4282
+ group: "Protocol",
3322
4283
  label: "Kimi API Format",
3323
4284
  description: "API format for Kimi Code provider",
3324
4285
  options: [
@@ -3334,6 +4295,7 @@ export const SETTINGS_SCHEMA = {
3334
4295
  default: "auto",
3335
4296
  ui: {
3336
4297
  tab: "providers",
4298
+ group: "Protocol",
3337
4299
  label: "OpenAI WebSockets",
3338
4300
  description: "Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",
3339
4301
  options: [
@@ -3350,6 +4312,7 @@ export const SETTINGS_SCHEMA = {
3350
4312
  default: "default",
3351
4313
  ui: {
3352
4314
  tab: "providers",
4315
+ group: "Protocol",
3353
4316
  label: "OpenRouter Routing",
3354
4317
  description:
3355
4318
  "Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant)",
@@ -3366,13 +4329,70 @@ export const SETTINGS_SCHEMA = {
3366
4329
  ],
3367
4330
  },
3368
4331
  },
3369
- "providers.parallelFetch": {
3370
- type: "boolean",
3371
- default: true,
4332
+ "providers.fetch": {
4333
+ type: "enum",
4334
+ values: ["auto", "native", "trafilatura", "lynx", "parallel", "jina"] as const,
4335
+ default: "auto",
3372
4336
  ui: {
3373
4337
  tab: "providers",
3374
- label: "Parallel Fetch",
3375
- description: "Use Parallel extract API for URL fetching when credentials are available",
4338
+ group: "Services",
4339
+ label: "Fetch Provider",
4340
+ description: "Reader backend priority for the fetch/read URL tool",
4341
+ options: [
4342
+ {
4343
+ value: "auto",
4344
+ label: "Auto",
4345
+ description: "Priority: native > trafilatura > lynx > parallel > jina",
4346
+ },
4347
+ { value: "native", label: "Native", description: "In-process HTML→Markdown converter (always available)" },
4348
+ { value: "trafilatura", label: "Trafilatura", description: "Auto-installs via uv/pip" },
4349
+ { value: "lynx", label: "Lynx", description: "Requires lynx system package" },
4350
+ { value: "parallel", label: "Parallel", description: "Requires PARALLEL_APROMETHEUS_KEY" },
4351
+ { value: "jina", label: "Jina", description: "Uses r.jina.ai reader (JINA_APROMETHEUS_KEY optional)" },
4352
+ ],
4353
+ },
4354
+ },
4355
+ // Codex saved rate-limit resets (auto-redeem)
4356
+ "codexResets.autoRedeem": {
4357
+ type: "enum",
4358
+ values: ["unset", "yes", "no"] as const,
4359
+ default: "unset" as const,
4360
+ ui: {
4361
+ tab: "providers",
4362
+ group: "Services",
4363
+ label: "Codex Auto-Redeem Saved Resets",
4364
+ description:
4365
+ "When a turn is blocked by the Codex weekly limit on the active account and no other account is available, run the conservative saved-reset check. unset asks before spending the first eligible reset, yes spends eligible resets without prompting, and no disables the check entirely. Requires retries enabled.",
4366
+ options: [
4367
+ {
4368
+ value: "unset",
4369
+ label: "Unset",
4370
+ description: "Check eligibility, then ask before spending the first saved reset.",
4371
+ },
4372
+ { value: "yes", label: "Yes", description: "Spend eligible saved resets without prompting." },
4373
+ { value: "no", label: "No", description: "Do not run the saved-reset auto-redeem check." },
4374
+ ],
4375
+ },
4376
+ },
4377
+ "codexResets.minBlockedMinutes": {
4378
+ type: "number",
4379
+ default: 60,
4380
+ ui: {
4381
+ tab: "providers",
4382
+ group: "Services",
4383
+ label: "Codex Auto-Redeem Min Block",
4384
+ description:
4385
+ "Only auto-redeem when the natural weekly reset is at least this many minutes away (don't spend a ~30-day credit to save a short wait).",
4386
+ },
4387
+ },
4388
+ "codexResets.keepCredits": {
4389
+ type: "number",
4390
+ default: 0,
4391
+ ui: {
4392
+ tab: "providers",
4393
+ group: "Services",
4394
+ label: "Codex Auto-Redeem Reserve",
4395
+ description: "Never auto-spend below this many saved resets (0 = the last credit may be spent automatically).",
3376
4396
  },
3377
4397
  },
3378
4398
  "provider.appendOnlyContext": {
@@ -3381,6 +4401,7 @@ export const SETTINGS_SCHEMA = {
3381
4401
  default: "auto",
3382
4402
  ui: {
3383
4403
  tab: "providers",
4404
+ group: "Protocol",
3384
4405
  label: "Append-Only Context",
3385
4406
  description:
3386
4407
  "Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers.",
@@ -3396,25 +4417,40 @@ export const SETTINGS_SCHEMA = {
3396
4417
  "exa.enabled": {
3397
4418
  type: "boolean",
3398
4419
  default: true,
3399
- ui: { tab: "providers", label: "Exa", description: "Master toggle for all Exa search tools" },
4420
+ ui: { tab: "providers", group: "Services", label: "Exa", description: "Master toggle for all Exa search tools" },
3400
4421
  },
3401
4422
 
3402
4423
  "exa.enableSearch": {
3403
4424
  type: "boolean",
3404
4425
  default: true,
3405
- ui: { tab: "providers", label: "Exa Search", description: "Basic search, deep search, code search, crawl" },
4426
+ ui: {
4427
+ tab: "providers",
4428
+ group: "Services",
4429
+ label: "Exa Search",
4430
+ description: "Enable Exa basic search, deep search, code search, and crawl tools",
4431
+ },
3406
4432
  },
3407
4433
 
3408
4434
  "exa.enableResearcher": {
3409
4435
  type: "boolean",
3410
4436
  default: false,
3411
- ui: { tab: "providers", label: "Exa Researcher", description: "AI-powered deep research tasks" },
4437
+ ui: {
4438
+ tab: "providers",
4439
+ group: "Services",
4440
+ label: "Exa Researcher",
4441
+ description: "Enable the Exa researcher tool for AI-powered deep research",
4442
+ },
3412
4443
  },
3413
4444
 
3414
4445
  "exa.enableWebsets": {
3415
4446
  type: "boolean",
3416
4447
  default: false,
3417
- ui: { tab: "providers", label: "Exa Websets", description: "Webset management and enrichment tools" },
4448
+ ui: {
4449
+ tab: "providers",
4450
+ group: "Services",
4451
+ label: "Exa Websets",
4452
+ description: "Enable Exa webset management and enrichment tools",
4453
+ },
3418
4454
  },
3419
4455
 
3420
4456
  // SearXNG
@@ -3423,8 +4459,9 @@ export const SETTINGS_SCHEMA = {
3423
4459
  default: undefined,
3424
4460
  ui: {
3425
4461
  tab: "providers",
4462
+ group: "Services",
3426
4463
  label: "SearXNG Endpoint",
3427
- description: "Self-hosted search base URL",
4464
+ description: "Base URL of a self-hosted SearXNG instance used for web search",
3428
4465
  },
3429
4466
  },
3430
4467
 
@@ -3470,6 +4507,7 @@ export const SETTINGS_SCHEMA = {
3470
4507
  default: false,
3471
4508
  ui: {
3472
4509
  tab: "tools",
4510
+ group: "Developer",
3473
4511
  label: "Auto QA",
3474
4512
  description: "Enable automated tool issue reporting (report_tool_issue) for all agents",
3475
4513
  },
@@ -3477,15 +4515,12 @@ export const SETTINGS_SCHEMA = {
3477
4515
 
3478
4516
  "dev.autoqaPush.endpoint": {
3479
4517
  type: "string",
3480
- // Bundled QA collector — runs `/work/prometheus-www/autoqa` behind qa.prometheus.trivlab.com.
3481
- // Override via `PROMETHEUS_AUTO_QA_PUSH_URL` or `dev.autoqaPush.endpoint`
3482
- // in `config.yml` to point at a self-hosted instance.
3483
- default: "https://qa.prometheus.trivlab.com/v1/grievances" as const,
4518
+ default: "https://qa.prometheus.sh/v1/grievances" as const,
3484
4519
  ui: {
3485
4520
  tab: "tools",
4521
+ group: "Developer",
3486
4522
  label: "Auto QA Push Endpoint",
3487
- description:
3488
- "Full URL that receives the JSON payload (default ships to https://qa.prometheus.trivlab.com/v1/grievances)",
4523
+ description: "Full URL receiving Auto QA JSON reports (default https://qa.prometheus.sh/v1/grievances)",
3489
4524
  },
3490
4525
  },
3491
4526
 
@@ -3532,21 +4567,23 @@ type Schema = typeof SETTINGS_SCHEMA;
3532
4567
  export type SettingPath = keyof Schema;
3533
4568
 
3534
4569
  /** Infer the value type for a setting path */
3535
- export type SettingValue<P extends SettingPath> = Schema[P] extends { type: "boolean" }
3536
- ? boolean
3537
- : Schema[P] extends { type: "string" }
3538
- ? string | undefined
3539
- : Schema[P] extends { type: "number" }
3540
- ? number
3541
- : Schema[P] extends { type: "enum"; values: infer V }
3542
- ? V extends readonly string[]
3543
- ? V[number]
3544
- : never
3545
- : Schema[P] extends { type: "array"; default: infer D }
3546
- ? D
3547
- : Schema[P] extends { type: "record"; default: infer D }
4570
+ export type SettingValue<P extends SettingPath> = Schema[P] extends { type: "boolean"; default: undefined }
4571
+ ? boolean | undefined
4572
+ : Schema[P] extends { type: "boolean" }
4573
+ ? boolean
4574
+ : Schema[P] extends { type: "string" }
4575
+ ? string | undefined
4576
+ : Schema[P] extends { type: "number" }
4577
+ ? number
4578
+ : Schema[P] extends { type: "enum"; values: infer V }
4579
+ ? V extends readonly string[]
4580
+ ? V[number]
4581
+ : never
4582
+ : Schema[P] extends { type: "array"; default: infer D }
3548
4583
  ? D
3549
- : never;
4584
+ : Schema[P] extends { type: "record"; default: infer D }
4585
+ ? D
4586
+ : never;
3550
4587
 
3551
4588
  /** Get the default value for a setting path */
3552
4589
  export function getDefault<P extends SettingPath>(path: P): SettingValue<P> {
@@ -3596,13 +4633,16 @@ export type StatusLineSeparatorStyle = SettingValue<"statusLine.separator">;
3596
4633
  /** Tree selector filter mode - derived from schema */
3597
4634
  export type TreeFilterMode = SettingValue<"treeFilterMode">;
3598
4635
 
4636
+ /** Personality preset - derived from schema */
4637
+ export type Personality = SettingValue<"personality">;
4638
+
3599
4639
  // ═══════════════════════════════════════════════════════════════════════════
3600
4640
  // Typed Group Definitions
3601
4641
  // ═══════════════════════════════════════════════════════════════════════════
3602
4642
 
3603
4643
  export interface CompactionSettings {
3604
4644
  enabled: boolean;
3605
- strategy: "context-full" | "handoff" | "shake" | "off";
4645
+ strategy: "context-full" | "handoff" | "shake" | "snapcompact" | "off";
3606
4646
  thresholdPercent: number;
3607
4647
  thresholdTokens: number;
3608
4648
  reserveTokens: number;
@@ -3614,6 +4654,8 @@ export interface CompactionSettings {
3614
4654
  idleEnabled: boolean;
3615
4655
  idleThresholdTokens: number;
3616
4656
  idleTimeoutSeconds: number;
4657
+ supersedeReads: boolean;
4658
+ dropUseless: boolean;
3617
4659
  }
3618
4660
 
3619
4661
  export interface ContextPromotionSettings {
@@ -3661,8 +4703,10 @@ export interface SkillsSettings {
3661
4703
  enableCodexUser?: boolean;
3662
4704
  enableClaudeUser?: boolean;
3663
4705
  enableClaudeProject?: boolean;
3664
- enablePrometheusUser?: boolean;
3665
- enablePrometheusProject?: boolean;
4706
+ enablePiUser?: boolean;
4707
+ enablePiProject?: boolean;
4708
+ enableAgentsUser?: boolean;
4709
+ enableAgentsProject?: boolean;
3666
4710
  customDirectories?: string[];
3667
4711
  ignoredSkills?: string[];
3668
4712
  includeSkills?: string[];
@@ -3701,6 +4745,7 @@ export interface StatusLineSettings {
3701
4745
  preset: StatusLinePreset;
3702
4746
  separator: StatusLineSeparatorStyle;
3703
4747
  showHookStatus: boolean;
4748
+ transparent: boolean;
3704
4749
  leftSegments: StatusLineSegmentId[];
3705
4750
  rightSegments: StatusLineSegmentId[];
3706
4751
  segmentOptions: Record<string, unknown>;
@@ -3718,8 +4763,7 @@ export interface SttSettings {
3718
4763
  enabled: boolean;
3719
4764
  language: string | undefined;
3720
4765
  modelName: string;
3721
- whisperPath: string | undefined;
3722
- modelPath: string | undefined;
4766
+ streaming: boolean;
3723
4767
  }
3724
4768
 
3725
4769
  export interface BashInterceptorRule {
@@ -3736,6 +4780,15 @@ export interface ShellMinimizerSettings {
3736
4780
  only: string[];
3737
4781
  except: string[];
3738
4782
  maxCaptureBytes: number;
4783
+ sourceOutlineLevel: "default" | "aggressive";
4784
+ legacyFilters: boolean | undefined;
4785
+ }
4786
+ export type CodexAutoRedeemMode = "unset" | "yes" | "no";
4787
+
4788
+ export interface CodexResetsSettings {
4789
+ autoRedeem: CodexAutoRedeemMode;
4790
+ minBlockedMinutes: number;
4791
+ keepCredits: number;
3739
4792
  }
3740
4793
 
3741
4794
  /** Map group prefix -> typed settings interface */
@@ -3756,6 +4809,7 @@ export interface GroupTypeMap {
3756
4809
  modelTags: ModelTagsSettings;
3757
4810
  cycleOrder: string[];
3758
4811
  shellMinimizer: ShellMinimizerSettings;
4812
+ codexResets: CodexResetsSettings;
3759
4813
  }
3760
4814
 
3761
4815
  export type GroupPrefix = keyof GroupTypeMap;