@f5xc-salesdemos/xcsh 2.2.0 → 14.0.2

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 (1518) hide show
  1. package/CHANGELOG.md +6854 -24
  2. package/README.md +11 -610
  3. package/examples/README.md +8 -15
  4. package/examples/custom-tools/README.md +109 -0
  5. package/examples/custom-tools/hello/index.ts +20 -0
  6. package/examples/custom-tools/todo/index.ts +206 -0
  7. package/examples/extensions/README.md +78 -143
  8. package/examples/extensions/api-demo.ts +89 -0
  9. package/examples/extensions/chalk-logger.ts +25 -0
  10. package/examples/extensions/hello.ts +24 -18
  11. package/examples/extensions/pirate.ts +5 -9
  12. package/examples/extensions/plan-mode.ts +551 -0
  13. package/examples/extensions/reload-runtime.ts +1 -1
  14. package/examples/extensions/todo.ts +18 -19
  15. package/examples/extensions/tools.ts +23 -19
  16. package/examples/extensions/with-deps/index.ts +5 -1
  17. package/examples/extensions/with-deps/package-lock.json +2 -2
  18. package/examples/extensions/with-deps/package.json +2 -8
  19. package/examples/hooks/README.md +56 -0
  20. package/examples/hooks/auto-commit-on-exit.ts +48 -0
  21. package/examples/hooks/confirm-destructive.ts +58 -0
  22. package/examples/hooks/custom-compaction.ts +115 -0
  23. package/examples/hooks/dirty-repo-guard.ts +51 -0
  24. package/examples/hooks/file-trigger.ts +40 -0
  25. package/examples/hooks/git-checkpoint.ts +52 -0
  26. package/examples/hooks/handoff.ts +149 -0
  27. package/examples/hooks/permission-gate.ts +33 -0
  28. package/examples/hooks/protected-paths.ts +29 -0
  29. package/examples/hooks/qna.ts +118 -0
  30. package/examples/hooks/status-line.ts +39 -0
  31. package/examples/sdk/01-minimal.ts +3 -4
  32. package/examples/sdk/02-custom-model.ts +9 -9
  33. package/examples/sdk/03-custom-prompt.ts +11 -23
  34. package/examples/sdk/04-skills.ts +23 -32
  35. package/examples/sdk/06-extensions.ts +14 -22
  36. package/examples/sdk/06-hooks.ts +61 -0
  37. package/examples/sdk/07-context-files.ts +18 -23
  38. package/examples/sdk/08-prompt-templates.ts +14 -21
  39. package/examples/sdk/08-slash-commands.ts +46 -0
  40. package/examples/sdk/09-api-keys-and-oauth.ts +15 -9
  41. package/examples/sdk/11-sessions.ts +3 -4
  42. package/examples/sdk/README.md +117 -92
  43. package/package.json +507 -82
  44. package/scripts/format-prompts.ts +68 -0
  45. package/scripts/generate-docs-index.ts +40 -0
  46. package/scripts/generate-template.ts +32 -0
  47. package/src/async/index.ts +1 -0
  48. package/src/async/job-manager.ts +383 -0
  49. package/src/autoresearch/apply-contract-to-state.ts +24 -0
  50. package/src/autoresearch/command-resume.md +17 -0
  51. package/src/autoresearch/contract.ts +288 -0
  52. package/src/autoresearch/dashboard.ts +446 -0
  53. package/src/autoresearch/git.ts +329 -0
  54. package/src/autoresearch/helpers.ts +507 -0
  55. package/src/autoresearch/index.ts +534 -0
  56. package/src/autoresearch/prompt.md +244 -0
  57. package/src/autoresearch/resume-message.md +16 -0
  58. package/src/autoresearch/state.ts +380 -0
  59. package/src/autoresearch/tools/init-experiment.ts +395 -0
  60. package/src/autoresearch/tools/log-experiment.ts +778 -0
  61. package/src/autoresearch/tools/run-experiment.ts +678 -0
  62. package/src/autoresearch/types.ts +218 -0
  63. package/src/bun-imports.d.ts +22 -0
  64. package/src/capability/context-file.ts +44 -0
  65. package/src/capability/extension-module.ts +34 -0
  66. package/src/capability/extension.ts +47 -0
  67. package/src/capability/fs.ts +107 -0
  68. package/src/capability/hook.ts +40 -0
  69. package/src/capability/index.ts +436 -0
  70. package/src/capability/instruction.ts +37 -0
  71. package/src/capability/mcp.ts +74 -0
  72. package/src/capability/prompt.ts +35 -0
  73. package/src/capability/rule.ts +224 -0
  74. package/src/capability/settings.ts +34 -0
  75. package/src/capability/skill.ts +49 -0
  76. package/src/capability/slash-command.ts +40 -0
  77. package/src/capability/ssh.ts +41 -0
  78. package/src/capability/system-prompt.ts +34 -0
  79. package/src/capability/tool.ts +38 -0
  80. package/src/capability/types.ts +168 -0
  81. package/src/cli/agents-cli.ts +138 -0
  82. package/src/cli/args.ts +283 -0
  83. package/src/cli/classify-install-target.ts +50 -0
  84. package/src/cli/commands/init-xdg.ts +27 -0
  85. package/src/cli/config-cli.ts +418 -0
  86. package/src/cli/file-processor.ts +123 -0
  87. package/src/cli/grep-cli.ts +160 -0
  88. package/src/cli/grievances-cli.ts +78 -0
  89. package/src/cli/initial-message.ts +58 -0
  90. package/src/cli/jupyter-cli.ts +106 -0
  91. package/src/cli/list-models.ts +89 -0
  92. package/src/cli/plugin-cli.ts +964 -0
  93. package/src/cli/read-cli.ts +67 -0
  94. package/src/cli/session-picker.ts +52 -0
  95. package/src/cli/setup-cli.ts +376 -0
  96. package/src/cli/shell-cli.ts +174 -0
  97. package/src/cli/ssh-cli.ts +179 -0
  98. package/src/cli/stats-cli.ts +182 -0
  99. package/src/cli/update-cli.ts +342 -0
  100. package/src/cli/web-search-cli.ts +133 -0
  101. package/src/cli.ts +96 -0
  102. package/src/commands/agents.ts +57 -0
  103. package/src/commands/commit.ts +36 -0
  104. package/src/commands/config.ts +51 -0
  105. package/src/commands/grep.ts +48 -0
  106. package/src/commands/grievances.ts +20 -0
  107. package/src/commands/jupyter.ts +32 -0
  108. package/src/commands/launch.ts +141 -0
  109. package/src/commands/plugin.ts +78 -0
  110. package/src/commands/read.ts +33 -0
  111. package/src/commands/setup.ts +42 -0
  112. package/src/commands/shell.ts +29 -0
  113. package/src/commands/ssh.ts +60 -0
  114. package/src/commands/stats.ts +29 -0
  115. package/src/commands/update.ts +21 -0
  116. package/src/commands/web-search.ts +42 -0
  117. package/src/commit/agentic/agent.ts +314 -0
  118. package/src/commit/agentic/fallback.ts +96 -0
  119. package/src/commit/agentic/index.ts +354 -0
  120. package/src/commit/agentic/prompts/analyze-file.md +22 -0
  121. package/src/commit/agentic/prompts/session-user.md +25 -0
  122. package/src/commit/agentic/prompts/split-confirm.md +1 -0
  123. package/src/commit/agentic/prompts/system.md +38 -0
  124. package/src/commit/agentic/state.ts +60 -0
  125. package/src/commit/agentic/tools/analyze-file.ts +128 -0
  126. package/src/commit/agentic/tools/git-file-diff.ts +191 -0
  127. package/src/commit/agentic/tools/git-hunk.ts +50 -0
  128. package/src/commit/agentic/tools/git-overview.ts +81 -0
  129. package/src/commit/agentic/tools/index.ts +54 -0
  130. package/src/commit/agentic/tools/propose-changelog.ts +139 -0
  131. package/src/commit/agentic/tools/propose-commit.ts +122 -0
  132. package/src/commit/agentic/tools/recent-commits.ts +81 -0
  133. package/src/commit/agentic/tools/schemas.ts +31 -0
  134. package/src/commit/agentic/tools/split-commit.ts +251 -0
  135. package/src/commit/agentic/topo-sort.ts +44 -0
  136. package/src/commit/agentic/trivial.ts +51 -0
  137. package/src/commit/agentic/validation.ts +183 -0
  138. package/src/commit/analysis/conventional.ts +122 -0
  139. package/src/commit/analysis/index.ts +4 -0
  140. package/src/commit/analysis/scope.ts +242 -0
  141. package/src/commit/analysis/summary.ts +105 -0
  142. package/src/commit/analysis/validation.ts +66 -0
  143. package/src/commit/changelog/detect.ts +40 -0
  144. package/src/commit/changelog/generate.ts +101 -0
  145. package/src/commit/changelog/index.ts +234 -0
  146. package/src/commit/changelog/parse.ts +44 -0
  147. package/src/commit/cli.ts +85 -0
  148. package/src/commit/git/diff.ts +148 -0
  149. package/src/commit/index.ts +5 -0
  150. package/src/commit/map-reduce/index.ts +69 -0
  151. package/src/commit/map-reduce/map-phase.ts +193 -0
  152. package/src/commit/map-reduce/reduce-phase.ts +108 -0
  153. package/src/commit/map-reduce/utils.ts +9 -0
  154. package/src/commit/message.ts +11 -0
  155. package/src/commit/model-selection.ts +63 -0
  156. package/src/commit/pipeline.ts +242 -0
  157. package/src/commit/prompts/analysis-system.md +148 -0
  158. package/src/commit/prompts/analysis-user.md +38 -0
  159. package/src/commit/prompts/changelog-system.md +50 -0
  160. package/src/commit/prompts/changelog-user.md +18 -0
  161. package/src/commit/prompts/file-observer-system.md +24 -0
  162. package/src/commit/prompts/file-observer-user.md +8 -0
  163. package/src/commit/prompts/reduce-system.md +50 -0
  164. package/src/commit/prompts/reduce-user.md +17 -0
  165. package/src/commit/prompts/summary-retry.md +3 -0
  166. package/src/commit/prompts/summary-system.md +38 -0
  167. package/src/commit/prompts/summary-user.md +13 -0
  168. package/src/commit/prompts/types-description.md +2 -0
  169. package/src/commit/types.ts +118 -0
  170. package/src/commit/utils/exclusions.ts +42 -0
  171. package/src/commit/utils.ts +44 -0
  172. package/src/config/file-lock.ts +121 -0
  173. package/src/config/keybindings.ts +493 -0
  174. package/src/config/mcp-schema.json +230 -0
  175. package/src/config/model-registry.ts +1917 -0
  176. package/src/config/model-resolver.ts +1064 -0
  177. package/src/config/prompt-templates.ts +255 -0
  178. package/src/config/resolve-config-value.ts +94 -0
  179. package/src/config/settings-schema.ts +1929 -0
  180. package/src/config/settings.ts +701 -0
  181. package/src/config.ts +419 -0
  182. package/src/cursor.ts +304 -0
  183. package/src/dap/client.ts +674 -0
  184. package/src/dap/config.ts +150 -0
  185. package/src/dap/defaults.json +211 -0
  186. package/src/dap/index.ts +4 -0
  187. package/src/dap/session.ts +1255 -0
  188. package/src/dap/types.ts +600 -0
  189. package/src/debug/index.ts +438 -0
  190. package/src/debug/log-formatting.ts +58 -0
  191. package/src/debug/log-viewer.ts +908 -0
  192. package/src/debug/profiler.ts +158 -0
  193. package/src/debug/report-bundle.ts +365 -0
  194. package/src/debug/system-info.ts +107 -0
  195. package/src/discovery/agents-md.ts +67 -0
  196. package/src/discovery/agents.ts +219 -0
  197. package/src/discovery/builtin.ts +851 -0
  198. package/src/discovery/claude-plugins.ts +296 -0
  199. package/src/discovery/claude.ts +543 -0
  200. package/src/discovery/cline.ts +83 -0
  201. package/src/discovery/codex.ts +535 -0
  202. package/src/discovery/cursor.ts +220 -0
  203. package/src/discovery/gemini.ts +396 -0
  204. package/src/discovery/github.ts +118 -0
  205. package/src/discovery/helpers.ts +968 -0
  206. package/src/discovery/index.ts +79 -0
  207. package/src/discovery/mcp-json.ts +171 -0
  208. package/src/discovery/opencode.ts +393 -0
  209. package/src/discovery/plugin-dir-roots.ts +28 -0
  210. package/src/discovery/ssh.ts +153 -0
  211. package/src/discovery/substitute-plugin-root.ts +29 -0
  212. package/src/discovery/vscode.ts +105 -0
  213. package/src/discovery/windsurf.ts +147 -0
  214. package/src/edit/diff.ts +818 -0
  215. package/src/edit/index.ts +314 -0
  216. package/src/edit/line-hash.ts +67 -0
  217. package/src/edit/modes/chunk.ts +454 -0
  218. package/src/edit/modes/hashline.ts +1341 -0
  219. package/src/edit/modes/patch.ts +1785 -0
  220. package/src/edit/modes/replace.ts +1107 -0
  221. package/src/edit/normalize.ts +375 -0
  222. package/src/edit/renderer.ts +467 -0
  223. package/src/exa/factory.ts +59 -0
  224. package/src/exa/index.ts +27 -0
  225. package/src/exa/mcp-client.ts +291 -0
  226. package/src/exa/render.ts +244 -0
  227. package/src/exa/researcher.ts +47 -0
  228. package/src/exa/search.ts +86 -0
  229. package/src/exa/types.ts +166 -0
  230. package/src/exa/websets.ts +247 -0
  231. package/src/exec/bash-executor.ts +240 -0
  232. package/src/exec/exec.ts +53 -0
  233. package/src/exec/idle-timeout-watchdog.ts +126 -0
  234. package/src/exec/non-interactive-env.ts +48 -0
  235. package/src/export/custom-share.ts +65 -0
  236. package/src/export/html/index.ts +161 -0
  237. package/src/export/html/template.css +919 -0
  238. package/src/export/html/template.generated.ts +2 -0
  239. package/src/export/html/template.html +46 -0
  240. package/src/export/html/template.js +1458 -0
  241. package/src/export/html/template.macro.ts +24 -0
  242. package/src/export/ttsr.ts +434 -0
  243. package/src/extensibility/custom-commands/bundled/ci-green/index.ts +25 -0
  244. package/src/extensibility/custom-commands/bundled/review/index.ts +435 -0
  245. package/src/extensibility/custom-commands/index.ts +2 -0
  246. package/src/extensibility/custom-commands/loader.ts +236 -0
  247. package/src/extensibility/custom-commands/types.ts +111 -0
  248. package/src/extensibility/custom-tools/index.ts +7 -0
  249. package/src/extensibility/custom-tools/loader.ts +238 -0
  250. package/src/extensibility/custom-tools/types.ts +255 -0
  251. package/src/extensibility/custom-tools/wrapper.ts +47 -0
  252. package/src/extensibility/extensions/index.ts +15 -0
  253. package/src/extensibility/extensions/loader.ts +516 -0
  254. package/src/extensibility/extensions/runner.ts +841 -0
  255. package/src/extensibility/extensions/types.ts +1366 -0
  256. package/src/extensibility/extensions/wrapper.ts +191 -0
  257. package/src/extensibility/hooks/index.ts +5 -0
  258. package/src/extensibility/hooks/loader.ts +255 -0
  259. package/src/extensibility/hooks/runner.ts +425 -0
  260. package/src/extensibility/hooks/tool-wrapper.ts +108 -0
  261. package/src/extensibility/hooks/types.ts +822 -0
  262. package/src/extensibility/plugins/doctor.ts +66 -0
  263. package/src/extensibility/plugins/git-url.ts +281 -0
  264. package/src/extensibility/plugins/index.ts +9 -0
  265. package/src/extensibility/plugins/installer.ts +192 -0
  266. package/src/extensibility/plugins/loader.ts +267 -0
  267. package/src/extensibility/plugins/manager.ts +731 -0
  268. package/src/extensibility/plugins/marketplace/cache.ts +136 -0
  269. package/src/extensibility/plugins/marketplace/fetcher.ts +317 -0
  270. package/src/extensibility/plugins/marketplace/index.ts +6 -0
  271. package/src/extensibility/plugins/marketplace/manager.ts +751 -0
  272. package/src/extensibility/plugins/marketplace/registry.ts +196 -0
  273. package/src/extensibility/plugins/marketplace/source-resolver.ts +147 -0
  274. package/src/extensibility/plugins/marketplace/types.ts +191 -0
  275. package/src/extensibility/plugins/parser.ts +105 -0
  276. package/src/extensibility/plugins/types.ts +194 -0
  277. package/src/extensibility/skills.ts +252 -0
  278. package/src/extensibility/slash-commands.ts +227 -0
  279. package/src/extensibility/tool-proxy.ts +25 -0
  280. package/src/extensibility/utils.ts +38 -0
  281. package/src/index.ts +61 -0
  282. package/src/internal-urls/agent-protocol.ts +136 -0
  283. package/src/internal-urls/artifact-protocol.ts +97 -0
  284. package/src/internal-urls/docs-index.generated.ts +57 -0
  285. package/src/internal-urls/index.ts +35 -0
  286. package/src/internal-urls/jobs-protocol.ts +118 -0
  287. package/src/internal-urls/json-query.ts +126 -0
  288. package/src/internal-urls/local-protocol.ts +206 -0
  289. package/src/internal-urls/mcp-protocol.ts +156 -0
  290. package/src/internal-urls/memory-protocol.ts +133 -0
  291. package/src/internal-urls/parse.ts +72 -0
  292. package/src/internal-urls/pi-protocol.ts +84 -0
  293. package/src/internal-urls/router.ts +54 -0
  294. package/src/internal-urls/rule-protocol.ts +55 -0
  295. package/src/internal-urls/skill-protocol.ts +111 -0
  296. package/src/internal-urls/types.ts +52 -0
  297. package/src/ipy/cancellation.ts +28 -0
  298. package/src/ipy/executor.ts +762 -0
  299. package/src/ipy/gateway-coordinator.ts +424 -0
  300. package/src/ipy/kernel.ts +1065 -0
  301. package/src/ipy/modules.ts +144 -0
  302. package/src/ipy/prelude.py +849 -0
  303. package/src/ipy/prelude.ts +3 -0
  304. package/src/ipy/runtime.ts +221 -0
  305. package/src/lsp/client.ts +878 -0
  306. package/src/lsp/clients/biome-client.ts +202 -0
  307. package/src/lsp/clients/index.ts +50 -0
  308. package/src/lsp/clients/lsp-linter-client.ts +93 -0
  309. package/src/lsp/clients/swiftlint-client.ts +120 -0
  310. package/src/lsp/config.ts +402 -0
  311. package/src/lsp/defaults.json +998 -0
  312. package/src/lsp/edits.ts +109 -0
  313. package/src/lsp/index.ts +1743 -0
  314. package/src/lsp/lspmux.ts +233 -0
  315. package/src/lsp/render.ts +683 -0
  316. package/src/lsp/startup-events.ts +13 -0
  317. package/src/lsp/types.ts +438 -0
  318. package/src/lsp/utils.ts +807 -0
  319. package/src/main.ts +914 -0
  320. package/src/mcp/client.ts +482 -0
  321. package/src/mcp/config-writer.ts +225 -0
  322. package/src/mcp/config.ts +365 -0
  323. package/src/mcp/discoverable-tool-metadata.ts +202 -0
  324. package/src/mcp/index.ts +29 -0
  325. package/src/mcp/json-rpc.ts +84 -0
  326. package/src/mcp/loader.ts +124 -0
  327. package/src/mcp/manager.ts +1152 -0
  328. package/src/mcp/oauth-discovery.ts +349 -0
  329. package/src/mcp/oauth-flow.ts +387 -0
  330. package/src/mcp/render.ts +130 -0
  331. package/src/mcp/smithery-auth.ts +104 -0
  332. package/src/mcp/smithery-connect.ts +145 -0
  333. package/src/mcp/smithery-registry.ts +477 -0
  334. package/src/mcp/tool-bridge.ts +417 -0
  335. package/src/mcp/tool-cache.ts +117 -0
  336. package/src/mcp/transports/http.ts +475 -0
  337. package/src/mcp/transports/index.ts +6 -0
  338. package/src/mcp/transports/stdio.ts +325 -0
  339. package/src/mcp/types.ts +423 -0
  340. package/src/memories/index.ts +1114 -0
  341. package/src/memories/storage.ts +577 -0
  342. package/src/modes/acp/acp-agent.ts +1358 -0
  343. package/src/modes/acp/acp-event-mapper.ts +538 -0
  344. package/src/modes/acp/acp-mode.ts +15 -0
  345. package/src/modes/acp/index.ts +2 -0
  346. package/src/modes/components/agent-dashboard.ts +1120 -0
  347. package/src/modes/components/assistant-message.ts +206 -0
  348. package/src/modes/components/bash-execution.ts +247 -0
  349. package/src/modes/components/bordered-loader.ts +41 -0
  350. package/src/modes/components/branch-summary-message.ts +45 -0
  351. package/src/modes/components/btw-panel.ts +104 -0
  352. package/src/modes/components/compaction-summary-message.ts +51 -0
  353. package/src/modes/components/countdown-timer.ts +75 -0
  354. package/src/modes/components/custom-editor.ts +238 -0
  355. package/src/modes/components/custom-message.ts +91 -0
  356. package/src/modes/components/diff.ts +210 -0
  357. package/src/modes/components/dynamic-border.ts +25 -0
  358. package/src/modes/components/extensions/extension-dashboard.ts +326 -0
  359. package/src/modes/components/extensions/extension-list.ts +492 -0
  360. package/src/modes/components/extensions/index.ts +9 -0
  361. package/src/modes/components/extensions/inspector-panel.ts +317 -0
  362. package/src/modes/components/extensions/state-manager.ts +587 -0
  363. package/src/modes/components/extensions/types.ts +191 -0
  364. package/src/modes/components/footer.ts +262 -0
  365. package/src/modes/components/history-search.ts +158 -0
  366. package/src/modes/components/hook-editor.ts +151 -0
  367. package/src/modes/components/hook-input.ts +79 -0
  368. package/src/modes/components/hook-message.ts +100 -0
  369. package/src/modes/components/hook-selector.ts +190 -0
  370. package/src/modes/components/index.ts +36 -0
  371. package/src/modes/components/keybinding-hints.ts +65 -0
  372. package/src/modes/components/login-dialog.ts +164 -0
  373. package/src/modes/components/mcp-add-wizard.ts +1314 -0
  374. package/src/modes/components/model-selector.ts +789 -0
  375. package/src/modes/components/oauth-selector.ts +211 -0
  376. package/src/modes/components/plugin-selector.ts +95 -0
  377. package/src/modes/components/plugin-settings.ts +477 -0
  378. package/src/modes/components/python-execution.ts +181 -0
  379. package/src/modes/components/queue-mode-selector.ts +56 -0
  380. package/src/modes/components/read-tool-group.ts +152 -0
  381. package/src/modes/components/session-observer-overlay.ts +472 -0
  382. package/src/modes/components/session-selector.ts +343 -0
  383. package/src/modes/components/settings-defs.ts +547 -0
  384. package/src/modes/components/settings-selector.ts +624 -0
  385. package/src/modes/components/show-images-selector.ts +45 -0
  386. package/src/modes/components/skill-message.ts +90 -0
  387. package/src/modes/components/status-line/context-thresholds.ts +68 -0
  388. package/src/modes/components/status-line/git-utils.ts +42 -0
  389. package/src/modes/components/status-line/index.ts +4 -0
  390. package/src/modes/components/status-line/presets.ts +94 -0
  391. package/src/modes/components/status-line/segments.ts +392 -0
  392. package/src/modes/components/status-line/separators.ts +55 -0
  393. package/src/modes/components/status-line/token-rate.ts +66 -0
  394. package/src/modes/components/status-line/types.ts +82 -0
  395. package/src/modes/components/status-line-segment-editor.ts +358 -0
  396. package/src/modes/components/status-line.ts +499 -0
  397. package/src/modes/components/theme-selector.ts +63 -0
  398. package/src/modes/components/thinking-selector.ts +52 -0
  399. package/src/modes/components/todo-reminder.ts +47 -0
  400. package/src/modes/components/tool-execution.ts +697 -0
  401. package/src/modes/components/tree-selector.ts +908 -0
  402. package/src/modes/components/ttsr-notification.ts +80 -0
  403. package/src/modes/components/user-message-selector.ts +141 -0
  404. package/src/modes/components/user-message.ts +38 -0
  405. package/src/modes/components/visual-truncate.ts +63 -0
  406. package/src/modes/components/welcome.ts +248 -0
  407. package/src/modes/controllers/btw-controller.ts +193 -0
  408. package/src/modes/controllers/command-controller.ts +1195 -0
  409. package/src/modes/controllers/event-controller.ts +644 -0
  410. package/src/modes/controllers/extension-ui-controller.ts +960 -0
  411. package/src/modes/controllers/input-controller.ts +762 -0
  412. package/src/modes/controllers/mcp-command-controller.ts +1926 -0
  413. package/src/modes/controllers/selector-controller.ts +991 -0
  414. package/src/modes/controllers/ssh-command-controller.ts +421 -0
  415. package/src/modes/index.ts +34 -0
  416. package/src/modes/interactive-mode.ts +1664 -0
  417. package/src/modes/oauth-manual-input.ts +42 -0
  418. package/src/modes/print-mode.ts +192 -0
  419. package/src/modes/prompt-action-autocomplete.ts +233 -0
  420. package/src/modes/rpc/host-tools.ts +186 -0
  421. package/src/modes/rpc/rpc-client.ts +750 -0
  422. package/src/modes/rpc/rpc-mode.ts +825 -0
  423. package/src/modes/rpc/rpc-types.ts +297 -0
  424. package/src/modes/session-observer-registry.ts +146 -0
  425. package/src/modes/shared.ts +30 -0
  426. package/src/modes/theme/dark.json +95 -0
  427. package/src/modes/theme/defaults/alabaster.json +93 -0
  428. package/src/modes/theme/defaults/amethyst.json +96 -0
  429. package/src/modes/theme/defaults/anthracite.json +93 -0
  430. package/src/modes/theme/defaults/basalt.json +91 -0
  431. package/src/modes/theme/defaults/birch.json +95 -0
  432. package/src/modes/theme/defaults/dark-abyss.json +91 -0
  433. package/src/modes/theme/defaults/dark-arctic.json +104 -0
  434. package/src/modes/theme/defaults/dark-aurora.json +95 -0
  435. package/src/modes/theme/defaults/dark-catppuccin.json +107 -0
  436. package/src/modes/theme/defaults/dark-cavern.json +91 -0
  437. package/src/modes/theme/defaults/dark-copper.json +95 -0
  438. package/src/modes/theme/defaults/dark-cosmos.json +90 -0
  439. package/src/modes/theme/defaults/dark-cyberpunk.json +102 -0
  440. package/src/modes/theme/defaults/dark-dracula.json +98 -0
  441. package/src/modes/theme/defaults/dark-eclipse.json +91 -0
  442. package/src/modes/theme/defaults/dark-ember.json +95 -0
  443. package/src/modes/theme/defaults/dark-equinox.json +90 -0
  444. package/src/modes/theme/defaults/dark-forest.json +96 -0
  445. package/src/modes/theme/defaults/dark-github.json +105 -0
  446. package/src/modes/theme/defaults/dark-gruvbox.json +112 -0
  447. package/src/modes/theme/defaults/dark-lavender.json +95 -0
  448. package/src/modes/theme/defaults/dark-lunar.json +89 -0
  449. package/src/modes/theme/defaults/dark-midnight.json +95 -0
  450. package/src/modes/theme/defaults/dark-monochrome.json +94 -0
  451. package/src/modes/theme/defaults/dark-monokai.json +98 -0
  452. package/src/modes/theme/defaults/dark-nebula.json +90 -0
  453. package/src/modes/theme/defaults/dark-nord.json +97 -0
  454. package/src/modes/theme/defaults/dark-ocean.json +101 -0
  455. package/src/modes/theme/defaults/dark-one.json +100 -0
  456. package/src/modes/theme/defaults/dark-poimandres.json +138 -0
  457. package/src/modes/theme/defaults/dark-rainforest.json +91 -0
  458. package/src/modes/theme/defaults/dark-reef.json +91 -0
  459. package/src/modes/theme/defaults/dark-retro.json +92 -0
  460. package/src/modes/theme/defaults/dark-rose-pine.json +96 -0
  461. package/src/modes/theme/defaults/dark-sakura.json +95 -0
  462. package/src/modes/theme/defaults/dark-slate.json +95 -0
  463. package/src/modes/theme/defaults/dark-solarized.json +97 -0
  464. package/src/modes/theme/defaults/dark-solstice.json +90 -0
  465. package/src/modes/theme/defaults/dark-starfall.json +91 -0
  466. package/src/modes/theme/defaults/dark-sunset.json +99 -0
  467. package/src/modes/theme/defaults/dark-swamp.json +90 -0
  468. package/src/modes/theme/defaults/dark-synthwave.json +103 -0
  469. package/src/modes/theme/defaults/dark-taiga.json +91 -0
  470. package/src/modes/theme/defaults/dark-terminal.json +95 -0
  471. package/src/modes/theme/defaults/dark-tokyo-night.json +101 -0
  472. package/src/modes/theme/defaults/dark-tundra.json +91 -0
  473. package/src/modes/theme/defaults/dark-twilight.json +91 -0
  474. package/src/modes/theme/defaults/dark-volcanic.json +91 -0
  475. package/src/modes/theme/defaults/graphite.json +92 -0
  476. package/src/modes/theme/defaults/index.ts +203 -0
  477. package/src/modes/theme/defaults/light-arctic.json +107 -0
  478. package/src/modes/theme/defaults/light-aurora-day.json +91 -0
  479. package/src/modes/theme/defaults/light-canyon.json +91 -0
  480. package/src/modes/theme/defaults/light-catppuccin.json +106 -0
  481. package/src/modes/theme/defaults/light-cirrus.json +90 -0
  482. package/src/modes/theme/defaults/light-coral.json +95 -0
  483. package/src/modes/theme/defaults/light-cyberpunk.json +96 -0
  484. package/src/modes/theme/defaults/light-dawn.json +90 -0
  485. package/src/modes/theme/defaults/light-dunes.json +91 -0
  486. package/src/modes/theme/defaults/light-eucalyptus.json +95 -0
  487. package/src/modes/theme/defaults/light-forest.json +100 -0
  488. package/src/modes/theme/defaults/light-frost.json +95 -0
  489. package/src/modes/theme/defaults/light-github.json +115 -0
  490. package/src/modes/theme/defaults/light-glacier.json +91 -0
  491. package/src/modes/theme/defaults/light-gruvbox.json +108 -0
  492. package/src/modes/theme/defaults/light-haze.json +90 -0
  493. package/src/modes/theme/defaults/light-honeycomb.json +95 -0
  494. package/src/modes/theme/defaults/light-lagoon.json +91 -0
  495. package/src/modes/theme/defaults/light-lavender.json +95 -0
  496. package/src/modes/theme/defaults/light-meadow.json +91 -0
  497. package/src/modes/theme/defaults/light-mint.json +95 -0
  498. package/src/modes/theme/defaults/light-monochrome.json +101 -0
  499. package/src/modes/theme/defaults/light-ocean.json +99 -0
  500. package/src/modes/theme/defaults/light-one.json +99 -0
  501. package/src/modes/theme/defaults/light-opal.json +91 -0
  502. package/src/modes/theme/defaults/light-orchard.json +91 -0
  503. package/src/modes/theme/defaults/light-paper.json +95 -0
  504. package/src/modes/theme/defaults/light-poimandres.json +138 -0
  505. package/src/modes/theme/defaults/light-prism.json +90 -0
  506. package/src/modes/theme/defaults/light-retro.json +98 -0
  507. package/src/modes/theme/defaults/light-sand.json +95 -0
  508. package/src/modes/theme/defaults/light-savanna.json +91 -0
  509. package/src/modes/theme/defaults/light-solarized.json +102 -0
  510. package/src/modes/theme/defaults/light-soleil.json +90 -0
  511. package/src/modes/theme/defaults/light-sunset.json +99 -0
  512. package/src/modes/theme/defaults/light-synthwave.json +98 -0
  513. package/src/modes/theme/defaults/light-tokyo-night.json +111 -0
  514. package/src/modes/theme/defaults/light-wetland.json +91 -0
  515. package/src/modes/theme/defaults/light-zenith.json +89 -0
  516. package/src/modes/theme/defaults/limestone.json +94 -0
  517. package/src/modes/theme/defaults/mahogany.json +97 -0
  518. package/src/modes/theme/defaults/marble.json +93 -0
  519. package/src/modes/theme/defaults/obsidian.json +91 -0
  520. package/src/modes/theme/defaults/onyx.json +91 -0
  521. package/src/modes/theme/defaults/pearl.json +93 -0
  522. package/src/modes/theme/defaults/porcelain.json +91 -0
  523. package/src/modes/theme/defaults/quartz.json +96 -0
  524. package/src/modes/theme/defaults/sandstone.json +95 -0
  525. package/src/modes/theme/defaults/titanium.json +90 -0
  526. package/src/modes/theme/defaults/xcsh-dark.json +89 -0
  527. package/src/modes/theme/defaults/xcsh-light.json +91 -0
  528. package/src/modes/theme/light.json +93 -0
  529. package/src/modes/theme/mermaid-cache.ts +70 -0
  530. package/src/modes/theme/theme-schema.json +429 -0
  531. package/src/modes/theme/theme.ts +2541 -0
  532. package/src/modes/types.ts +269 -0
  533. package/src/modes/utils/hotkeys-markdown.ts +59 -0
  534. package/src/modes/utils/keybinding-matchers.ts +30 -0
  535. package/src/modes/utils/tools-markdown.ts +27 -0
  536. package/src/modes/utils/ui-helpers.ts +620 -0
  537. package/src/plan-mode/approved-plan.ts +55 -0
  538. package/src/plan-mode/state.ts +6 -0
  539. package/src/priority.json +29 -0
  540. package/src/prompts/agents/designer.md +68 -0
  541. package/src/prompts/agents/explore.md +60 -0
  542. package/src/prompts/agents/frontmatter.md +10 -0
  543. package/src/prompts/agents/init.md +36 -0
  544. package/src/prompts/agents/librarian.md +121 -0
  545. package/src/prompts/agents/plan.md +49 -0
  546. package/src/prompts/agents/reviewer.md +127 -0
  547. package/src/prompts/agents/task.md +16 -0
  548. package/src/prompts/ci-green-request.md +36 -0
  549. package/src/prompts/compaction/branch-summary-context.md +5 -0
  550. package/src/prompts/compaction/branch-summary-preamble.md +2 -0
  551. package/src/prompts/compaction/branch-summary.md +30 -0
  552. package/src/prompts/compaction/compaction-short-summary.md +9 -0
  553. package/src/prompts/compaction/compaction-summary-context.md +5 -0
  554. package/src/prompts/compaction/compaction-summary.md +38 -0
  555. package/src/prompts/compaction/compaction-turn-prefix.md +17 -0
  556. package/src/prompts/compaction/compaction-update-summary.md +45 -0
  557. package/src/prompts/memories/consolidation.md +30 -0
  558. package/src/prompts/memories/read-path.md +11 -0
  559. package/src/prompts/memories/stage_one_input.md +6 -0
  560. package/src/prompts/memories/stage_one_system.md +21 -0
  561. package/src/prompts/review-request.md +64 -0
  562. package/src/prompts/system/agent-creation-architect.md +65 -0
  563. package/src/prompts/system/agent-creation-user.md +6 -0
  564. package/src/prompts/system/auto-handoff-threshold-focus.md +1 -0
  565. package/src/prompts/system/btw-user.md +8 -0
  566. package/src/prompts/system/commit-message-system.md +2 -0
  567. package/src/prompts/system/custom-system-prompt.md +68 -0
  568. package/src/prompts/system/eager-todo.md +13 -0
  569. package/src/prompts/system/file-operations.md +10 -0
  570. package/src/prompts/system/handoff-document.md +46 -0
  571. package/src/prompts/system/plan-mode-active.md +107 -0
  572. package/src/prompts/system/plan-mode-approved.md +23 -0
  573. package/src/prompts/system/plan-mode-reference.md +14 -0
  574. package/src/prompts/system/plan-mode-subagent.md +34 -0
  575. package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
  576. package/src/prompts/system/subagent-submit-reminder.md +11 -0
  577. package/src/prompts/system/subagent-system-prompt.md +35 -0
  578. package/src/prompts/system/subagent-user-prompt.md +12 -0
  579. package/src/prompts/system/summarization-system.md +3 -0
  580. package/src/prompts/system/system-prompt.md +333 -0
  581. package/src/prompts/system/title-system.md +2 -0
  582. package/src/prompts/system/ttsr-interrupt.md +7 -0
  583. package/src/prompts/system/web-search.md +28 -0
  584. package/src/prompts/tools/ask.md +28 -0
  585. package/src/prompts/tools/ast-edit.md +48 -0
  586. package/src/prompts/tools/ast-grep.md +54 -0
  587. package/src/prompts/tools/async-result.md +5 -0
  588. package/src/prompts/tools/await.md +5 -0
  589. package/src/prompts/tools/bash.md +47 -0
  590. package/src/prompts/tools/browser.md +24 -0
  591. package/src/prompts/tools/calculator.md +10 -0
  592. package/src/prompts/tools/cancel-job.md +5 -0
  593. package/src/prompts/tools/checkpoint.md +16 -0
  594. package/src/prompts/tools/chunk-edit.md +219 -0
  595. package/src/prompts/tools/debug.md +43 -0
  596. package/src/prompts/tools/exit-plan-mode.md +41 -0
  597. package/src/prompts/tools/find.md +26 -0
  598. package/src/prompts/tools/gemini-image.md +7 -0
  599. package/src/prompts/tools/gh-issue-view.md +11 -0
  600. package/src/prompts/tools/gh-pr-checkout.md +12 -0
  601. package/src/prompts/tools/gh-pr-diff.md +12 -0
  602. package/src/prompts/tools/gh-pr-push.md +11 -0
  603. package/src/prompts/tools/gh-pr-view.md +11 -0
  604. package/src/prompts/tools/gh-repo-view.md +11 -0
  605. package/src/prompts/tools/gh-run-watch.md +12 -0
  606. package/src/prompts/tools/gh-search-issues.md +11 -0
  607. package/src/prompts/tools/gh-search-prs.md +11 -0
  608. package/src/prompts/tools/grep.md +29 -0
  609. package/src/prompts/tools/hashline.md +131 -0
  610. package/src/prompts/tools/inspect-image-system.md +20 -0
  611. package/src/prompts/tools/inspect-image.md +32 -0
  612. package/src/prompts/tools/lsp.md +33 -0
  613. package/src/prompts/tools/patch.md +72 -0
  614. package/src/prompts/tools/python.md +60 -0
  615. package/src/prompts/tools/read-chunk.md +17 -0
  616. package/src/prompts/tools/read.md +54 -0
  617. package/src/prompts/tools/render-mermaid.md +9 -0
  618. package/src/prompts/tools/replace.md +36 -0
  619. package/src/prompts/tools/resolve.md +8 -0
  620. package/src/prompts/tools/rewind.md +13 -0
  621. package/src/prompts/tools/search-tool-bm25.md +34 -0
  622. package/src/prompts/tools/ssh.md +44 -0
  623. package/src/prompts/tools/task-summary.md +28 -0
  624. package/src/prompts/tools/task.md +131 -0
  625. package/src/prompts/tools/todo-write.md +89 -0
  626. package/src/prompts/tools/web-search.md +10 -0
  627. package/src/prompts/tools/write.md +13 -0
  628. package/src/sdk.ts +1694 -0
  629. package/src/secrets/index.ts +116 -0
  630. package/src/secrets/obfuscator.ts +277 -0
  631. package/src/secrets/regex.ts +21 -0
  632. package/src/session/agent-session.ts +6506 -0
  633. package/src/session/agent-storage.ts +451 -0
  634. package/src/session/artifacts.ts +132 -0
  635. package/src/session/auth-storage.ts +17 -0
  636. package/src/session/blob-store.ts +135 -0
  637. package/src/session/compaction/branch-summarization.ts +322 -0
  638. package/src/session/compaction/compaction.ts +1388 -0
  639. package/src/session/compaction/index.ts +7 -0
  640. package/src/session/compaction/pruning.ts +91 -0
  641. package/src/session/compaction/utils.ts +184 -0
  642. package/src/session/history-storage.ts +253 -0
  643. package/src/session/messages.ts +373 -0
  644. package/src/session/session-dump-format.ts +203 -0
  645. package/src/session/session-manager.ts +2728 -0
  646. package/src/session/session-storage.ts +367 -0
  647. package/src/session/streaming-output.ts +752 -0
  648. package/src/session/tool-choice-queue.ts +213 -0
  649. package/src/slash-commands/builtin-registry.ts +981 -0
  650. package/src/slash-commands/marketplace-install-parser.ts +99 -0
  651. package/src/ssh/config-writer.ts +183 -0
  652. package/src/ssh/connection-manager.ts +445 -0
  653. package/src/ssh/ssh-executor.ts +128 -0
  654. package/src/ssh/sshfs-mount.ts +137 -0
  655. package/src/ssh/utils.ts +8 -0
  656. package/src/stt/downloader.ts +71 -0
  657. package/src/stt/index.ts +3 -0
  658. package/src/stt/recorder.ts +351 -0
  659. package/src/stt/setup.ts +52 -0
  660. package/src/stt/stt-controller.ts +160 -0
  661. package/src/stt/transcribe.py +70 -0
  662. package/src/stt/transcriber.ts +91 -0
  663. package/src/system-prompt.ts +620 -0
  664. package/src/task/agents.ts +166 -0
  665. package/src/task/commands.ts +131 -0
  666. package/src/task/discovery.ts +126 -0
  667. package/src/task/executor.ts +1293 -0
  668. package/src/task/index.ts +1199 -0
  669. package/src/task/isolation-backend.ts +72 -0
  670. package/src/task/name-generator.ts +1577 -0
  671. package/src/task/output-manager.ts +107 -0
  672. package/src/task/parallel.ts +116 -0
  673. package/src/task/render.ts +1021 -0
  674. package/src/task/subprocess-tool-registry.ts +88 -0
  675. package/src/task/template.ts +33 -0
  676. package/src/task/types.ts +230 -0
  677. package/src/task/worktree.ts +580 -0
  678. package/src/task/xcsh-command.ts +26 -0
  679. package/src/thinking.ts +87 -0
  680. package/src/tools/archive-reader.ts +315 -0
  681. package/src/tools/ask.ts +795 -0
  682. package/src/tools/ast-edit.ts +495 -0
  683. package/src/tools/ast-grep.ts +456 -0
  684. package/src/tools/auto-generated-guard.ts +305 -0
  685. package/src/tools/await-tool.ts +170 -0
  686. package/src/tools/bash-interactive.ts +377 -0
  687. package/src/tools/bash-interceptor.ts +67 -0
  688. package/src/tools/bash-normalize.ts +107 -0
  689. package/src/tools/bash-skill-urls.ts +246 -0
  690. package/src/tools/bash.ts +600 -0
  691. package/src/tools/browser.ts +1473 -0
  692. package/src/tools/calculator.ts +537 -0
  693. package/src/tools/cancel-job.ts +99 -0
  694. package/src/tools/checkpoint.ts +133 -0
  695. package/src/tools/context.ts +39 -0
  696. package/src/tools/debug.ts +1007 -0
  697. package/src/tools/exit-plan-mode.ts +101 -0
  698. package/src/tools/fetch.ts +1463 -0
  699. package/src/tools/find.ts +495 -0
  700. package/src/tools/fs-cache-invalidation.ts +33 -0
  701. package/src/tools/gemini-image.ts +896 -0
  702. package/src/tools/gh-renderer.ts +305 -0
  703. package/src/tools/gh.ts +2546 -0
  704. package/src/tools/grep.ts +625 -0
  705. package/src/tools/index.ts +426 -0
  706. package/src/tools/inspect-image-renderer.ts +103 -0
  707. package/src/tools/inspect-image.ts +173 -0
  708. package/src/tools/json-tree.ts +243 -0
  709. package/src/tools/jtd-to-json-schema.ts +199 -0
  710. package/src/tools/jtd-to-typescript.ts +136 -0
  711. package/src/tools/jtd-utils.ts +102 -0
  712. package/src/tools/list-limit.ts +40 -0
  713. package/src/tools/notebook.ts +288 -0
  714. package/src/tools/output-meta.ts +588 -0
  715. package/src/tools/path-utils.ts +560 -0
  716. package/src/tools/plan-mode-guard.ts +41 -0
  717. package/src/tools/puppeteer/00_stealth_tampering.txt +63 -0
  718. package/src/tools/puppeteer/01_stealth_activity.txt +20 -0
  719. package/src/tools/puppeteer/02_stealth_hairline.txt +11 -0
  720. package/src/tools/puppeteer/03_stealth_botd.txt +384 -0
  721. package/src/tools/puppeteer/04_stealth_iframe.txt +81 -0
  722. package/src/tools/puppeteer/05_stealth_webgl.txt +75 -0
  723. package/src/tools/puppeteer/06_stealth_screen.txt +72 -0
  724. package/src/tools/puppeteer/07_stealth_fonts.txt +97 -0
  725. package/src/tools/puppeteer/08_stealth_audio.txt +51 -0
  726. package/src/tools/puppeteer/09_stealth_locale.txt +46 -0
  727. package/src/tools/puppeteer/10_stealth_plugins.txt +206 -0
  728. package/src/tools/puppeteer/11_stealth_hardware.txt +8 -0
  729. package/src/tools/puppeteer/12_stealth_codecs.txt +40 -0
  730. package/src/tools/puppeteer/13_stealth_worker.txt +74 -0
  731. package/src/tools/python.ts +1135 -0
  732. package/src/tools/read.ts +1375 -0
  733. package/src/tools/render-mermaid.ts +71 -0
  734. package/src/tools/render-utils.ts +618 -0
  735. package/src/tools/renderers.ts +68 -0
  736. package/src/tools/report-tool-issue.ts +80 -0
  737. package/src/tools/resolve.ts +192 -0
  738. package/src/tools/review.ts +238 -0
  739. package/src/tools/search-tool-bm25.ts +283 -0
  740. package/src/tools/ssh.ts +320 -0
  741. package/src/tools/submit-result.ts +226 -0
  742. package/src/tools/todo-write.ts +450 -0
  743. package/src/tools/tool-errors.ts +62 -0
  744. package/src/tools/tool-result.ts +86 -0
  745. package/src/tools/tool-timeouts.ts +30 -0
  746. package/src/tools/write.ts +479 -0
  747. package/src/tui/code-cell.ts +113 -0
  748. package/src/tui/file-list.ts +47 -0
  749. package/src/tui/index.ts +11 -0
  750. package/src/tui/output-block.ts +150 -0
  751. package/src/tui/status-line.ts +39 -0
  752. package/src/tui/tree-list.ts +84 -0
  753. package/src/tui/types.ts +15 -0
  754. package/src/tui/utils.ts +103 -0
  755. package/src/utils/changelog.ts +98 -0
  756. package/src/utils/clipboard.ts +80 -0
  757. package/src/utils/command-args.ts +76 -0
  758. package/src/utils/commit-message-generator.ts +136 -0
  759. package/src/utils/edit-mode.ts +49 -0
  760. package/src/utils/event-bus.ts +33 -0
  761. package/src/utils/external-editor.ts +65 -0
  762. package/src/utils/file-display-mode.ts +37 -0
  763. package/src/utils/file-mentions.ts +376 -0
  764. package/src/utils/fuzzy.ts +108 -0
  765. package/src/utils/git.ts +1400 -0
  766. package/src/utils/image-convert.ts +27 -0
  767. package/src/utils/image-loading.ts +98 -0
  768. package/src/utils/image-resize.ts +236 -0
  769. package/src/utils/markit.ts +81 -0
  770. package/src/utils/open.ts +20 -0
  771. package/src/utils/shell-snapshot.ts +188 -0
  772. package/src/utils/sixel.ts +69 -0
  773. package/src/utils/title-generator.ts +184 -0
  774. package/src/utils/tool-choice.ts +28 -0
  775. package/src/utils/tools-manager.ts +356 -0
  776. package/src/web/kagi.ts +174 -0
  777. package/src/web/parallel.ts +346 -0
  778. package/src/web/scrapers/artifacthub.ts +207 -0
  779. package/src/web/scrapers/arxiv.ts +83 -0
  780. package/src/web/scrapers/aur.ts +162 -0
  781. package/src/web/scrapers/biorxiv.ts +133 -0
  782. package/src/web/scrapers/bluesky.ts +262 -0
  783. package/src/web/scrapers/brew.ts +172 -0
  784. package/src/web/scrapers/cheatsh.ts +68 -0
  785. package/src/web/scrapers/chocolatey.ts +196 -0
  786. package/src/web/scrapers/choosealicense.ts +95 -0
  787. package/src/web/scrapers/cisa-kev.ts +87 -0
  788. package/src/web/scrapers/clojars.ts +154 -0
  789. package/src/web/scrapers/coingecko.ts +177 -0
  790. package/src/web/scrapers/crates-io.ts +110 -0
  791. package/src/web/scrapers/crossref.ts +136 -0
  792. package/src/web/scrapers/devto.ts +147 -0
  793. package/src/web/scrapers/discogs.ts +306 -0
  794. package/src/web/scrapers/discourse.ts +197 -0
  795. package/src/web/scrapers/dockerhub.ts +138 -0
  796. package/src/web/scrapers/docs-rs.ts +653 -0
  797. package/src/web/scrapers/fdroid.ts +134 -0
  798. package/src/web/scrapers/firefox-addons.ts +191 -0
  799. package/src/web/scrapers/flathub.ts +223 -0
  800. package/src/web/scrapers/github-gist.ts +58 -0
  801. package/src/web/scrapers/github.ts +452 -0
  802. package/src/web/scrapers/gitlab.ts +401 -0
  803. package/src/web/scrapers/go-pkg.ts +266 -0
  804. package/src/web/scrapers/hackage.ts +140 -0
  805. package/src/web/scrapers/hackernews.ts +189 -0
  806. package/src/web/scrapers/hex.ts +105 -0
  807. package/src/web/scrapers/huggingface.ts +321 -0
  808. package/src/web/scrapers/iacr.ts +89 -0
  809. package/src/web/scrapers/index.ts +252 -0
  810. package/src/web/scrapers/jetbrains-marketplace.ts +159 -0
  811. package/src/web/scrapers/lemmy.ts +203 -0
  812. package/src/web/scrapers/lobsters.ts +175 -0
  813. package/src/web/scrapers/mastodon.ts +292 -0
  814. package/src/web/scrapers/maven.ts +138 -0
  815. package/src/web/scrapers/mdn.ts +169 -0
  816. package/src/web/scrapers/metacpan.ts +222 -0
  817. package/src/web/scrapers/musicbrainz.ts +250 -0
  818. package/src/web/scrapers/npm.ts +98 -0
  819. package/src/web/scrapers/nuget.ts +183 -0
  820. package/src/web/scrapers/nvd.ts +222 -0
  821. package/src/web/scrapers/ollama.ts +239 -0
  822. package/src/web/scrapers/open-vsx.ts +106 -0
  823. package/src/web/scrapers/opencorporates.ts +292 -0
  824. package/src/web/scrapers/openlibrary.ts +336 -0
  825. package/src/web/scrapers/orcid.ts +286 -0
  826. package/src/web/scrapers/osv.ts +176 -0
  827. package/src/web/scrapers/packagist.ts +160 -0
  828. package/src/web/scrapers/pub-dev.ts +143 -0
  829. package/src/web/scrapers/pubmed.ts +211 -0
  830. package/src/web/scrapers/pypi.ts +112 -0
  831. package/src/web/scrapers/rawg.ts +110 -0
  832. package/src/web/scrapers/readthedocs.ts +120 -0
  833. package/src/web/scrapers/reddit.ts +95 -0
  834. package/src/web/scrapers/repology.ts +251 -0
  835. package/src/web/scrapers/rfc.ts +201 -0
  836. package/src/web/scrapers/rubygems.ts +103 -0
  837. package/src/web/scrapers/searchcode.ts +190 -0
  838. package/src/web/scrapers/sec-edgar.ts +261 -0
  839. package/src/web/scrapers/semantic-scholar.ts +171 -0
  840. package/src/web/scrapers/snapcraft.ts +187 -0
  841. package/src/web/scrapers/sourcegraph.ts +336 -0
  842. package/src/web/scrapers/spdx.ts +108 -0
  843. package/src/web/scrapers/spotify.ts +198 -0
  844. package/src/web/scrapers/stackoverflow.ts +120 -0
  845. package/src/web/scrapers/terraform.ts +277 -0
  846. package/src/web/scrapers/tldr.ts +47 -0
  847. package/src/web/scrapers/twitter.ts +93 -0
  848. package/src/web/scrapers/types.ts +267 -0
  849. package/src/web/scrapers/utils.ts +109 -0
  850. package/src/web/scrapers/vimeo.ts +133 -0
  851. package/src/web/scrapers/vscode-marketplace.ts +187 -0
  852. package/src/web/scrapers/w3c.ts +156 -0
  853. package/src/web/scrapers/wikidata.ts +344 -0
  854. package/src/web/scrapers/wikipedia.ts +84 -0
  855. package/src/web/scrapers/youtube.ts +313 -0
  856. package/src/web/search/index.ts +268 -0
  857. package/src/web/search/provider.ts +86 -0
  858. package/src/web/search/providers/anthropic.ts +286 -0
  859. package/src/web/search/providers/base.ts +25 -0
  860. package/src/web/search/providers/brave.ts +150 -0
  861. package/src/web/search/providers/codex.ts +383 -0
  862. package/src/web/search/providers/exa.ts +264 -0
  863. package/src/web/search/providers/gemini.ts +566 -0
  864. package/src/web/search/providers/jina.ts +99 -0
  865. package/src/web/search/providers/kagi.ts +70 -0
  866. package/src/web/search/providers/kimi.ts +157 -0
  867. package/src/web/search/providers/parallel.ts +63 -0
  868. package/src/web/search/providers/perplexity.ts +546 -0
  869. package/src/web/search/providers/synthetic.ts +113 -0
  870. package/src/web/search/providers/tavily.ts +162 -0
  871. package/src/web/search/providers/utils.ts +36 -0
  872. package/src/web/search/providers/zai.ts +311 -0
  873. package/src/web/search/render.ts +299 -0
  874. package/src/web/search/types.ts +434 -0
  875. package/src/web/search/utils.ts +17 -0
  876. package/dist/bun/cli.d.ts +0 -3
  877. package/dist/bun/cli.d.ts.map +0 -1
  878. package/dist/bun/cli.js +0 -7
  879. package/dist/bun/cli.js.map +0 -1
  880. package/dist/bun/register-bedrock.d.ts +0 -2
  881. package/dist/bun/register-bedrock.d.ts.map +0 -1
  882. package/dist/bun/register-bedrock.js +0 -4
  883. package/dist/bun/register-bedrock.js.map +0 -1
  884. package/dist/cli/args.d.ts +0 -52
  885. package/dist/cli/args.d.ts.map +0 -1
  886. package/dist/cli/args.js +0 -326
  887. package/dist/cli/args.js.map +0 -1
  888. package/dist/cli/config-selector.d.ts +0 -14
  889. package/dist/cli/config-selector.d.ts.map +0 -1
  890. package/dist/cli/config-selector.js +0 -31
  891. package/dist/cli/config-selector.js.map +0 -1
  892. package/dist/cli/file-processor.d.ts +0 -15
  893. package/dist/cli/file-processor.d.ts.map +0 -1
  894. package/dist/cli/file-processor.js +0 -83
  895. package/dist/cli/file-processor.js.map +0 -1
  896. package/dist/cli/initial-message.d.ts +0 -18
  897. package/dist/cli/initial-message.d.ts.map +0 -1
  898. package/dist/cli/initial-message.js +0 -22
  899. package/dist/cli/initial-message.js.map +0 -1
  900. package/dist/cli/list-models.d.ts +0 -9
  901. package/dist/cli/list-models.d.ts.map +0 -1
  902. package/dist/cli/list-models.js +0 -92
  903. package/dist/cli/list-models.js.map +0 -1
  904. package/dist/cli/session-picker.d.ts +0 -9
  905. package/dist/cli/session-picker.d.ts.map +0 -1
  906. package/dist/cli/session-picker.js +0 -35
  907. package/dist/cli/session-picker.js.map +0 -1
  908. package/dist/cli.d.ts +0 -3
  909. package/dist/cli.d.ts.map +0 -1
  910. package/dist/cli.js +0 -14
  911. package/dist/cli.js.map +0 -1
  912. package/dist/config.d.ts +0 -68
  913. package/dist/config.d.ts.map +0 -1
  914. package/dist/config.js +0 -203
  915. package/dist/config.js.map +0 -1
  916. package/dist/core/agent-session-runtime.d.ts +0 -83
  917. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  918. package/dist/core/agent-session-runtime.js +0 -236
  919. package/dist/core/agent-session-runtime.js.map +0 -1
  920. package/dist/core/agent-session-services.d.ts +0 -86
  921. package/dist/core/agent-session-services.d.ts.map +0 -1
  922. package/dist/core/agent-session-services.js +0 -116
  923. package/dist/core/agent-session-services.js.map +0 -1
  924. package/dist/core/agent-session.d.ts +0 -585
  925. package/dist/core/agent-session.d.ts.map +0 -1
  926. package/dist/core/agent-session.js +0 -2497
  927. package/dist/core/agent-session.js.map +0 -1
  928. package/dist/core/auth-storage.d.ts +0 -132
  929. package/dist/core/auth-storage.d.ts.map +0 -1
  930. package/dist/core/auth-storage.js +0 -422
  931. package/dist/core/auth-storage.js.map +0 -1
  932. package/dist/core/bash-executor.d.ts +0 -46
  933. package/dist/core/bash-executor.d.ts.map +0 -1
  934. package/dist/core/bash-executor.js +0 -125
  935. package/dist/core/bash-executor.js.map +0 -1
  936. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  937. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  938. package/dist/core/compaction/branch-summarization.js +0 -243
  939. package/dist/core/compaction/branch-summarization.js.map +0 -1
  940. package/dist/core/compaction/compaction.d.ts +0 -121
  941. package/dist/core/compaction/compaction.d.ts.map +0 -1
  942. package/dist/core/compaction/compaction.js +0 -613
  943. package/dist/core/compaction/compaction.js.map +0 -1
  944. package/dist/core/compaction/index.d.ts +0 -7
  945. package/dist/core/compaction/index.d.ts.map +0 -1
  946. package/dist/core/compaction/index.js +0 -7
  947. package/dist/core/compaction/index.js.map +0 -1
  948. package/dist/core/compaction/utils.d.ts +0 -38
  949. package/dist/core/compaction/utils.d.ts.map +0 -1
  950. package/dist/core/compaction/utils.js +0 -153
  951. package/dist/core/compaction/utils.js.map +0 -1
  952. package/dist/core/defaults.d.ts +0 -3
  953. package/dist/core/defaults.d.ts.map +0 -1
  954. package/dist/core/defaults.js +0 -2
  955. package/dist/core/defaults.js.map +0 -1
  956. package/dist/core/diagnostics.d.ts +0 -15
  957. package/dist/core/diagnostics.d.ts.map +0 -1
  958. package/dist/core/diagnostics.js +0 -2
  959. package/dist/core/diagnostics.js.map +0 -1
  960. package/dist/core/event-bus.d.ts +0 -9
  961. package/dist/core/event-bus.d.ts.map +0 -1
  962. package/dist/core/event-bus.js +0 -25
  963. package/dist/core/event-bus.js.map +0 -1
  964. package/dist/core/exec.d.ts +0 -29
  965. package/dist/core/exec.d.ts.map +0 -1
  966. package/dist/core/exec.js +0 -75
  967. package/dist/core/exec.js.map +0 -1
  968. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  969. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  970. package/dist/core/export-html/ansi-to-html.js +0 -249
  971. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  972. package/dist/core/export-html/index.d.ts +0 -37
  973. package/dist/core/export-html/index.d.ts.map +0 -1
  974. package/dist/core/export-html/index.js +0 -224
  975. package/dist/core/export-html/index.js.map +0 -1
  976. package/dist/core/export-html/template.css +0 -1001
  977. package/dist/core/export-html/template.html +0 -55
  978. package/dist/core/export-html/template.js +0 -1690
  979. package/dist/core/export-html/tool-renderer.d.ts +0 -40
  980. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  981. package/dist/core/export-html/tool-renderer.js +0 -95
  982. package/dist/core/export-html/tool-renderer.js.map +0 -1
  983. package/dist/core/extensions/index.d.ts +0 -12
  984. package/dist/core/extensions/index.d.ts.map +0 -1
  985. package/dist/core/extensions/index.js +0 -9
  986. package/dist/core/extensions/index.js.map +0 -1
  987. package/dist/core/extensions/loader.d.ts +0 -25
  988. package/dist/core/extensions/loader.d.ts.map +0 -1
  989. package/dist/core/extensions/loader.js +0 -436
  990. package/dist/core/extensions/loader.js.map +0 -1
  991. package/dist/core/extensions/runner.d.ts +0 -148
  992. package/dist/core/extensions/runner.d.ts.map +0 -1
  993. package/dist/core/extensions/runner.js +0 -700
  994. package/dist/core/extensions/runner.js.map +0 -1
  995. package/dist/core/extensions/types.d.ts +0 -1073
  996. package/dist/core/extensions/types.d.ts.map +0 -1
  997. package/dist/core/extensions/types.js +0 -45
  998. package/dist/core/extensions/types.js.map +0 -1
  999. package/dist/core/extensions/wrapper.d.ts +0 -20
  1000. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  1001. package/dist/core/extensions/wrapper.js +0 -22
  1002. package/dist/core/extensions/wrapper.js.map +0 -1
  1003. package/dist/core/footer-data-provider.d.ts +0 -48
  1004. package/dist/core/footer-data-provider.d.ts.map +0 -1
  1005. package/dist/core/footer-data-provider.js +0 -314
  1006. package/dist/core/footer-data-provider.js.map +0 -1
  1007. package/dist/core/index.d.ts +0 -12
  1008. package/dist/core/index.d.ts.map +0 -1
  1009. package/dist/core/index.js +0 -12
  1010. package/dist/core/index.js.map +0 -1
  1011. package/dist/core/keybindings.d.ts +0 -288
  1012. package/dist/core/keybindings.d.ts.map +0 -1
  1013. package/dist/core/keybindings.js +0 -240
  1014. package/dist/core/keybindings.js.map +0 -1
  1015. package/dist/core/messages.d.ts +0 -77
  1016. package/dist/core/messages.d.ts.map +0 -1
  1017. package/dist/core/messages.js +0 -123
  1018. package/dist/core/messages.js.map +0 -1
  1019. package/dist/core/model-registry.d.ts +0 -132
  1020. package/dist/core/model-registry.d.ts.map +0 -1
  1021. package/dist/core/model-registry.js +0 -583
  1022. package/dist/core/model-registry.js.map +0 -1
  1023. package/dist/core/model-resolver.d.ts +0 -110
  1024. package/dist/core/model-resolver.d.ts.map +0 -1
  1025. package/dist/core/model-resolver.js +0 -486
  1026. package/dist/core/model-resolver.js.map +0 -1
  1027. package/dist/core/output-guard.d.ts +0 -6
  1028. package/dist/core/output-guard.d.ts.map +0 -1
  1029. package/dist/core/output-guard.js +0 -59
  1030. package/dist/core/output-guard.js.map +0 -1
  1031. package/dist/core/package-manager.d.ts +0 -192
  1032. package/dist/core/package-manager.d.ts.map +0 -1
  1033. package/dist/core/package-manager.js +0 -1832
  1034. package/dist/core/package-manager.js.map +0 -1
  1035. package/dist/core/prompt-templates.d.ts +0 -51
  1036. package/dist/core/prompt-templates.d.ts.map +0 -1
  1037. package/dist/core/prompt-templates.js +0 -249
  1038. package/dist/core/prompt-templates.js.map +0 -1
  1039. package/dist/core/resolve-config-value.d.ts +0 -23
  1040. package/dist/core/resolve-config-value.d.ts.map +0 -1
  1041. package/dist/core/resolve-config-value.js +0 -126
  1042. package/dist/core/resolve-config-value.js.map +0 -1
  1043. package/dist/core/resource-loader.d.ts +0 -185
  1044. package/dist/core/resource-loader.d.ts.map +0 -1
  1045. package/dist/core/resource-loader.js +0 -720
  1046. package/dist/core/resource-loader.js.map +0 -1
  1047. package/dist/core/sdk.d.ts +0 -93
  1048. package/dist/core/sdk.d.ts.map +0 -1
  1049. package/dist/core/sdk.js +0 -236
  1050. package/dist/core/sdk.js.map +0 -1
  1051. package/dist/core/session-cwd.d.ts +0 -19
  1052. package/dist/core/session-cwd.d.ts.map +0 -1
  1053. package/dist/core/session-cwd.js +0 -38
  1054. package/dist/core/session-cwd.js.map +0 -1
  1055. package/dist/core/session-manager.d.ts +0 -333
  1056. package/dist/core/session-manager.d.ts.map +0 -1
  1057. package/dist/core/session-manager.js +0 -1105
  1058. package/dist/core/session-manager.js.map +0 -1
  1059. package/dist/core/settings-manager.d.ts +0 -237
  1060. package/dist/core/settings-manager.d.ts.map +0 -1
  1061. package/dist/core/settings-manager.js +0 -703
  1062. package/dist/core/settings-manager.js.map +0 -1
  1063. package/dist/core/skills.d.ts +0 -60
  1064. package/dist/core/skills.d.ts.map +0 -1
  1065. package/dist/core/skills.js +0 -409
  1066. package/dist/core/skills.js.map +0 -1
  1067. package/dist/core/slash-commands.d.ts +0 -14
  1068. package/dist/core/slash-commands.d.ts.map +0 -1
  1069. package/dist/core/slash-commands.js +0 -23
  1070. package/dist/core/slash-commands.js.map +0 -1
  1071. package/dist/core/source-info.d.ts +0 -18
  1072. package/dist/core/source-info.d.ts.map +0 -1
  1073. package/dist/core/source-info.js +0 -19
  1074. package/dist/core/source-info.js.map +0 -1
  1075. package/dist/core/system-prompt.d.ts +0 -28
  1076. package/dist/core/system-prompt.d.ts.map +0 -1
  1077. package/dist/core/system-prompt.js +0 -116
  1078. package/dist/core/system-prompt.js.map +0 -1
  1079. package/dist/core/timings.d.ts +0 -8
  1080. package/dist/core/timings.d.ts.map +0 -1
  1081. package/dist/core/timings.js +0 -31
  1082. package/dist/core/timings.js.map +0 -1
  1083. package/dist/core/tools/bash.d.ts +0 -73
  1084. package/dist/core/tools/bash.d.ts.map +0 -1
  1085. package/dist/core/tools/bash.js +0 -352
  1086. package/dist/core/tools/bash.js.map +0 -1
  1087. package/dist/core/tools/edit-diff.d.ts +0 -85
  1088. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  1089. package/dist/core/tools/edit-diff.js +0 -337
  1090. package/dist/core/tools/edit-diff.js.map +0 -1
  1091. package/dist/core/tools/edit.d.ts +0 -53
  1092. package/dist/core/tools/edit.d.ts.map +0 -1
  1093. package/dist/core/tools/edit.js +0 -196
  1094. package/dist/core/tools/edit.js.map +0 -1
  1095. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  1096. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  1097. package/dist/core/tools/file-mutation-queue.js +0 -37
  1098. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  1099. package/dist/core/tools/find.d.ts +0 -46
  1100. package/dist/core/tools/find.d.ts.map +0 -1
  1101. package/dist/core/tools/find.js +0 -258
  1102. package/dist/core/tools/find.js.map +0 -1
  1103. package/dist/core/tools/grep.d.ts +0 -56
  1104. package/dist/core/tools/grep.d.ts.map +0 -1
  1105. package/dist/core/tools/grep.js +0 -293
  1106. package/dist/core/tools/grep.js.map +0 -1
  1107. package/dist/core/tools/index.d.ts +0 -115
  1108. package/dist/core/tools/index.d.ts.map +0 -1
  1109. package/dist/core/tools/index.js +0 -86
  1110. package/dist/core/tools/index.js.map +0 -1
  1111. package/dist/core/tools/ls.d.ts +0 -46
  1112. package/dist/core/tools/ls.d.ts.map +0 -1
  1113. package/dist/core/tools/ls.js +0 -172
  1114. package/dist/core/tools/ls.js.map +0 -1
  1115. package/dist/core/tools/path-utils.d.ts +0 -8
  1116. package/dist/core/tools/path-utils.d.ts.map +0 -1
  1117. package/dist/core/tools/path-utils.js +0 -81
  1118. package/dist/core/tools/path-utils.js.map +0 -1
  1119. package/dist/core/tools/read.d.ts +0 -46
  1120. package/dist/core/tools/read.d.ts.map +0 -1
  1121. package/dist/core/tools/read.js +0 -225
  1122. package/dist/core/tools/read.js.map +0 -1
  1123. package/dist/core/tools/render-utils.d.ts +0 -21
  1124. package/dist/core/tools/render-utils.d.ts.map +0 -1
  1125. package/dist/core/tools/render-utils.js +0 -49
  1126. package/dist/core/tools/render-utils.js.map +0 -1
  1127. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  1128. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  1129. package/dist/core/tools/tool-definition-wrapper.js +0 -32
  1130. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  1131. package/dist/core/tools/truncate.d.ts +0 -70
  1132. package/dist/core/tools/truncate.d.ts.map +0 -1
  1133. package/dist/core/tools/truncate.js +0 -205
  1134. package/dist/core/tools/truncate.js.map +0 -1
  1135. package/dist/core/tools/write.d.ts +0 -35
  1136. package/dist/core/tools/write.d.ts.map +0 -1
  1137. package/dist/core/tools/write.js +0 -216
  1138. package/dist/core/tools/write.js.map +0 -1
  1139. package/dist/index.d.ts +0 -28
  1140. package/dist/index.d.ts.map +0 -1
  1141. package/dist/index.js +0 -43
  1142. package/dist/index.js.map +0 -1
  1143. package/dist/main.d.ts +0 -8
  1144. package/dist/main.d.ts.map +0 -1
  1145. package/dist/main.js +0 -593
  1146. package/dist/main.js.map +0 -1
  1147. package/dist/migrations.d.ts +0 -33
  1148. package/dist/migrations.d.ts.map +0 -1
  1149. package/dist/migrations.js +0 -281
  1150. package/dist/migrations.js.map +0 -1
  1151. package/dist/modes/index.d.ts +0 -9
  1152. package/dist/modes/index.d.ts.map +0 -1
  1153. package/dist/modes/index.js +0 -8
  1154. package/dist/modes/index.js.map +0 -1
  1155. package/dist/modes/interactive/components/armin.d.ts +0 -34
  1156. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  1157. package/dist/modes/interactive/components/armin.js +0 -333
  1158. package/dist/modes/interactive/components/armin.js.map +0 -1
  1159. package/dist/modes/interactive/components/assistant-message.d.ts +0 -18
  1160. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  1161. package/dist/modes/interactive/components/assistant-message.js +0 -107
  1162. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  1163. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  1164. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  1165. package/dist/modes/interactive/components/bash-execution.js +0 -175
  1166. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  1167. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  1168. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  1169. package/dist/modes/interactive/components/bordered-loader.js +0 -51
  1170. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  1171. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  1172. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  1173. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  1174. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  1175. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  1176. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  1177. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  1178. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  1179. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  1180. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  1181. package/dist/modes/interactive/components/config-selector.js +0 -479
  1182. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  1183. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  1184. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  1185. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  1186. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  1187. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  1188. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  1189. package/dist/modes/interactive/components/custom-editor.js +0 -70
  1190. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  1191. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  1192. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  1193. package/dist/modes/interactive/components/custom-message.js +0 -79
  1194. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  1195. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  1196. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  1197. package/dist/modes/interactive/components/daxnuts.js +0 -140
  1198. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  1199. package/dist/modes/interactive/components/diff.d.ts +0 -12
  1200. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  1201. package/dist/modes/interactive/components/diff.js +0 -133
  1202. package/dist/modes/interactive/components/diff.js.map +0 -1
  1203. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  1204. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  1205. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  1206. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  1207. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  1208. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  1209. package/dist/modes/interactive/components/extension-editor.js +0 -111
  1210. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  1211. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  1212. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  1213. package/dist/modes/interactive/components/extension-input.js +0 -61
  1214. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  1215. package/dist/modes/interactive/components/extension-selector.d.ts +0 -24
  1216. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  1217. package/dist/modes/interactive/components/extension-selector.js +0 -78
  1218. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  1219. package/dist/modes/interactive/components/footer.d.ts +0 -27
  1220. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  1221. package/dist/modes/interactive/components/footer.js +0 -201
  1222. package/dist/modes/interactive/components/footer.js.map +0 -1
  1223. package/dist/modes/interactive/components/index.d.ts +0 -32
  1224. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  1225. package/dist/modes/interactive/components/index.js +0 -33
  1226. package/dist/modes/interactive/components/index.js.map +0 -1
  1227. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -8
  1228. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  1229. package/dist/modes/interactive/components/keybinding-hints.js +0 -22
  1230. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  1231. package/dist/modes/interactive/components/login-dialog.d.ts +0 -42
  1232. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  1233. package/dist/modes/interactive/components/login-dialog.js +0 -145
  1234. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  1235. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  1236. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  1237. package/dist/modes/interactive/components/model-selector.js +0 -275
  1238. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  1239. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  1240. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  1241. package/dist/modes/interactive/components/oauth-selector.js +0 -97
  1242. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  1243. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -49
  1244. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  1245. package/dist/modes/interactive/components/scoped-models-selector.js +0 -275
  1246. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  1247. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  1248. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  1249. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  1250. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  1251. package/dist/modes/interactive/components/session-selector.d.ts +0 -95
  1252. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  1253. package/dist/modes/interactive/components/session-selector.js +0 -848
  1254. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  1255. package/dist/modes/interactive/components/settings-selector.d.ts +0 -58
  1256. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  1257. package/dist/modes/interactive/components/settings-selector.js +0 -301
  1258. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  1259. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  1260. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  1261. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  1262. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  1263. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  1264. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  1265. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  1266. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  1267. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  1268. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  1269. package/dist/modes/interactive/components/theme-selector.js +0 -50
  1270. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  1271. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  1272. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  1273. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  1274. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  1275. package/dist/modes/interactive/components/tool-execution.d.ts +0 -58
  1276. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  1277. package/dist/modes/interactive/components/tool-execution.js +0 -274
  1278. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  1279. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  1280. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  1281. package/dist/modes/interactive/components/tree-selector.js +0 -1084
  1282. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  1283. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  1284. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  1285. package/dist/modes/interactive/components/user-message-selector.js +0 -113
  1286. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  1287. package/dist/modes/interactive/components/user-message.d.ts +0 -9
  1288. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  1289. package/dist/modes/interactive/components/user-message.js +0 -28
  1290. package/dist/modes/interactive/components/user-message.js.map +0 -1
  1291. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  1292. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  1293. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  1294. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  1295. package/dist/modes/interactive/interactive-mode.d.ts +0 -320
  1296. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  1297. package/dist/modes/interactive/interactive-mode.js +0 -3970
  1298. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  1299. package/dist/modes/interactive/theme/dark.json +0 -85
  1300. package/dist/modes/interactive/theme/light.json +0 -84
  1301. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  1302. package/dist/modes/interactive/theme/theme.d.ts +0 -81
  1303. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  1304. package/dist/modes/interactive/theme/theme.js +0 -979
  1305. package/dist/modes/interactive/theme/theme.js.map +0 -1
  1306. package/dist/modes/print-mode.d.ts +0 -28
  1307. package/dist/modes/print-mode.d.ts.map +0 -1
  1308. package/dist/modes/print-mode.js +0 -112
  1309. package/dist/modes/print-mode.js.map +0 -1
  1310. package/dist/modes/rpc/jsonl.d.ts +0 -17
  1311. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  1312. package/dist/modes/rpc/jsonl.js +0 -49
  1313. package/dist/modes/rpc/jsonl.js.map +0 -1
  1314. package/dist/modes/rpc/rpc-client.d.ts +0 -217
  1315. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  1316. package/dist/modes/rpc/rpc-client.js +0 -402
  1317. package/dist/modes/rpc/rpc-client.js.map +0 -1
  1318. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  1319. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  1320. package/dist/modes/rpc/rpc-mode.js +0 -550
  1321. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  1322. package/dist/modes/rpc/rpc-types.d.ts +0 -408
  1323. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  1324. package/dist/modes/rpc/rpc-types.js +0 -8
  1325. package/dist/modes/rpc/rpc-types.js.map +0 -1
  1326. package/dist/package-manager-cli.d.ts +0 -4
  1327. package/dist/package-manager-cli.d.ts.map +0 -1
  1328. package/dist/package-manager-cli.js +0 -234
  1329. package/dist/package-manager-cli.js.map +0 -1
  1330. package/dist/utils/changelog.d.ts +0 -21
  1331. package/dist/utils/changelog.d.ts.map +0 -1
  1332. package/dist/utils/changelog.js +0 -87
  1333. package/dist/utils/changelog.js.map +0 -1
  1334. package/dist/utils/child-process.d.ts +0 -11
  1335. package/dist/utils/child-process.d.ts.map +0 -1
  1336. package/dist/utils/child-process.js +0 -78
  1337. package/dist/utils/child-process.js.map +0 -1
  1338. package/dist/utils/clipboard-image.d.ts +0 -11
  1339. package/dist/utils/clipboard-image.d.ts.map +0 -1
  1340. package/dist/utils/clipboard-image.js +0 -245
  1341. package/dist/utils/clipboard-image.js.map +0 -1
  1342. package/dist/utils/clipboard-native.d.ts +0 -8
  1343. package/dist/utils/clipboard-native.d.ts.map +0 -1
  1344. package/dist/utils/clipboard-native.js +0 -14
  1345. package/dist/utils/clipboard-native.js.map +0 -1
  1346. package/dist/utils/clipboard.d.ts +0 -2
  1347. package/dist/utils/clipboard.d.ts.map +0 -1
  1348. package/dist/utils/clipboard.js +0 -78
  1349. package/dist/utils/clipboard.js.map +0 -1
  1350. package/dist/utils/exif-orientation.d.ts +0 -5
  1351. package/dist/utils/exif-orientation.d.ts.map +0 -1
  1352. package/dist/utils/exif-orientation.js +0 -158
  1353. package/dist/utils/exif-orientation.js.map +0 -1
  1354. package/dist/utils/frontmatter.d.ts +0 -8
  1355. package/dist/utils/frontmatter.d.ts.map +0 -1
  1356. package/dist/utils/frontmatter.js +0 -26
  1357. package/dist/utils/frontmatter.js.map +0 -1
  1358. package/dist/utils/git.d.ts +0 -26
  1359. package/dist/utils/git.d.ts.map +0 -1
  1360. package/dist/utils/git.js +0 -163
  1361. package/dist/utils/git.js.map +0 -1
  1362. package/dist/utils/image-convert.d.ts +0 -9
  1363. package/dist/utils/image-convert.d.ts.map +0 -1
  1364. package/dist/utils/image-convert.js +0 -39
  1365. package/dist/utils/image-convert.js.map +0 -1
  1366. package/dist/utils/image-resize.d.ts +0 -36
  1367. package/dist/utils/image-resize.d.ts.map +0 -1
  1368. package/dist/utils/image-resize.js +0 -137
  1369. package/dist/utils/image-resize.js.map +0 -1
  1370. package/dist/utils/mime.d.ts +0 -2
  1371. package/dist/utils/mime.d.ts.map +0 -1
  1372. package/dist/utils/mime.js +0 -26
  1373. package/dist/utils/mime.js.map +0 -1
  1374. package/dist/utils/paths.d.ts +0 -7
  1375. package/dist/utils/paths.d.ts.map +0 -1
  1376. package/dist/utils/paths.js +0 -19
  1377. package/dist/utils/paths.js.map +0 -1
  1378. package/dist/utils/photon.d.ts +0 -21
  1379. package/dist/utils/photon.d.ts.map +0 -1
  1380. package/dist/utils/photon.js +0 -121
  1381. package/dist/utils/photon.js.map +0 -1
  1382. package/dist/utils/shell.d.ts +0 -26
  1383. package/dist/utils/shell.d.ts.map +0 -1
  1384. package/dist/utils/shell.js +0 -186
  1385. package/dist/utils/shell.js.map +0 -1
  1386. package/dist/utils/sleep.d.ts +0 -5
  1387. package/dist/utils/sleep.d.ts.map +0 -1
  1388. package/dist/utils/sleep.js +0 -17
  1389. package/dist/utils/sleep.js.map +0 -1
  1390. package/dist/utils/tools-manager.d.ts +0 -3
  1391. package/dist/utils/tools-manager.d.ts.map +0 -1
  1392. package/dist/utils/tools-manager.js +0 -252
  1393. package/dist/utils/tools-manager.js.map +0 -1
  1394. package/docs/compaction.md +0 -398
  1395. package/docs/custom-provider.md +0 -597
  1396. package/docs/development.md +0 -72
  1397. package/docs/extensions.md +0 -2288
  1398. package/docs/images/doom-extension.png +0 -0
  1399. package/docs/images/exy.png +0 -0
  1400. package/docs/images/interactive-mode.png +0 -0
  1401. package/docs/images/tree-view.png +0 -0
  1402. package/docs/json.md +0 -84
  1403. package/docs/keybindings.md +0 -175
  1404. package/docs/models.md +0 -349
  1405. package/docs/packages.md +0 -219
  1406. package/docs/prompt-templates.md +0 -67
  1407. package/docs/providers.md +0 -200
  1408. package/docs/rpc.md +0 -1425
  1409. package/docs/sdk.md +0 -1136
  1410. package/docs/session.md +0 -423
  1411. package/docs/settings.md +0 -246
  1412. package/docs/shell-aliases.md +0 -13
  1413. package/docs/skills.md +0 -236
  1414. package/docs/terminal-setup.md +0 -108
  1415. package/docs/termux.md +0 -137
  1416. package/docs/themes.md +0 -296
  1417. package/docs/tmux.md +0 -61
  1418. package/docs/tree.md +0 -239
  1419. package/docs/tui.md +0 -890
  1420. package/docs/windows.md +0 -17
  1421. package/examples/extensions/antigravity-image-gen.ts +0 -418
  1422. package/examples/extensions/auto-commit-on-exit.ts +0 -49
  1423. package/examples/extensions/bash-spawn-hook.ts +0 -30
  1424. package/examples/extensions/bookmark.ts +0 -50
  1425. package/examples/extensions/built-in-tool-renderer.ts +0 -246
  1426. package/examples/extensions/claude-rules.ts +0 -86
  1427. package/examples/extensions/commands.ts +0 -72
  1428. package/examples/extensions/confirm-destructive.ts +0 -59
  1429. package/examples/extensions/custom-compaction.ts +0 -127
  1430. package/examples/extensions/custom-footer.ts +0 -64
  1431. package/examples/extensions/custom-header.ts +0 -73
  1432. package/examples/extensions/custom-provider-anthropic/index.ts +0 -604
  1433. package/examples/extensions/custom-provider-anthropic/package-lock.json +0 -24
  1434. package/examples/extensions/custom-provider-anthropic/package.json +0 -19
  1435. package/examples/extensions/custom-provider-gitlab-duo/index.ts +0 -349
  1436. package/examples/extensions/custom-provider-gitlab-duo/package.json +0 -16
  1437. package/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -82
  1438. package/examples/extensions/custom-provider-qwen-cli/index.ts +0 -345
  1439. package/examples/extensions/custom-provider-qwen-cli/package.json +0 -16
  1440. package/examples/extensions/dirty-repo-guard.ts +0 -56
  1441. package/examples/extensions/doom-overlay/README.md +0 -48
  1442. package/examples/extensions/doom-overlay/doom/build/doom.js +0 -21
  1443. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  1444. package/examples/extensions/doom-overlay/doom/build.sh +0 -152
  1445. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  1446. package/examples/extensions/doom-overlay/doom-component.ts +0 -132
  1447. package/examples/extensions/doom-overlay/doom-engine.ts +0 -173
  1448. package/examples/extensions/doom-overlay/doom-keys.ts +0 -104
  1449. package/examples/extensions/doom-overlay/index.ts +0 -74
  1450. package/examples/extensions/doom-overlay/wad-finder.ts +0 -51
  1451. package/examples/extensions/dynamic-resources/SKILL.md +0 -8
  1452. package/examples/extensions/dynamic-resources/dynamic.json +0 -79
  1453. package/examples/extensions/dynamic-resources/dynamic.md +0 -5
  1454. package/examples/extensions/dynamic-resources/index.ts +0 -15
  1455. package/examples/extensions/dynamic-tools.ts +0 -74
  1456. package/examples/extensions/event-bus.ts +0 -43
  1457. package/examples/extensions/file-trigger.ts +0 -41
  1458. package/examples/extensions/git-checkpoint.ts +0 -53
  1459. package/examples/extensions/handoff.ts +0 -153
  1460. package/examples/extensions/hidden-thinking-label.ts +0 -53
  1461. package/examples/extensions/inline-bash.ts +0 -94
  1462. package/examples/extensions/input-transform.ts +0 -43
  1463. package/examples/extensions/interactive-shell.ts +0 -196
  1464. package/examples/extensions/mac-system-theme.ts +0 -47
  1465. package/examples/extensions/message-renderer.ts +0 -59
  1466. package/examples/extensions/minimal-mode.ts +0 -426
  1467. package/examples/extensions/modal-editor.ts +0 -85
  1468. package/examples/extensions/model-status.ts +0 -31
  1469. package/examples/extensions/notify.ts +0 -55
  1470. package/examples/extensions/overlay-qa-tests.ts +0 -1348
  1471. package/examples/extensions/overlay-test.ts +0 -150
  1472. package/examples/extensions/permission-gate.ts +0 -34
  1473. package/examples/extensions/plan-mode/README.md +0 -69
  1474. package/examples/extensions/plan-mode/index.ts +0 -340
  1475. package/examples/extensions/plan-mode/utils.ts +0 -168
  1476. package/examples/extensions/preset.ts +0 -403
  1477. package/examples/extensions/protected-paths.ts +0 -30
  1478. package/examples/extensions/provider-payload.ts +0 -14
  1479. package/examples/extensions/qna.ts +0 -122
  1480. package/examples/extensions/question.ts +0 -264
  1481. package/examples/extensions/questionnaire.ts +0 -427
  1482. package/examples/extensions/rainbow-editor.ts +0 -88
  1483. package/examples/extensions/rpc-demo.ts +0 -118
  1484. package/examples/extensions/sandbox/index.ts +0 -321
  1485. package/examples/extensions/sandbox/package-lock.json +0 -92
  1486. package/examples/extensions/sandbox/package.json +0 -19
  1487. package/examples/extensions/send-user-message.ts +0 -97
  1488. package/examples/extensions/session-name.ts +0 -27
  1489. package/examples/extensions/shutdown-command.ts +0 -63
  1490. package/examples/extensions/snake.ts +0 -343
  1491. package/examples/extensions/space-invaders.ts +0 -560
  1492. package/examples/extensions/ssh.ts +0 -220
  1493. package/examples/extensions/status-line.ts +0 -32
  1494. package/examples/extensions/subagent/README.md +0 -181
  1495. package/examples/extensions/subagent/agents/planner.md +0 -37
  1496. package/examples/extensions/subagent/agents/reviewer.md +0 -35
  1497. package/examples/extensions/subagent/agents/scout.md +0 -50
  1498. package/examples/extensions/subagent/agents/worker.md +0 -24
  1499. package/examples/extensions/subagent/agents.ts +0 -126
  1500. package/examples/extensions/subagent/index.ts +0 -986
  1501. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -10
  1502. package/examples/extensions/subagent/prompts/implement.md +0 -10
  1503. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -9
  1504. package/examples/extensions/summarize.ts +0 -206
  1505. package/examples/extensions/system-prompt-header.ts +0 -17
  1506. package/examples/extensions/timed-confirm.ts +0 -70
  1507. package/examples/extensions/titlebar-spinner.ts +0 -58
  1508. package/examples/extensions/tool-override.ts +0 -144
  1509. package/examples/extensions/trigger-compact.ts +0 -50
  1510. package/examples/extensions/truncated-tool.ts +0 -195
  1511. package/examples/extensions/widget-placement.ts +0 -9
  1512. package/examples/rpc-extension-ui.ts +0 -640
  1513. package/examples/sdk/05-tools.ts +0 -56
  1514. package/examples/sdk/10-settings.ts +0 -51
  1515. package/examples/sdk/12-full-control.ts +0 -81
  1516. package/examples/sdk/13-session-runtime.ts +0 -67
  1517. /package/{dist/core/export-html → src/export/html}/vendor/highlight.min.js +0 -0
  1518. /package/{dist/core/export-html → src/export/html}/vendor/marked.min.js +0 -0
@@ -0,0 +1,1929 @@
1
+ import { THINKING_EFFORTS } from "@f5xc-salesdemos/pi-ai";
2
+
3
+ /** Unified settings schema - single source of truth for all settings.
4
+ * Unified settings schema - single source of truth for all settings.
5
+ *
6
+ * Each setting is defined once here with:
7
+ * - Type and default value
8
+ * - Optional UI metadata (label, description, tab)
9
+ *
10
+ * The Settings singleton provides type-safe path-based access:
11
+ * settings.get("compaction.enabled") // => boolean
12
+ * settings.set("theme.dark", "titanium") // sync, saves in background
13
+ */
14
+
15
+ // ═══════════════════════════════════════════════════════════════════════════
16
+ // Schema Definition Types
17
+ // ═══════════════════════════════════════════════════════════════════════════
18
+
19
+ export type SettingTab =
20
+ | "appearance"
21
+ | "model"
22
+ | "interaction"
23
+ | "context"
24
+ | "editing"
25
+ | "tools"
26
+ | "tasks"
27
+ | "providers";
28
+
29
+ /** Tab display metadata - icon is resolved via theme.symbol() */
30
+ export type TabMetadata = { label: string; icon: `tab.${string}` };
31
+
32
+ /** Ordered list of tabs for UI rendering */
33
+ export const SETTING_TABS: SettingTab[] = [
34
+ "appearance",
35
+ "model",
36
+ "interaction",
37
+ "context",
38
+ "editing",
39
+ "tools",
40
+ "tasks",
41
+ "providers",
42
+ ];
43
+
44
+ /** Tab display metadata - icon is a symbol key from theme.ts (tab.*) */
45
+ export const TAB_METADATA: Record<SettingTab, { label: string; icon: `tab.${string}` }> = {
46
+ appearance: { label: "Appearance", icon: "tab.appearance" },
47
+ model: { label: "Model", icon: "tab.model" },
48
+ interaction: { label: "Interaction", icon: "tab.interaction" },
49
+ context: { label: "Context", icon: "tab.context" },
50
+ editing: { label: "Editing", icon: "tab.editing" },
51
+ tools: { label: "Tools", icon: "tab.tools" },
52
+ tasks: { label: "Tasks", icon: "tab.tasks" },
53
+ providers: { label: "Providers", icon: "tab.providers" },
54
+ };
55
+
56
+ /** Status line segment identifiers */
57
+ export type StatusLineSegmentId =
58
+ | "pi"
59
+ | "model"
60
+ | "plan_mode"
61
+ | "path"
62
+ | "git"
63
+ | "pr"
64
+ | "subagents"
65
+ | "token_in"
66
+ | "token_out"
67
+ | "token_total"
68
+ | "token_rate"
69
+ | "cost"
70
+ | "context_pct"
71
+ | "context_total"
72
+ | "time_spent"
73
+ | "time"
74
+ | "session"
75
+ | "hostname"
76
+ | "cache_read"
77
+ | "cache_write";
78
+
79
+ interface UiMetadata {
80
+ tab: SettingTab;
81
+ label: string;
82
+ description: string;
83
+ /** For enum/submenu - display as inline toggle vs dropdown */
84
+ submenu?: boolean;
85
+ /** Condition function name - setting only shown when true */
86
+ condition?: string;
87
+ }
88
+
89
+ interface BooleanDef {
90
+ type: "boolean";
91
+ default: boolean;
92
+ ui?: UiMetadata;
93
+ }
94
+
95
+ interface StringDef {
96
+ type: "string";
97
+ default: string | undefined;
98
+ ui?: UiMetadata;
99
+ }
100
+
101
+ interface NumberDef {
102
+ type: "number";
103
+ default: number;
104
+ ui?: UiMetadata;
105
+ }
106
+
107
+ interface EnumDef<T extends readonly string[]> {
108
+ type: "enum";
109
+ values: T;
110
+ default: T[number];
111
+ ui?: UiMetadata;
112
+ }
113
+
114
+ interface ArrayDef<T> {
115
+ type: "array";
116
+ default: T[];
117
+ ui?: UiMetadata;
118
+ }
119
+
120
+ interface RecordDef<T> {
121
+ type: "record";
122
+ default: Record<string, T>;
123
+ ui?: UiMetadata;
124
+ }
125
+
126
+ type SettingDef =
127
+ | BooleanDef
128
+ | StringDef
129
+ | NumberDef
130
+ | EnumDef<readonly string[]>
131
+ | ArrayDef<unknown>
132
+ | RecordDef<unknown>;
133
+
134
+ // ═══════════════════════════════════════════════════════════════════════════
135
+ // Schema Definition
136
+ // ═══════════════════════════════════════════════════════════════════════════
137
+
138
+ export interface ModelTagDef {
139
+ name: string;
140
+ color?: string;
141
+ }
142
+
143
+ export interface ModelTagsSettings {
144
+ [key: string]: ModelTagDef;
145
+ }
146
+
147
+ // Typed defaults for array/record settings — named constants avoid `as` casts
148
+ // under `as const` while still letting SettingValue infer the correct element type.
149
+ const EMPTY_STRING_ARRAY: string[] = [];
150
+ const EMPTY_STRING_RECORD: Record<string, string> = {};
151
+ const DEFAULT_CYCLE_ORDER: string[] = ["smol", "default", "slow"];
152
+ const EMPTY_MODEL_TAGS_RECORD: ModelTagsSettings = {};
153
+ export const DEFAULT_BASH_INTERCEPTOR_RULES: BashInterceptorRule[] = [
154
+ {
155
+ pattern: "^\\s*(cat|head|tail|less|more)\\s+",
156
+ tool: "read",
157
+ message: "Use the `read` tool instead of cat/head/tail. It provides better context and handles binary files.",
158
+ },
159
+ {
160
+ pattern: "^\\s*(grep|rg|ripgrep|ag|ack)\\s+",
161
+ tool: "grep",
162
+ message: "Use the `grep` tool instead of grep/rg. It respects .gitignore and provides structured output.",
163
+ },
164
+ {
165
+ pattern: "^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)",
166
+ tool: "find",
167
+ message: "Use the `find` tool instead of find/fd. It respects .gitignore and is faster for glob patterns.",
168
+ },
169
+ {
170
+ pattern: "^\\s*sed\\s+(-i|--in-place)",
171
+ tool: "edit",
172
+ message: "Use the `edit` tool instead of sed -i. It provides diff preview and fuzzy matching.",
173
+ },
174
+ {
175
+ pattern: "^\\s*perl\\s+.*-[pn]?i",
176
+ tool: "edit",
177
+ message: "Use the `edit` tool instead of perl -i. It provides diff preview and fuzzy matching.",
178
+ },
179
+ {
180
+ pattern: "^\\s*awk\\s+.*-i\\s+inplace",
181
+ tool: "edit",
182
+ message: "Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching.",
183
+ },
184
+ {
185
+ pattern: "^\\s*(echo|printf|cat\\s*<<)\\s+.*[^|]>\\s*\\S",
186
+ tool: "write",
187
+ message: "Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation.",
188
+ },
189
+ ];
190
+
191
+ export const SETTINGS_SCHEMA = {
192
+ // ────────────────────────────────────────────────────────────────────────
193
+ // General settings (no UI)
194
+ // ────────────────────────────────────────────────────────────────────────
195
+ lastChangelogVersion: { type: "string", default: undefined },
196
+
197
+ autoResume: {
198
+ type: "boolean",
199
+ default: false,
200
+ ui: {
201
+ tab: "interaction",
202
+ label: "Auto Resume",
203
+ description: "Automatically resume the most recent session in the current directory",
204
+ },
205
+ },
206
+ shellPath: { type: "string", default: undefined },
207
+
208
+ extensions: { type: "array", default: EMPTY_STRING_ARRAY },
209
+
210
+ "marketplace.autoUpdate": {
211
+ type: "enum",
212
+ values: ["off", "notify", "auto"] as const,
213
+ default: "notify",
214
+ ui: {
215
+ tab: "tools",
216
+ label: "Marketplace Auto-Update",
217
+ description: "Check for plugin updates on startup (off/notify/auto)",
218
+ submenu: true,
219
+ },
220
+ },
221
+
222
+ enabledModels: { type: "array", default: EMPTY_STRING_ARRAY },
223
+
224
+ disabledProviders: { type: "array", default: EMPTY_STRING_ARRAY },
225
+
226
+ disabledExtensions: { type: "array", default: EMPTY_STRING_ARRAY },
227
+
228
+ modelRoles: { type: "record", default: EMPTY_STRING_RECORD },
229
+
230
+ modelTags: { type: "record", default: EMPTY_MODEL_TAGS_RECORD },
231
+
232
+ cycleOrder: { type: "array", default: DEFAULT_CYCLE_ORDER },
233
+
234
+ // ────────────────────────────────────────────────────────────────────────
235
+ // Appearance
236
+ // ────────────────────────────────────────────────────────────────────────
237
+
238
+ // Theme
239
+ "theme.dark": {
240
+ type: "string",
241
+ default: "xcsh-dark",
242
+ ui: {
243
+ tab: "appearance",
244
+ label: "Dark Theme",
245
+ description: "Theme used when terminal has dark background",
246
+ submenu: true,
247
+ },
248
+ },
249
+
250
+ "theme.light": {
251
+ type: "string",
252
+ default: "xcsh-light",
253
+ ui: {
254
+ tab: "appearance",
255
+ label: "Light Theme",
256
+ description: "Theme used when terminal has light background",
257
+ submenu: true,
258
+ },
259
+ },
260
+
261
+ symbolPreset: {
262
+ type: "enum",
263
+ values: ["unicode", "nerd", "ascii"] as const,
264
+ default: "unicode",
265
+ ui: { tab: "appearance", label: "Symbol Preset", description: "Icon/symbol style", submenu: true },
266
+ },
267
+
268
+ colorBlindMode: {
269
+ type: "boolean",
270
+ default: false,
271
+ ui: {
272
+ tab: "appearance",
273
+ label: "Color-Blind Mode",
274
+ description: "Use blue instead of green for diff additions",
275
+ },
276
+ },
277
+
278
+ // Status line
279
+ "statusLine.preset": {
280
+ type: "enum",
281
+ values: ["default", "minimal", "compact", "full", "nerd", "ascii", "custom"] as const,
282
+ default: "default",
283
+ ui: {
284
+ tab: "appearance",
285
+ label: "Status Line Preset",
286
+ description: "Pre-built status line configurations",
287
+ submenu: true,
288
+ },
289
+ },
290
+
291
+ "statusLine.separator": {
292
+ type: "enum",
293
+ values: ["powerline", "powerline-thin", "slash", "pipe", "block", "none", "ascii"] as const,
294
+ default: "powerline-thin",
295
+ ui: {
296
+ tab: "appearance",
297
+ label: "Status Line Separator",
298
+ description: "Style of separators between segments",
299
+ submenu: true,
300
+ },
301
+ },
302
+ "tools.artifactSpillThreshold": {
303
+ type: "number",
304
+ default: 50,
305
+ ui: {
306
+ tab: "tools",
307
+ label: "Artifact spill threshold (KB)",
308
+ description: "Tool output above this size is saved as an artifact; tail is kept inline",
309
+ submenu: true,
310
+ },
311
+ },
312
+ "tools.artifactTailBytes": {
313
+ type: "number",
314
+ default: 20,
315
+ ui: {
316
+ tab: "tools",
317
+ label: "Artifact tail size (KB)",
318
+ description: "Amount of tail content kept inline when output spills to artifact",
319
+ submenu: true,
320
+ },
321
+ },
322
+ "tools.artifactTailLines": {
323
+ type: "number",
324
+ default: 500,
325
+ ui: {
326
+ tab: "tools",
327
+ label: "Artifact tail lines",
328
+ description: "Maximum lines of tail content kept inline when output spills to artifact",
329
+ submenu: true,
330
+ },
331
+ },
332
+
333
+ "statusLine.showHookStatus": {
334
+ type: "boolean",
335
+ default: true,
336
+ ui: {
337
+ tab: "appearance",
338
+ label: "Show Hook Status",
339
+ description: "Display hook status messages below status line",
340
+ },
341
+ },
342
+
343
+ "statusLine.leftSegments": { type: "array", default: [] as StatusLineSegmentId[] },
344
+
345
+ "statusLine.rightSegments": { type: "array", default: [] as StatusLineSegmentId[] },
346
+
347
+ "statusLine.segmentOptions": { type: "record", default: {} as Record<string, unknown> },
348
+
349
+ // Images and terminal
350
+ "terminal.showImages": {
351
+ type: "boolean",
352
+ default: true,
353
+ ui: {
354
+ tab: "appearance",
355
+ label: "Show Inline Images",
356
+ description: "Render images inline in terminal",
357
+ condition: "hasImageProtocol",
358
+ },
359
+ },
360
+
361
+ "images.autoResize": {
362
+ type: "boolean",
363
+ default: true,
364
+ ui: {
365
+ tab: "appearance",
366
+ label: "Auto-Resize Images",
367
+ description: "Resize large images to 2000x2000 max for better model compatibility",
368
+ },
369
+ },
370
+
371
+ "images.blockImages": {
372
+ type: "boolean",
373
+ default: false,
374
+ ui: { tab: "appearance", label: "Block Images", description: "Prevent images from being sent to LLM providers" },
375
+ },
376
+
377
+ "tui.maxInlineImageColumns": {
378
+ type: "number",
379
+ default: 100,
380
+ description:
381
+ "Maximum width in terminal columns for inline images (default 100). Set to 0 for unlimited (bounded only by terminal width).",
382
+ },
383
+
384
+ "tui.maxInlineImageRows": {
385
+ type: "number",
386
+ default: 20,
387
+ description:
388
+ "Maximum height in terminal rows for inline images (default 20). Set to 0 to use only the viewport-based limit (60% of terminal height).",
389
+ },
390
+ // Display rendering
391
+ "display.tabWidth": {
392
+ type: "number",
393
+ default: 3,
394
+ ui: {
395
+ tab: "appearance",
396
+ label: "Tab Width",
397
+ description: "Default number of spaces used when rendering tab characters",
398
+ submenu: true,
399
+ },
400
+ },
401
+
402
+ "display.showTokenUsage": {
403
+ type: "boolean",
404
+ default: false,
405
+ ui: {
406
+ tab: "appearance",
407
+ label: "Show Token Usage",
408
+ description: "Show per-turn token usage on assistant messages",
409
+ },
410
+ },
411
+
412
+ showHardwareCursor: {
413
+ type: "boolean",
414
+ default: true, // will be computed based on platform if undefined
415
+ ui: { tab: "appearance", label: "Show Hardware Cursor", description: "Show terminal cursor for IME support" },
416
+ },
417
+
418
+ clearOnShrink: {
419
+ type: "boolean",
420
+ default: false,
421
+ ui: {
422
+ tab: "appearance",
423
+ label: "Clear on Shrink",
424
+ description: "Clear empty rows when content shrinks (may cause flicker)",
425
+ },
426
+ },
427
+
428
+ // ────────────────────────────────────────────────────────────────────────
429
+ // Model
430
+ // ────────────────────────────────────────────────────────────────────────
431
+
432
+ // Reasoning and prompts
433
+ defaultThinkingLevel: {
434
+ type: "enum",
435
+ values: THINKING_EFFORTS,
436
+ default: "high",
437
+ ui: {
438
+ tab: "model",
439
+ label: "Thinking Level",
440
+ description: "Reasoning depth for thinking-capable models",
441
+ submenu: true,
442
+ },
443
+ },
444
+
445
+ hideThinkingBlock: {
446
+ type: "boolean",
447
+ default: false,
448
+ ui: { tab: "model", label: "Hide Thinking Blocks", description: "Hide thinking blocks in assistant responses" },
449
+ },
450
+
451
+ repeatToolDescriptions: {
452
+ type: "boolean",
453
+ default: false,
454
+ ui: {
455
+ tab: "model",
456
+ label: "Repeat Tool Descriptions",
457
+ description: "Render full tool descriptions in the system prompt instead of a tool name list",
458
+ },
459
+ },
460
+
461
+ // Sampling
462
+ temperature: {
463
+ type: "number",
464
+ default: -1,
465
+ ui: {
466
+ tab: "model",
467
+ label: "Temperature",
468
+ description: "Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)",
469
+ submenu: true,
470
+ },
471
+ },
472
+
473
+ topP: {
474
+ type: "number",
475
+ default: -1,
476
+ ui: {
477
+ tab: "model",
478
+ label: "Top P",
479
+ description: "Nucleus sampling cutoff (0-1, -1 = provider default)",
480
+ submenu: true,
481
+ },
482
+ },
483
+
484
+ topK: {
485
+ type: "number",
486
+ default: -1,
487
+ ui: {
488
+ tab: "model",
489
+ label: "Top K",
490
+ description: "Sample from top-K tokens (-1 = provider default)",
491
+ submenu: true,
492
+ },
493
+ },
494
+
495
+ minP: {
496
+ type: "number",
497
+ default: -1,
498
+ ui: {
499
+ tab: "model",
500
+ label: "Min P",
501
+ description: "Minimum probability threshold (0-1, -1 = provider default)",
502
+ submenu: true,
503
+ },
504
+ },
505
+
506
+ presencePenalty: {
507
+ type: "number",
508
+ default: -1,
509
+ ui: {
510
+ tab: "model",
511
+ label: "Presence Penalty",
512
+ description: "Penalty for introducing already-present tokens (-1 = provider default)",
513
+ submenu: true,
514
+ },
515
+ },
516
+
517
+ repetitionPenalty: {
518
+ type: "number",
519
+ default: -1,
520
+ ui: {
521
+ tab: "model",
522
+ label: "Repetition Penalty",
523
+ description: "Penalty for repeated tokens (-1 = provider default)",
524
+ submenu: true,
525
+ },
526
+ },
527
+
528
+ serviceTier: {
529
+ type: "enum",
530
+ values: ["none", "auto", "default", "flex", "scale", "priority"] as const,
531
+ default: "none",
532
+ ui: {
533
+ tab: "model",
534
+ label: "Service Tier",
535
+ description: "OpenAI processing priority (none = omit parameter)",
536
+ submenu: true,
537
+ },
538
+ },
539
+
540
+ // Retries
541
+ "retry.enabled": { type: "boolean", default: true },
542
+
543
+ "retry.maxRetries": {
544
+ type: "number",
545
+ default: 3,
546
+ ui: {
547
+ tab: "model",
548
+ label: "Retry Attempts",
549
+ description: "Maximum retry attempts on API errors",
550
+ submenu: true,
551
+ },
552
+ },
553
+
554
+ "retry.baseDelayMs": { type: "number", default: 2000 },
555
+ "retry.fallbackChains": { type: "record", default: {} as Record<string, string[]> },
556
+ "retry.fallbackRevertPolicy": {
557
+ type: "enum",
558
+ values: ["cooldown-expiry", "never"] as const,
559
+ default: "cooldown-expiry",
560
+ ui: {
561
+ tab: "model",
562
+ label: "Fallback Revert Policy",
563
+ description: "When to return to the primary model after a fallback",
564
+ submenu: true,
565
+ },
566
+ },
567
+
568
+ // ────────────────────────────────────────────────────────────────────────
569
+ // Interaction
570
+ // ────────────────────────────────────────────────────────────────────────
571
+
572
+ // Conversation flow
573
+ steeringMode: {
574
+ type: "enum",
575
+ values: ["all", "one-at-a-time"] as const,
576
+ default: "one-at-a-time",
577
+ ui: {
578
+ tab: "interaction",
579
+ label: "Steering Mode",
580
+ description: "How to process queued messages while agent is working",
581
+ },
582
+ },
583
+
584
+ followUpMode: {
585
+ type: "enum",
586
+ values: ["all", "one-at-a-time"] as const,
587
+ default: "one-at-a-time",
588
+ ui: {
589
+ tab: "interaction",
590
+ label: "Follow-Up Mode",
591
+ description: "How to drain follow-up messages after a turn completes",
592
+ },
593
+ },
594
+
595
+ interruptMode: {
596
+ type: "enum",
597
+ values: ["immediate", "wait"] as const,
598
+ default: "immediate",
599
+ ui: {
600
+ tab: "interaction",
601
+ label: "Interrupt Mode",
602
+ description: "When steering messages interrupt tool execution",
603
+ },
604
+ },
605
+
606
+ // Input and startup
607
+ doubleEscapeAction: {
608
+ type: "enum",
609
+ values: ["branch", "tree", "none"] as const,
610
+ default: "tree",
611
+ ui: {
612
+ tab: "interaction",
613
+ label: "Double-Escape Action",
614
+ description: "Action when pressing Escape twice with empty editor",
615
+ },
616
+ },
617
+
618
+ treeFilterMode: {
619
+ type: "enum",
620
+ values: ["default", "no-tools", "user-only", "labeled-only", "all"] as const,
621
+ default: "default",
622
+ ui: {
623
+ tab: "interaction",
624
+ label: "Session Tree Filter",
625
+ description: "Default filter mode when opening the session tree",
626
+ },
627
+ },
628
+
629
+ autocompleteMaxVisible: {
630
+ type: "number",
631
+ default: 5,
632
+ ui: {
633
+ tab: "interaction",
634
+ label: "Autocomplete Items",
635
+ description: "Max visible items in autocomplete dropdown (3-20)",
636
+ submenu: true,
637
+ },
638
+ },
639
+
640
+ "startup.quiet": {
641
+ type: "boolean",
642
+ default: false,
643
+ ui: {
644
+ tab: "interaction",
645
+ label: "Quiet Startup",
646
+ description: "Skip welcome screen and startup status messages",
647
+ },
648
+ },
649
+
650
+ "startup.checkUpdate": {
651
+ type: "boolean",
652
+ default: true,
653
+ ui: {
654
+ tab: "interaction",
655
+ label: "Check for Updates",
656
+ description: "If false, skip update check",
657
+ },
658
+ },
659
+
660
+ collapseChangelog: {
661
+ type: "boolean",
662
+ default: false,
663
+ ui: { tab: "interaction", label: "Collapse Changelog", description: "Show condensed changelog after updates" },
664
+ },
665
+
666
+ // Notifications
667
+ "completion.notify": {
668
+ type: "enum",
669
+ values: ["on", "off"] as const,
670
+ default: "on",
671
+ ui: { tab: "interaction", label: "Completion Notification", description: "Notify when the agent completes" },
672
+ },
673
+
674
+ "ask.timeout": {
675
+ type: "number",
676
+ default: 30,
677
+ ui: {
678
+ tab: "interaction",
679
+ label: "Ask Timeout",
680
+ description: "Auto-select recommended option after timeout (0 to disable)",
681
+ submenu: true,
682
+ },
683
+ },
684
+
685
+ "ask.notify": {
686
+ type: "enum",
687
+ values: ["on", "off"] as const,
688
+ default: "on",
689
+ ui: { tab: "interaction", label: "Ask Notification", description: "Notify when ask tool is waiting for input" },
690
+ },
691
+
692
+ // Speech-to-text
693
+ "stt.enabled": {
694
+ type: "boolean",
695
+ default: false,
696
+ ui: { tab: "interaction", label: "Speech-to-Text", description: "Enable speech-to-text input via microphone" },
697
+ },
698
+
699
+ "stt.language": {
700
+ type: "string",
701
+ default: "en",
702
+ ui: {
703
+ tab: "interaction",
704
+ label: "Speech Language",
705
+ description: "Language code for transcription (e.g., en, es, fr)",
706
+ submenu: true,
707
+ },
708
+ },
709
+
710
+ "stt.modelName": {
711
+ type: "enum",
712
+ values: ["tiny", "tiny.en", "base", "base.en", "small", "small.en", "medium", "medium.en", "large"] as const,
713
+ default: "base.en",
714
+ ui: {
715
+ tab: "interaction",
716
+ label: "Speech Model",
717
+ description: "Whisper model size (larger = more accurate but slower)",
718
+ submenu: true,
719
+ },
720
+ },
721
+
722
+ // ────────────────────────────────────────────────────────────────────────
723
+ // Context
724
+ // ────────────────────────────────────────────────────────────────────────
725
+
726
+ // Context promotion
727
+ "contextPromotion.enabled": {
728
+ type: "boolean",
729
+ default: true,
730
+ ui: {
731
+ tab: "context",
732
+ label: "Auto-Promote Context",
733
+ description: "Promote to a larger-context model on context overflow instead of compacting",
734
+ },
735
+ },
736
+
737
+ // Compaction
738
+ "compaction.enabled": {
739
+ type: "boolean",
740
+ default: true,
741
+ ui: {
742
+ tab: "context",
743
+ label: "Auto-Compact",
744
+ description: "Automatically compact context when it gets too large",
745
+ },
746
+ },
747
+
748
+ "compaction.strategy": {
749
+ type: "enum",
750
+ values: ["context-full", "handoff", "off"] as const,
751
+ default: "context-full",
752
+ ui: {
753
+ tab: "context",
754
+ label: "Compaction Strategy",
755
+ description: "Choose in-place context-full maintenance, auto-handoff, or disable auto maintenance (off)",
756
+ submenu: true,
757
+ },
758
+ },
759
+
760
+ "compaction.thresholdPercent": {
761
+ type: "number",
762
+ default: -1,
763
+ ui: {
764
+ tab: "context",
765
+ label: "Compaction Threshold",
766
+ description: "Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior",
767
+ submenu: true,
768
+ },
769
+ },
770
+ "compaction.thresholdTokens": {
771
+ type: "number",
772
+ default: -1,
773
+ ui: {
774
+ tab: "context",
775
+ label: "Compaction Token Limit",
776
+ description: "Fixed token limit for context maintenance; overrides percentage if set",
777
+ submenu: true,
778
+ },
779
+ },
780
+
781
+ "compaction.handoffSaveToDisk": {
782
+ type: "boolean",
783
+ default: false,
784
+ ui: {
785
+ tab: "context",
786
+ label: "Save Handoff Docs",
787
+ description: "Save generated handoff documents to markdown files for the auto-handoff flow",
788
+ },
789
+ },
790
+
791
+ "compaction.remoteEnabled": {
792
+ type: "boolean",
793
+ default: true,
794
+ ui: {
795
+ tab: "context",
796
+ label: "Remote Compaction",
797
+ description: "Use remote compaction endpoints when available instead of local summarization",
798
+ },
799
+ },
800
+
801
+ "compaction.reserveTokens": { type: "number", default: 16384 },
802
+
803
+ "compaction.keepRecentTokens": { type: "number", default: 20000 },
804
+
805
+ "compaction.autoContinue": { type: "boolean", default: true },
806
+
807
+ "compaction.remoteEndpoint": { type: "string", default: undefined },
808
+
809
+ // Idle compaction
810
+ "compaction.idleEnabled": {
811
+ type: "boolean",
812
+ default: false,
813
+ ui: {
814
+ tab: "context",
815
+ label: "Idle Compaction",
816
+ description: "Compact context while idle when token count exceeds threshold",
817
+ },
818
+ },
819
+
820
+ "compaction.idleThresholdTokens": {
821
+ type: "number",
822
+ default: 200000,
823
+ ui: {
824
+ tab: "context",
825
+ label: "Idle Compaction Threshold",
826
+ description: "Token count above which idle compaction triggers",
827
+ submenu: true,
828
+ },
829
+ },
830
+
831
+ "compaction.idleTimeoutSeconds": {
832
+ type: "number",
833
+ default: 300,
834
+ ui: {
835
+ tab: "context",
836
+ label: "Idle Compaction Delay",
837
+ description: "Seconds to wait while idle before compacting",
838
+ submenu: true,
839
+ },
840
+ },
841
+ // Branch summaries
842
+ "branchSummary.enabled": {
843
+ type: "boolean",
844
+ default: false,
845
+ ui: { tab: "context", label: "Branch Summaries", description: "Prompt to summarize when leaving a branch" },
846
+ },
847
+
848
+ "branchSummary.reserveTokens": { type: "number", default: 16384 },
849
+
850
+ // Memories
851
+ "memories.enabled": {
852
+ type: "boolean",
853
+ default: false,
854
+ ui: {
855
+ tab: "context",
856
+ label: "Memories",
857
+ description: "Enable autonomous memory extraction and consolidation",
858
+ },
859
+ },
860
+
861
+ "memories.maxRolloutsPerStartup": { type: "number", default: 64 },
862
+
863
+ "memories.maxRolloutAgeDays": { type: "number", default: 30 },
864
+
865
+ "memories.minRolloutIdleHours": { type: "number", default: 12 },
866
+
867
+ "memories.threadScanLimit": { type: "number", default: 300 },
868
+
869
+ "memories.maxRawMemoriesForGlobal": { type: "number", default: 200 },
870
+
871
+ "memories.stage1Concurrency": { type: "number", default: 8 },
872
+
873
+ "memories.stage1LeaseSeconds": { type: "number", default: 120 },
874
+
875
+ "memories.stage1RetryDelaySeconds": { type: "number", default: 120 },
876
+
877
+ "memories.phase2LeaseSeconds": { type: "number", default: 180 },
878
+
879
+ "memories.phase2RetryDelaySeconds": { type: "number", default: 180 },
880
+
881
+ "memories.phase2HeartbeatSeconds": { type: "number", default: 30 },
882
+
883
+ "memories.rolloutPayloadPercent": { type: "number", default: 0.7 },
884
+
885
+ "memories.fallbackTokenLimit": { type: "number", default: 16000 },
886
+
887
+ "memories.summaryInjectionTokenLimit": { type: "number", default: 5000 },
888
+
889
+ // TTSR
890
+ "ttsr.enabled": {
891
+ type: "boolean",
892
+ default: true,
893
+ ui: {
894
+ tab: "context",
895
+ label: "TTSR",
896
+ description: "Time Traveling Stream Rules: interrupt agent when output matches patterns",
897
+ },
898
+ },
899
+
900
+ "ttsr.contextMode": {
901
+ type: "enum",
902
+ values: ["discard", "keep"] as const,
903
+ default: "discard",
904
+ ui: {
905
+ tab: "context",
906
+ label: "TTSR Context Mode",
907
+ description: "What to do with partial output when TTSR triggers",
908
+ },
909
+ },
910
+
911
+ "ttsr.interruptMode": {
912
+ type: "enum",
913
+ values: ["never", "prose-only", "tool-only", "always"] as const,
914
+ default: "always",
915
+ ui: {
916
+ tab: "context",
917
+ label: "TTSR Interrupt Mode",
918
+ description: "When to interrupt mid-stream vs inject warning after completion",
919
+ submenu: true,
920
+ },
921
+ },
922
+
923
+ "ttsr.repeatMode": {
924
+ type: "enum",
925
+ values: ["once", "after-gap"] as const,
926
+ default: "once",
927
+ ui: {
928
+ tab: "context",
929
+ label: "TTSR Repeat Mode",
930
+ description: "How rules can repeat: once per session or after a message gap",
931
+ },
932
+ },
933
+
934
+ "ttsr.repeatGap": {
935
+ type: "number",
936
+ default: 10,
937
+ ui: {
938
+ tab: "context",
939
+ label: "TTSR Repeat Gap",
940
+ description: "Messages before a rule can trigger again",
941
+ submenu: true,
942
+ },
943
+ },
944
+
945
+ // ────────────────────────────────────────────────────────────────────────
946
+ // Editing
947
+ // ────────────────────────────────────────────────────────────────────────
948
+
949
+ // Edit tool
950
+ "edit.mode": {
951
+ type: "enum",
952
+ values: ["replace", "patch", "hashline", "chunk"] as const,
953
+ default: "hashline",
954
+ ui: {
955
+ tab: "editing",
956
+ label: "Edit Mode",
957
+ description: "Select the edit tool variant (replace, patch, hashline, or chunk)",
958
+ },
959
+ },
960
+
961
+ "edit.fuzzyMatch": {
962
+ type: "boolean",
963
+ default: true,
964
+ ui: {
965
+ tab: "editing",
966
+ label: "Fuzzy Match",
967
+ description: "Accept high-confidence fuzzy matches for whitespace differences",
968
+ },
969
+ },
970
+
971
+ "edit.fuzzyThreshold": {
972
+ type: "number",
973
+ default: 0.95,
974
+ ui: {
975
+ tab: "editing",
976
+ label: "Fuzzy Match Threshold",
977
+ description: "Similarity threshold for fuzzy matches",
978
+ submenu: true,
979
+ },
980
+ },
981
+
982
+ "edit.streamingAbort": {
983
+ type: "boolean",
984
+ default: false,
985
+ ui: {
986
+ tab: "editing",
987
+ label: "Abort on Failed Preview",
988
+ description: "Abort streaming edit tool calls when patch preview fails",
989
+ },
990
+ },
991
+
992
+ "edit.blockAutoGenerated": {
993
+ type: "boolean",
994
+ default: true,
995
+ ui: {
996
+ tab: "editing",
997
+ label: "Block Auto-Generated Files",
998
+ description: "Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",
999
+ },
1000
+ },
1001
+
1002
+ readLineNumbers: {
1003
+ type: "boolean",
1004
+ default: false,
1005
+ ui: {
1006
+ tab: "editing",
1007
+ label: "Line Numbers",
1008
+ description: "Prepend line numbers to read tool output by default",
1009
+ },
1010
+ },
1011
+
1012
+ readHashLines: {
1013
+ type: "boolean",
1014
+ default: true,
1015
+ ui: {
1016
+ tab: "editing",
1017
+ label: "Hash Lines",
1018
+ description: "Include line hashes in read output for hashline edit mode (LINE#ID:content)",
1019
+ },
1020
+ },
1021
+
1022
+ "read.defaultLimit": {
1023
+ type: "number",
1024
+ default: 300,
1025
+ ui: {
1026
+ tab: "editing",
1027
+ label: "Default Read Limit",
1028
+ description: "Default number of lines returned when agent calls read without a limit",
1029
+ submenu: true,
1030
+ },
1031
+ },
1032
+
1033
+ "read.prosechunks": {
1034
+ type: "boolean",
1035
+ default: false,
1036
+ ui: {
1037
+ tab: "editing",
1038
+ label: "Prose Chunks",
1039
+ description: "Enable chunk rendering for prose files in chunk edit mode",
1040
+ },
1041
+ },
1042
+
1043
+ "read.explorechunks": {
1044
+ type: "boolean",
1045
+ default: false,
1046
+ ui: {
1047
+ tab: "editing",
1048
+ label: "Explore Chunks",
1049
+ description: "Show chunk tree without checksums for read-only agents like explore",
1050
+ },
1051
+ },
1052
+
1053
+ "read.anchorstyle": {
1054
+ type: "enum",
1055
+ values: ["full", "kind", "bare"],
1056
+ default: "full",
1057
+ ui: {
1058
+ tab: "editing",
1059
+ label: "Anchor Style",
1060
+ description: "Render chunk anchors with full names, kind prefixes, or checksum-only tags",
1061
+ submenu: true,
1062
+ },
1063
+ },
1064
+
1065
+ // LSP
1066
+ "lsp.enabled": {
1067
+ type: "boolean",
1068
+ default: true,
1069
+ ui: { tab: "editing", label: "LSP", description: "Enable the lsp tool for language server protocol" },
1070
+ },
1071
+
1072
+ "lsp.formatOnWrite": {
1073
+ type: "boolean",
1074
+ default: false,
1075
+ ui: {
1076
+ tab: "editing",
1077
+ label: "Format on Write",
1078
+ description: "Automatically format code files using LSP after writing",
1079
+ },
1080
+ },
1081
+
1082
+ "lsp.diagnosticsOnWrite": {
1083
+ type: "boolean",
1084
+ default: true,
1085
+ ui: {
1086
+ tab: "editing",
1087
+ label: "Diagnostics on Write",
1088
+ description: "Return LSP diagnostics after writing code files",
1089
+ },
1090
+ },
1091
+
1092
+ "lsp.diagnosticsOnEdit": {
1093
+ type: "boolean",
1094
+ default: false,
1095
+ ui: {
1096
+ tab: "editing",
1097
+ label: "Diagnostics on Edit",
1098
+ description: "Return LSP diagnostics after editing code files",
1099
+ },
1100
+ },
1101
+
1102
+ // Bash interceptor
1103
+ "bashInterceptor.enabled": {
1104
+ type: "boolean",
1105
+ default: false,
1106
+ ui: { tab: "editing", label: "Bash Interceptor", description: "Block shell commands that have dedicated tools" },
1107
+ },
1108
+ "bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
1109
+
1110
+ // Python
1111
+ "python.toolMode": {
1112
+ type: "enum",
1113
+ values: ["ipy-only", "bash-only", "both"] as const,
1114
+ default: "both",
1115
+ ui: { tab: "editing", label: "Python Tool Mode", description: "How Python code is executed" },
1116
+ },
1117
+
1118
+ "python.kernelMode": {
1119
+ type: "enum",
1120
+ values: ["session", "per-call"] as const,
1121
+ default: "session",
1122
+ ui: {
1123
+ tab: "editing",
1124
+ label: "Python Kernel Mode",
1125
+ description: "Whether to keep IPython kernel alive across calls",
1126
+ },
1127
+ },
1128
+
1129
+ "python.sharedGateway": {
1130
+ type: "boolean",
1131
+ default: true,
1132
+ ui: {
1133
+ tab: "editing",
1134
+ label: "Shared Python Gateway",
1135
+ description: "Share IPython kernel gateway across pi instances",
1136
+ },
1137
+ },
1138
+
1139
+ // ────────────────────────────────────────────────────────────────────────
1140
+ // Tools
1141
+ // ────────────────────────────────────────────────────────────────────────
1142
+
1143
+ // Todo tool
1144
+ "todo.enabled": {
1145
+ type: "boolean",
1146
+ default: true,
1147
+ ui: { tab: "tools", label: "Todos", description: "Enable the todo_write tool for task tracking" },
1148
+ },
1149
+
1150
+ "todo.reminders": {
1151
+ type: "boolean",
1152
+ default: true,
1153
+ ui: { tab: "tools", label: "Todo Reminders", description: "Remind agent to complete todos before stopping" },
1154
+ },
1155
+
1156
+ "todo.reminders.max": {
1157
+ type: "number",
1158
+ default: 3,
1159
+ ui: {
1160
+ tab: "tools",
1161
+ label: "Todo Reminder Limit",
1162
+ description: "Maximum reminders to complete todos before giving up",
1163
+ submenu: true,
1164
+ },
1165
+ },
1166
+
1167
+ "todo.eager": {
1168
+ type: "boolean",
1169
+ default: false,
1170
+ ui: {
1171
+ tab: "tools",
1172
+ label: "Create Todos Automatically",
1173
+ description: "Automatically create a comprehensive todo list after the first message",
1174
+ },
1175
+ },
1176
+
1177
+ // Search and AST tools
1178
+ "find.enabled": {
1179
+ type: "boolean",
1180
+ default: true,
1181
+ ui: { tab: "tools", label: "Find", description: "Enable the find tool for file searching" },
1182
+ },
1183
+
1184
+ "grep.enabled": {
1185
+ type: "boolean",
1186
+ default: true,
1187
+ ui: { tab: "tools", label: "Grep", description: "Enable the grep tool for content searching" },
1188
+ },
1189
+
1190
+ "grep.contextBefore": {
1191
+ type: "number",
1192
+ default: 0,
1193
+ ui: {
1194
+ tab: "tools",
1195
+ label: "Grep Context Before",
1196
+ description: "Lines of context before each grep match",
1197
+ submenu: true,
1198
+ },
1199
+ },
1200
+
1201
+ "grep.contextAfter": {
1202
+ type: "number",
1203
+ default: 0,
1204
+ ui: {
1205
+ tab: "tools",
1206
+ label: "Grep Context After",
1207
+ description: "Lines of context after each grep match",
1208
+ submenu: true,
1209
+ },
1210
+ },
1211
+
1212
+ "astGrep.enabled": {
1213
+ type: "boolean",
1214
+ default: true,
1215
+ ui: {
1216
+ tab: "tools",
1217
+ label: "AST Grep",
1218
+ description: "Enable the ast_grep tool for structural AST search",
1219
+ },
1220
+ },
1221
+
1222
+ "astEdit.enabled": {
1223
+ type: "boolean",
1224
+ default: true,
1225
+ ui: {
1226
+ tab: "tools",
1227
+ label: "AST Edit",
1228
+ description: "Enable the ast_edit tool for structural AST rewrites",
1229
+ },
1230
+ },
1231
+
1232
+ // Optional tools
1233
+ "notebook.enabled": {
1234
+ type: "boolean",
1235
+ default: true,
1236
+ ui: { tab: "tools", label: "Notebook", description: "Enable the notebook tool for notebook editing" },
1237
+ },
1238
+
1239
+ "renderMermaid.enabled": {
1240
+ type: "boolean",
1241
+ default: false,
1242
+ ui: {
1243
+ tab: "tools",
1244
+ label: "Render Mermaid",
1245
+ description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering",
1246
+ },
1247
+ },
1248
+
1249
+ "debug.enabled": {
1250
+ type: "boolean",
1251
+ default: true,
1252
+ ui: {
1253
+ tab: "tools",
1254
+ label: "Debug",
1255
+ description: "Enable the debug tool for DAP-based debugging",
1256
+ },
1257
+ },
1258
+
1259
+ "calc.enabled": {
1260
+ type: "boolean",
1261
+ default: false,
1262
+ ui: {
1263
+ tab: "tools",
1264
+ label: "Calculator",
1265
+ description: "Enable the calculator tool for basic calculations",
1266
+ },
1267
+ },
1268
+
1269
+ "inspect_image.enabled": {
1270
+ type: "boolean",
1271
+ default: false,
1272
+ ui: {
1273
+ tab: "tools",
1274
+ label: "Inspect Image",
1275
+ description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model",
1276
+ },
1277
+ },
1278
+
1279
+ "checkpoint.enabled": {
1280
+ type: "boolean",
1281
+ default: false,
1282
+ ui: {
1283
+ tab: "tools",
1284
+ label: "Checkpoint/Rewind",
1285
+ description: "Enable the checkpoint and rewind tools for context checkpointing",
1286
+ },
1287
+ },
1288
+
1289
+ // Fetching and browser
1290
+ "fetch.enabled": {
1291
+ type: "boolean",
1292
+ default: true,
1293
+ ui: { tab: "tools", label: "Read URLs", description: "Allow the read tool to fetch and process URLs" },
1294
+ },
1295
+
1296
+ "github.enabled": {
1297
+ type: "boolean",
1298
+ default: false,
1299
+ ui: {
1300
+ tab: "tools",
1301
+ label: "GitHub CLI",
1302
+ description: "Enable read-only gh_* tools for GitHub repository, issue, pull request, diff, and search access",
1303
+ },
1304
+ },
1305
+
1306
+ "web_search.enabled": {
1307
+ type: "boolean",
1308
+ default: true,
1309
+ ui: { tab: "tools", label: "Web Search", description: "Enable the web_search tool for web searching" },
1310
+ },
1311
+
1312
+ "browser.enabled": {
1313
+ type: "boolean",
1314
+ default: true,
1315
+ ui: {
1316
+ tab: "tools",
1317
+ label: "Browser",
1318
+ description: "Enable the browser tool (Ulixee Hero)",
1319
+ },
1320
+ },
1321
+
1322
+ "browser.headless": {
1323
+ type: "boolean",
1324
+ default: true,
1325
+ ui: {
1326
+ tab: "tools",
1327
+ label: "Headless Browser",
1328
+ description: "Launch browser in headless mode (disable to show browser UI)",
1329
+ },
1330
+ },
1331
+ "browser.screenshotDir": {
1332
+ type: "string",
1333
+ default: undefined,
1334
+ ui: {
1335
+ tab: "tools",
1336
+ label: "Screenshot directory",
1337
+ description:
1338
+ "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",
1339
+ },
1340
+ },
1341
+
1342
+ // Tool execution
1343
+ "tools.intentTracing": {
1344
+ type: "boolean",
1345
+ default: true,
1346
+ ui: {
1347
+ tab: "tools",
1348
+ label: "Intent Tracing",
1349
+ description: "Ask the agent to describe the intent of each tool call before executing it",
1350
+ },
1351
+ },
1352
+
1353
+ "tools.maxTimeout": {
1354
+ type: "number",
1355
+ default: 0,
1356
+ ui: {
1357
+ tab: "tools",
1358
+ label: "Max Tool Timeout",
1359
+ description: "Maximum timeout in seconds the agent can set for any tool (0 = no limit)",
1360
+ submenu: true,
1361
+ },
1362
+ },
1363
+
1364
+ // Async jobs
1365
+ "async.enabled": {
1366
+ type: "boolean",
1367
+ default: false,
1368
+ ui: {
1369
+ tab: "tools",
1370
+ label: "Async Execution",
1371
+ description: "Enable async bash commands and background task execution",
1372
+ },
1373
+ },
1374
+
1375
+ "async.maxJobs": {
1376
+ type: "number",
1377
+ default: 100,
1378
+ ui: {
1379
+ tab: "tools",
1380
+ label: "Max Async Jobs",
1381
+ description: "Maximum concurrent background jobs (1-100)",
1382
+ submenu: true,
1383
+ },
1384
+ },
1385
+
1386
+ // MCP
1387
+ "mcp.enableProjectConfig": {
1388
+ type: "boolean",
1389
+ default: true,
1390
+ ui: { tab: "tools", label: "MCP Project Config", description: "Load .mcp.json/mcp.json from project root" },
1391
+ },
1392
+
1393
+ "mcp.discoveryMode": {
1394
+ type: "boolean",
1395
+ default: false,
1396
+ ui: {
1397
+ tab: "tools",
1398
+ label: "MCP Tool Discovery",
1399
+ description: "Hide MCP tools by default and expose them through a tool discovery tool",
1400
+ },
1401
+ },
1402
+
1403
+ "mcp.discoveryDefaultServers": {
1404
+ type: "array",
1405
+ default: [] as string[],
1406
+ ui: {
1407
+ tab: "tools",
1408
+ label: "MCP Discovery Default Servers",
1409
+ description: "Keep MCP tools from these servers visible while discovery mode hides other MCP tools",
1410
+ },
1411
+ },
1412
+
1413
+ "mcp.notifications": {
1414
+ type: "boolean",
1415
+ default: false,
1416
+ ui: {
1417
+ tab: "tools",
1418
+ label: "MCP Update Injection",
1419
+ description: "Inject MCP resource updates into the agent conversation",
1420
+ },
1421
+ },
1422
+
1423
+ "mcp.notificationDebounceMs": {
1424
+ type: "number",
1425
+ default: 500,
1426
+ ui: {
1427
+ tab: "tools",
1428
+ label: "MCP Notification Debounce",
1429
+ description: "Debounce window for MCP resource update notifications before injecting into conversation",
1430
+ },
1431
+ },
1432
+
1433
+ // ────────────────────────────────────────────────────────────────────────
1434
+ // Tasks
1435
+ // ────────────────────────────────────────────────────────────────────────
1436
+
1437
+ // Delegation
1438
+ "task.isolation.mode": {
1439
+ type: "enum",
1440
+ values: ["none", "worktree", "fuse-overlay", "fuse-projfs"] as const,
1441
+ default: "none",
1442
+ ui: {
1443
+ tab: "tasks",
1444
+ label: "Isolation Mode",
1445
+ description:
1446
+ "Isolation mode for subagents (none, git worktree, fuse-overlayfs on Unix, or ProjFS on Windows via fuse-projfs; unsupported modes fall back to worktree)",
1447
+ submenu: true,
1448
+ },
1449
+ },
1450
+
1451
+ "task.isolation.merge": {
1452
+ type: "enum",
1453
+ values: ["patch", "branch"] as const,
1454
+ default: "patch",
1455
+ ui: {
1456
+ tab: "tasks",
1457
+ label: "Isolation Merge Strategy",
1458
+ description: "How isolated task changes are integrated (patch apply or branch merge)",
1459
+ submenu: true,
1460
+ },
1461
+ },
1462
+
1463
+ "task.isolation.commits": {
1464
+ type: "enum",
1465
+ values: ["generic", "ai"] as const,
1466
+ default: "generic",
1467
+ ui: {
1468
+ tab: "tasks",
1469
+ label: "Isolation Commit Style",
1470
+ description: "Commit message style for nested repo changes (generic or AI-generated)",
1471
+ submenu: true,
1472
+ },
1473
+ },
1474
+
1475
+ "task.eager": {
1476
+ type: "boolean",
1477
+ default: false,
1478
+ ui: {
1479
+ tab: "tasks",
1480
+ label: "Prefer Task Delegation",
1481
+ description: "Encourage the agent to delegate work to subagents unless changes are trivial",
1482
+ },
1483
+ },
1484
+
1485
+ "task.maxConcurrency": {
1486
+ type: "number",
1487
+ default: 32,
1488
+ ui: {
1489
+ tab: "tasks",
1490
+ label: "Max Concurrent Tasks",
1491
+ description: "Concurrent limit for subagents",
1492
+ submenu: true,
1493
+ },
1494
+ },
1495
+
1496
+ "task.maxRecursionDepth": {
1497
+ type: "number",
1498
+ default: 2,
1499
+ ui: {
1500
+ tab: "tasks",
1501
+ label: "Max Task Recursion",
1502
+ description: "How many levels deep subagents can spawn their own subagents",
1503
+ submenu: true,
1504
+ },
1505
+ },
1506
+
1507
+ "task.disabledAgents": {
1508
+ type: "array",
1509
+ default: [] as string[],
1510
+ },
1511
+
1512
+ "task.agentModelOverrides": {
1513
+ type: "record",
1514
+ default: {} as Record<string, string>,
1515
+ },
1516
+
1517
+ "tasks.todoClearDelay": {
1518
+ type: "number",
1519
+ default: 60,
1520
+ ui: {
1521
+ tab: "tasks",
1522
+ label: "Todo auto-clear delay",
1523
+ description: "How long to wait before removing completed/abandoned tasks from the list",
1524
+ submenu: true,
1525
+ },
1526
+ },
1527
+
1528
+ // Skills
1529
+ "skills.enabled": { type: "boolean", default: true },
1530
+
1531
+ "skills.enableSkillCommands": {
1532
+ type: "boolean",
1533
+ default: true,
1534
+ ui: { tab: "tasks", label: "Skill Commands", description: "Register skills as /skill:name commands" },
1535
+ },
1536
+
1537
+ "skills.enableCodexUser": { type: "boolean", default: true },
1538
+
1539
+ "skills.enableClaudeUser": { type: "boolean", default: true },
1540
+
1541
+ "skills.enableClaudeProject": { type: "boolean", default: true },
1542
+
1543
+ "skills.enablePiUser": { type: "boolean", default: true },
1544
+
1545
+ "skills.enablePiProject": { type: "boolean", default: true },
1546
+
1547
+ "skills.customDirectories": { type: "array", default: [] as string[] },
1548
+
1549
+ "skills.ignoredSkills": { type: "array", default: [] as string[] },
1550
+
1551
+ "skills.includeSkills": { type: "array", default: [] as string[] },
1552
+
1553
+ // Commands
1554
+ "commands.enableClaudeUser": {
1555
+ type: "boolean",
1556
+ default: true,
1557
+ ui: { tab: "tasks", label: "Claude User Commands", description: "Load commands from ~/.claude/commands/" },
1558
+ },
1559
+
1560
+ "commands.enableClaudeProject": {
1561
+ type: "boolean",
1562
+ default: true,
1563
+ ui: { tab: "tasks", label: "Claude Project Commands", description: "Load commands from .claude/commands/" },
1564
+ },
1565
+
1566
+ // ────────────────────────────────────────────────────────────────────────
1567
+ // Providers
1568
+ // ────────────────────────────────────────────────────────────────────────
1569
+
1570
+ // Secret handling
1571
+ "secrets.enabled": {
1572
+ type: "boolean",
1573
+ default: false,
1574
+ ui: { tab: "providers", label: "Hide Secrets", description: "Obfuscate secrets before sending to AI providers" },
1575
+ },
1576
+
1577
+ // Provider selection
1578
+ "providers.webSearch": {
1579
+ type: "enum",
1580
+ values: [
1581
+ "auto",
1582
+ "exa",
1583
+ "brave",
1584
+ "jina",
1585
+ "kimi",
1586
+ "zai",
1587
+ "perplexity",
1588
+ "anthropic",
1589
+ "gemini",
1590
+ "codex",
1591
+ "tavily",
1592
+ "kagi",
1593
+ "synthetic",
1594
+ "parallel",
1595
+ ] as const,
1596
+ default: "auto",
1597
+ ui: {
1598
+ tab: "providers",
1599
+ label: "Web Search Provider",
1600
+ description: "Provider for web search tool",
1601
+ submenu: true,
1602
+ },
1603
+ },
1604
+ "providers.image": {
1605
+ type: "enum",
1606
+ values: ["auto", "gemini", "openrouter"] as const,
1607
+ default: "auto",
1608
+ ui: {
1609
+ tab: "providers",
1610
+ label: "Image Provider",
1611
+ description: "Provider for image generation tool",
1612
+ submenu: true,
1613
+ },
1614
+ },
1615
+
1616
+ "providers.kimiApiFormat": {
1617
+ type: "enum",
1618
+ values: ["openai", "anthropic"] as const,
1619
+ default: "anthropic",
1620
+ ui: {
1621
+ tab: "providers",
1622
+ label: "Kimi API Format",
1623
+ description: "API format for Kimi Code provider",
1624
+ submenu: true,
1625
+ },
1626
+ },
1627
+
1628
+ "providers.openaiWebsockets": {
1629
+ type: "enum",
1630
+ values: ["auto", "off", "on"] as const,
1631
+ default: "auto",
1632
+ ui: {
1633
+ tab: "providers",
1634
+ label: "OpenAI WebSockets",
1635
+ description: "Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",
1636
+ submenu: true,
1637
+ },
1638
+ },
1639
+
1640
+ "providers.parallelFetch": {
1641
+ type: "boolean",
1642
+ default: true,
1643
+ ui: {
1644
+ tab: "providers",
1645
+ label: "Parallel Fetch",
1646
+ description: "Use Parallel extract API for URL fetching when credentials are available",
1647
+ },
1648
+ },
1649
+
1650
+ // Exa
1651
+ "exa.enabled": {
1652
+ type: "boolean",
1653
+ default: true,
1654
+ ui: { tab: "providers", label: "Exa", description: "Master toggle for all Exa search tools" },
1655
+ },
1656
+
1657
+ "exa.enableSearch": {
1658
+ type: "boolean",
1659
+ default: true,
1660
+ ui: { tab: "providers", label: "Exa Search", description: "Basic search, deep search, code search, crawl" },
1661
+ },
1662
+
1663
+ "exa.enableResearcher": {
1664
+ type: "boolean",
1665
+ default: false,
1666
+ ui: { tab: "providers", label: "Exa Researcher", description: "AI-powered deep research tasks" },
1667
+ },
1668
+
1669
+ "exa.enableWebsets": {
1670
+ type: "boolean",
1671
+ default: false,
1672
+ ui: { tab: "providers", label: "Exa Websets", description: "Webset management and enrichment tools" },
1673
+ },
1674
+
1675
+ "commit.mapReduceEnabled": { type: "boolean", default: true },
1676
+
1677
+ "commit.mapReduceMinFiles": { type: "number", default: 4 },
1678
+
1679
+ "commit.mapReduceMaxFileTokens": { type: "number", default: 50000 },
1680
+
1681
+ "commit.mapReduceTimeoutMs": { type: "number", default: 120000 },
1682
+
1683
+ "commit.mapReduceMaxConcurrency": { type: "number", default: 5 },
1684
+
1685
+ "commit.changelogMaxDiffChars": { type: "number", default: 120000 },
1686
+
1687
+ "dev.autoqa": {
1688
+ type: "boolean",
1689
+ default: false,
1690
+ ui: {
1691
+ tab: "tools",
1692
+ label: "Auto QA",
1693
+ description: "Enable automated tool issue reporting (report_tool_issue) for all agents",
1694
+ },
1695
+ },
1696
+
1697
+ "thinkingBudgets.minimal": { type: "number", default: 1024 },
1698
+
1699
+ "thinkingBudgets.low": { type: "number", default: 2048 },
1700
+
1701
+ "thinkingBudgets.medium": { type: "number", default: 8192 },
1702
+
1703
+ "thinkingBudgets.high": { type: "number", default: 16384 },
1704
+
1705
+ "thinkingBudgets.xhigh": { type: "number", default: 32768 },
1706
+ } as const;
1707
+
1708
+ // ═══════════════════════════════════════════════════════════════════════════
1709
+ // Type Inference
1710
+ // ═══════════════════════════════════════════════════════════════════════════
1711
+
1712
+ type Schema = typeof SETTINGS_SCHEMA;
1713
+
1714
+ /** All valid setting paths */
1715
+ export type SettingPath = keyof Schema;
1716
+
1717
+ /** Infer the value type for a setting path */
1718
+ export type SettingValue<P extends SettingPath> = Schema[P] extends { type: "boolean" }
1719
+ ? boolean
1720
+ : Schema[P] extends { type: "string" }
1721
+ ? string | undefined
1722
+ : Schema[P] extends { type: "number" }
1723
+ ? number
1724
+ : Schema[P] extends { type: "enum"; values: infer V }
1725
+ ? V extends readonly string[]
1726
+ ? V[number]
1727
+ : never
1728
+ : Schema[P] extends { type: "array"; default: infer D }
1729
+ ? D
1730
+ : Schema[P] extends { type: "record"; default: infer D }
1731
+ ? D
1732
+ : never;
1733
+
1734
+ /** Get the default value for a setting path */
1735
+ export function getDefault<P extends SettingPath>(path: P): SettingValue<P> {
1736
+ return SETTINGS_SCHEMA[path].default as SettingValue<P>;
1737
+ }
1738
+
1739
+ /** Check if a path has UI metadata (should appear in settings panel) */
1740
+ export function hasUi(path: SettingPath): boolean {
1741
+ return "ui" in SETTINGS_SCHEMA[path];
1742
+ }
1743
+
1744
+ /** Get UI metadata for a path (undefined if no UI) */
1745
+ export function getUi(path: SettingPath): UiMetadata | undefined {
1746
+ const def = SETTINGS_SCHEMA[path];
1747
+ return "ui" in def ? (def.ui as UiMetadata) : undefined;
1748
+ }
1749
+
1750
+ /** Get all paths for a specific tab */
1751
+ export function getPathsForTab(tab: SettingTab): SettingPath[] {
1752
+ return (Object.keys(SETTINGS_SCHEMA) as SettingPath[]).filter(path => {
1753
+ const ui = getUi(path);
1754
+ return ui?.tab === tab;
1755
+ });
1756
+ }
1757
+
1758
+ /** Get the type of a setting */
1759
+ export function getType(path: SettingPath): SettingDef["type"] {
1760
+ return SETTINGS_SCHEMA[path].type;
1761
+ }
1762
+
1763
+ /** Get enum values for an enum setting */
1764
+ export function getEnumValues(path: SettingPath): readonly string[] | undefined {
1765
+ const def = SETTINGS_SCHEMA[path];
1766
+ return "values" in def ? (def.values as readonly string[]) : undefined;
1767
+ }
1768
+
1769
+ // ═══════════════════════════════════════════════════════════════════════════
1770
+ // Derived Types from Schema
1771
+ // ═══════════════════════════════════════════════════════════════════════════
1772
+
1773
+ /** Status line preset - derived from schema */
1774
+ export type StatusLinePreset = SettingValue<"statusLine.preset">;
1775
+
1776
+ /** Status line separator style - derived from schema */
1777
+ export type StatusLineSeparatorStyle = SettingValue<"statusLine.separator">;
1778
+
1779
+ /** Tree selector filter mode - derived from schema */
1780
+ export type TreeFilterMode = SettingValue<"treeFilterMode">;
1781
+
1782
+ // ═══════════════════════════════════════════════════════════════════════════
1783
+ // Typed Group Definitions
1784
+ // ═══════════════════════════════════════════════════════════════════════════
1785
+
1786
+ export interface CompactionSettings {
1787
+ enabled: boolean;
1788
+ strategy: "context-full" | "handoff" | "off";
1789
+ thresholdPercent: number;
1790
+ thresholdTokens: number;
1791
+ reserveTokens: number;
1792
+ keepRecentTokens: number;
1793
+ handoffSaveToDisk: boolean;
1794
+ autoContinue: boolean;
1795
+ remoteEnabled: boolean;
1796
+ remoteEndpoint: string | undefined;
1797
+ idleEnabled: boolean;
1798
+ idleThresholdTokens: number;
1799
+ idleTimeoutSeconds: number;
1800
+ }
1801
+
1802
+ export interface ContextPromotionSettings {
1803
+ enabled: boolean;
1804
+ }
1805
+ export interface RetrySettings {
1806
+ enabled: boolean;
1807
+ maxRetries: number;
1808
+ baseDelayMs: number;
1809
+ }
1810
+
1811
+ export interface MemoriesSettings {
1812
+ enabled: boolean;
1813
+ maxRolloutsPerStartup: number;
1814
+ maxRolloutAgeDays: number;
1815
+ minRolloutIdleHours: number;
1816
+ threadScanLimit: number;
1817
+ maxRawMemoriesForGlobal: number;
1818
+ stage1Concurrency: number;
1819
+ stage1LeaseSeconds: number;
1820
+ stage1RetryDelaySeconds: number;
1821
+ phase2LeaseSeconds: number;
1822
+ phase2RetryDelaySeconds: number;
1823
+ phase2HeartbeatSeconds: number;
1824
+ rolloutPayloadPercent: number;
1825
+ fallbackTokenLimit: number;
1826
+ summaryInjectionTokenLimit: number;
1827
+ }
1828
+
1829
+ export interface TodoCompletionSettings {
1830
+ enabled: boolean;
1831
+ maxReminders: number;
1832
+ }
1833
+
1834
+ export interface BranchSummarySettings {
1835
+ enabled: boolean;
1836
+ reserveTokens: number;
1837
+ }
1838
+
1839
+ export interface SkillsSettings {
1840
+ enabled?: boolean;
1841
+ enableSkillCommands?: boolean;
1842
+ enableCodexUser?: boolean;
1843
+ enableClaudeUser?: boolean;
1844
+ enableClaudeProject?: boolean;
1845
+ enablePiUser?: boolean;
1846
+ enablePiProject?: boolean;
1847
+ customDirectories?: string[];
1848
+ ignoredSkills?: string[];
1849
+ includeSkills?: string[];
1850
+ disabledExtensions?: string[];
1851
+ }
1852
+
1853
+ export interface CommitSettings {
1854
+ mapReduceEnabled: boolean;
1855
+ mapReduceMinFiles: number;
1856
+ mapReduceMaxFileTokens: number;
1857
+ mapReduceTimeoutMs: number;
1858
+ mapReduceMaxConcurrency: number;
1859
+ changelogMaxDiffChars: number;
1860
+ }
1861
+
1862
+ export interface TtsrSettings {
1863
+ enabled: boolean;
1864
+ contextMode: "discard" | "keep";
1865
+ interruptMode: "never" | "prose-only" | "tool-only" | "always";
1866
+ repeatMode: "once" | "after-gap";
1867
+ repeatGap: number;
1868
+ }
1869
+
1870
+ export interface ExaSettings {
1871
+ enabled: boolean;
1872
+ enableSearch: boolean;
1873
+ enableResearcher: boolean;
1874
+ enableWebsets: boolean;
1875
+ }
1876
+
1877
+ export interface StatusLineSettings {
1878
+ preset: StatusLinePreset;
1879
+ separator: StatusLineSeparatorStyle;
1880
+ showHookStatus: boolean;
1881
+ leftSegments: StatusLineSegmentId[];
1882
+ rightSegments: StatusLineSegmentId[];
1883
+ segmentOptions: Record<string, unknown>;
1884
+ }
1885
+
1886
+ export interface ThinkingBudgetsSettings {
1887
+ minimal: number;
1888
+ low: number;
1889
+ medium: number;
1890
+ high: number;
1891
+ xhigh: number;
1892
+ }
1893
+
1894
+ export interface SttSettings {
1895
+ enabled: boolean;
1896
+ language: string | undefined;
1897
+ modelName: string;
1898
+ whisperPath: string | undefined;
1899
+ modelPath: string | undefined;
1900
+ }
1901
+
1902
+ export interface BashInterceptorRule {
1903
+ pattern: string;
1904
+ flags?: string;
1905
+ tool: string;
1906
+ message: string;
1907
+ allowSubcommands?: string[];
1908
+ }
1909
+
1910
+ /** Map group prefix -> typed settings interface */
1911
+ export interface GroupTypeMap {
1912
+ compaction: CompactionSettings;
1913
+ contextPromotion: ContextPromotionSettings;
1914
+ retry: RetrySettings;
1915
+ memories: MemoriesSettings;
1916
+ branchSummary: BranchSummarySettings;
1917
+ skills: SkillsSettings;
1918
+ commit: CommitSettings;
1919
+ ttsr: TtsrSettings;
1920
+ exa: ExaSettings;
1921
+ statusLine: StatusLineSettings;
1922
+ thinkingBudgets: ThinkingBudgetsSettings;
1923
+ stt: SttSettings;
1924
+ modelRoles: Record<string, string>;
1925
+ modelTags: ModelTagsSettings;
1926
+ cycleOrder: string[];
1927
+ }
1928
+
1929
+ export type GroupPrefix = keyof GroupTypeMap;