@gajae-code/coding-agent 0.1.1

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 (1775) hide show
  1. package/CHANGELOG.md +8662 -0
  2. package/README.md +37 -0
  3. package/dist/types/async/index.d.ts +2 -0
  4. package/dist/types/async/job-manager.d.ts +101 -0
  5. package/dist/types/async/support.d.ts +2 -0
  6. package/dist/types/autoresearch/dashboard.d.ts +4 -0
  7. package/dist/types/autoresearch/git.d.ts +36 -0
  8. package/dist/types/autoresearch/helpers.d.ts +24 -0
  9. package/dist/types/autoresearch/index.d.ts +2 -0
  10. package/dist/types/autoresearch/state.d.ts +17 -0
  11. package/dist/types/autoresearch/storage.d.ts +142 -0
  12. package/dist/types/autoresearch/tools/init-experiment.d.ts +31 -0
  13. package/dist/types/autoresearch/tools/log-experiment.d.ts +23 -0
  14. package/dist/types/autoresearch/tools/run-experiment.d.ts +8 -0
  15. package/dist/types/autoresearch/tools/update-notes.d.ts +12 -0
  16. package/dist/types/autoresearch/types.d.ts +154 -0
  17. package/dist/types/capability/context-file.d.ts +17 -0
  18. package/dist/types/capability/extension-module.d.ts +15 -0
  19. package/dist/types/capability/extension.d.ts +28 -0
  20. package/dist/types/capability/fs.d.ts +20 -0
  21. package/dist/types/capability/hook.d.ts +19 -0
  22. package/dist/types/capability/index.d.ts +80 -0
  23. package/dist/types/capability/instruction.d.ts +17 -0
  24. package/dist/types/capability/mcp.d.ts +45 -0
  25. package/dist/types/capability/prompt.d.ts +15 -0
  26. package/dist/types/capability/rule.d.ts +61 -0
  27. package/dist/types/capability/settings.d.ts +15 -0
  28. package/dist/types/capability/skill.d.ts +36 -0
  29. package/dist/types/capability/slash-command.d.ts +17 -0
  30. package/dist/types/capability/ssh.d.ts +23 -0
  31. package/dist/types/capability/system-prompt.d.ts +15 -0
  32. package/dist/types/capability/tool.d.ts +19 -0
  33. package/dist/types/capability/types.d.ts +154 -0
  34. package/dist/types/cli/agents-cli.d.ts +12 -0
  35. package/dist/types/cli/args.d.ts +53 -0
  36. package/dist/types/cli/auth-broker-cli.d.ts +25 -0
  37. package/dist/types/cli/auth-gateway-cli.d.ts +18 -0
  38. package/dist/types/cli/classify-install-target.d.ts +18 -0
  39. package/dist/types/cli/commands/init-xdg.d.ts +1 -0
  40. package/dist/types/cli/config-cli.d.ts +22 -0
  41. package/dist/types/cli/file-processor.d.ts +11 -0
  42. package/dist/types/cli/grep-cli.d.ts +17 -0
  43. package/dist/types/cli/initial-message.d.ts +17 -0
  44. package/dist/types/cli/list-models.d.ts +30 -0
  45. package/dist/types/cli/plugin-cli.d.ts +32 -0
  46. package/dist/types/cli/read-cli.d.ts +4 -0
  47. package/dist/types/cli/session-picker.d.ts +3 -0
  48. package/dist/types/cli/setup-cli.d.ts +31 -0
  49. package/dist/types/cli/shell-cli.d.ts +8 -0
  50. package/dist/types/cli/ssh-cli.d.ts +21 -0
  51. package/dist/types/cli/stats-cli.d.ts +17 -0
  52. package/dist/types/cli/update-cli.d.ts +38 -0
  53. package/dist/types/cli/web-search-cli.d.ts +20 -0
  54. package/dist/types/cli/worktree-cli.d.ts +26 -0
  55. package/dist/types/cli.d.ts +3 -0
  56. package/dist/types/commands/acp.d.ts +12 -0
  57. package/dist/types/commands/agents.d.ts +34 -0
  58. package/dist/types/commands/auth-broker.d.ts +54 -0
  59. package/dist/types/commands/auth-gateway.d.ts +32 -0
  60. package/dist/types/commands/codex-native-hook.d.ts +6 -0
  61. package/dist/types/commands/commit.d.ts +27 -0
  62. package/dist/types/commands/config.d.ts +30 -0
  63. package/dist/types/commands/deep-interview.d.ts +7 -0
  64. package/dist/types/commands/gjc-runtime-bridge.d.ts +6 -0
  65. package/dist/types/commands/grep.d.ts +42 -0
  66. package/dist/types/commands/launch.d.ts +121 -0
  67. package/dist/types/commands/plugin.d.ts +52 -0
  68. package/dist/types/commands/question.d.ts +7 -0
  69. package/dist/types/commands/ralplan.d.ts +7 -0
  70. package/dist/types/commands/read.d.ts +15 -0
  71. package/dist/types/commands/setup.d.ts +48 -0
  72. package/dist/types/commands/shell.d.ts +21 -0
  73. package/dist/types/commands/ssh.d.ts +48 -0
  74. package/dist/types/commands/state.d.ts +7 -0
  75. package/dist/types/commands/stats.d.ts +25 -0
  76. package/dist/types/commands/team.d.ts +24 -0
  77. package/dist/types/commands/ultragoal.d.ts +7 -0
  78. package/dist/types/commands/update.d.ts +20 -0
  79. package/dist/types/commands/web-search.d.ts +33 -0
  80. package/dist/types/commands/worktree.d.ts +34 -0
  81. package/dist/types/commit/agentic/agent.d.ts +31 -0
  82. package/dist/types/commit/agentic/fallback.d.ts +5 -0
  83. package/dist/types/commit/agentic/index.d.ts +2 -0
  84. package/dist/types/commit/agentic/state.d.ts +58 -0
  85. package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
  86. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
  87. package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
  88. package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
  89. package/dist/types/commit/agentic/tools/index.d.ts +16 -0
  90. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
  91. package/dist/types/commit/agentic/tools/propose-commit.d.ts +36 -0
  92. package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
  93. package/dist/types/commit/agentic/tools/schemas.d.ts +27 -0
  94. package/dist/types/commit/agentic/tools/split-commit.d.ts +53 -0
  95. package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
  96. package/dist/types/commit/agentic/trivial.d.ts +7 -0
  97. package/dist/types/commit/agentic/validation.d.ts +20 -0
  98. package/dist/types/commit/analysis/conventional.d.ts +22 -0
  99. package/dist/types/commit/analysis/index.d.ts +4 -0
  100. package/dist/types/commit/analysis/scope.d.ts +6 -0
  101. package/dist/types/commit/analysis/summary.d.ts +19 -0
  102. package/dist/types/commit/analysis/validation.d.ts +8 -0
  103. package/dist/types/commit/changelog/detect.d.ts +2 -0
  104. package/dist/types/commit/changelog/generate.d.ts +30 -0
  105. package/dist/types/commit/changelog/index.d.ts +30 -0
  106. package/dist/types/commit/changelog/parse.d.ts +2 -0
  107. package/dist/types/commit/cli.d.ts +3 -0
  108. package/dist/types/commit/git/diff.d.ts +5 -0
  109. package/dist/types/commit/index.d.ts +4 -0
  110. package/dist/types/commit/map-reduce/index.d.ts +28 -0
  111. package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
  112. package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
  113. package/dist/types/commit/map-reduce/utils.d.ts +2 -0
  114. package/dist/types/commit/message.d.ts +2 -0
  115. package/dist/types/commit/model-selection.d.ts +15 -0
  116. package/dist/types/commit/pipeline.d.ts +5 -0
  117. package/dist/types/commit/shared-llm.d.ts +54 -0
  118. package/dist/types/commit/types.d.ts +78 -0
  119. package/dist/types/commit/utils/exclusions.d.ts +4 -0
  120. package/dist/types/commit/utils.d.ts +20 -0
  121. package/dist/types/config/config-file.d.ts +58 -0
  122. package/dist/types/config/file-lock.d.ts +6 -0
  123. package/dist/types/config/keybindings.d.ts +334 -0
  124. package/dist/types/config/model-equivalence.d.ts +24 -0
  125. package/dist/types/config/model-registry.d.ts +390 -0
  126. package/dist/types/config/model-resolver.d.ts +230 -0
  127. package/dist/types/config/models-config-schema.d.ts +504 -0
  128. package/dist/types/config/prompt-templates.d.ts +32 -0
  129. package/dist/types/config/resolve-config-value.d.ts +17 -0
  130. package/dist/types/config/settings-schema.d.ts +3337 -0
  131. package/dist/types/config/settings.d.ts +132 -0
  132. package/dist/types/config/skill-settings-defaults.d.ts +14 -0
  133. package/dist/types/config.d.ts +66 -0
  134. package/dist/types/cursor.d.ts +24 -0
  135. package/dist/types/dap/client.d.ts +38 -0
  136. package/dist/types/dap/config.d.ts +6 -0
  137. package/dist/types/dap/index.d.ts +4 -0
  138. package/dist/types/dap/session.d.ts +108 -0
  139. package/dist/types/dap/types.d.ts +524 -0
  140. package/dist/types/debug/index.d.ts +15 -0
  141. package/dist/types/debug/log-formatting.d.ts +4 -0
  142. package/dist/types/debug/log-viewer.d.ts +68 -0
  143. package/dist/types/debug/profiler.d.ts +24 -0
  144. package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
  145. package/dist/types/debug/raw-sse.d.ts +16 -0
  146. package/dist/types/debug/report-bundle.d.ts +55 -0
  147. package/dist/types/debug/system-info.d.ts +26 -0
  148. package/dist/types/defaults/gjc-defaults.d.ts +44 -0
  149. package/dist/types/discovery/agents-md.d.ts +1 -0
  150. package/dist/types/discovery/agents.d.ts +12 -0
  151. package/dist/types/discovery/builtin.d.ts +1 -0
  152. package/dist/types/discovery/claude-plugins.d.ts +1 -0
  153. package/dist/types/discovery/claude.d.ts +1 -0
  154. package/dist/types/discovery/cline.d.ts +1 -0
  155. package/dist/types/discovery/codex.d.ts +1 -0
  156. package/dist/types/discovery/cursor.d.ts +16 -0
  157. package/dist/types/discovery/gemini.d.ts +1 -0
  158. package/dist/types/discovery/github.d.ts +1 -0
  159. package/dist/types/discovery/helpers.d.ts +268 -0
  160. package/dist/types/discovery/index.d.ts +48 -0
  161. package/dist/types/discovery/mcp-json.d.ts +1 -0
  162. package/dist/types/discovery/opencode.d.ts +1 -0
  163. package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
  164. package/dist/types/discovery/ssh.d.ts +1 -0
  165. package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
  166. package/dist/types/discovery/vscode.d.ts +1 -0
  167. package/dist/types/discovery/windsurf.d.ts +13 -0
  168. package/dist/types/edit/apply-patch/index.d.ts +35 -0
  169. package/dist/types/edit/apply-patch/parser.d.ts +34 -0
  170. package/dist/types/edit/diff.d.ts +59 -0
  171. package/dist/types/edit/file-read-cache.d.ts +25 -0
  172. package/dist/types/edit/index.d.ts +58 -0
  173. package/dist/types/edit/modes/apply-patch.d.ts +24 -0
  174. package/dist/types/edit/modes/patch.d.ts +99 -0
  175. package/dist/types/edit/modes/replace.d.ts +142 -0
  176. package/dist/types/edit/normalize.d.ts +43 -0
  177. package/dist/types/edit/notebook.d.ts +23 -0
  178. package/dist/types/edit/read-file.d.ts +2 -0
  179. package/dist/types/edit/renderer.d.ts +110 -0
  180. package/dist/types/edit/streaming.d.ts +66 -0
  181. package/dist/types/eval/backend.d.ts +40 -0
  182. package/dist/types/eval/index.d.ts +4 -0
  183. package/dist/types/eval/js/context-manager.d.ts +24 -0
  184. package/dist/types/eval/js/executor.d.ts +28 -0
  185. package/dist/types/eval/js/index.d.ts +10 -0
  186. package/dist/types/eval/js/shared/helpers.d.ts +38 -0
  187. package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
  188. package/dist/types/eval/js/shared/prelude.d.ts +1 -0
  189. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
  190. package/dist/types/eval/js/shared/runtime.d.ts +47 -0
  191. package/dist/types/eval/js/shared/types.d.ts +24 -0
  192. package/dist/types/eval/js/tool-bridge.d.ts +18 -0
  193. package/dist/types/eval/js/worker-core.d.ts +5 -0
  194. package/dist/types/eval/js/worker-entry.d.ts +1 -0
  195. package/dist/types/eval/js/worker-protocol.d.ts +77 -0
  196. package/dist/types/eval/py/display.d.ts +25 -0
  197. package/dist/types/eval/py/executor.d.ts +83 -0
  198. package/dist/types/eval/py/index.d.ts +10 -0
  199. package/dist/types/eval/py/kernel.d.ts +61 -0
  200. package/dist/types/eval/py/prelude.d.ts +1 -0
  201. package/dist/types/eval/py/runtime.d.ts +21 -0
  202. package/dist/types/eval/py/tool-bridge.d.ts +20 -0
  203. package/dist/types/eval/types.d.ts +52 -0
  204. package/dist/types/exa/factory.d.ts +13 -0
  205. package/dist/types/exa/index.d.ts +20 -0
  206. package/dist/types/exa/mcp-client.d.ts +45 -0
  207. package/dist/types/exa/render.d.ts +19 -0
  208. package/dist/types/exa/researcher.d.ts +9 -0
  209. package/dist/types/exa/search.d.ts +9 -0
  210. package/dist/types/exa/types.d.ts +155 -0
  211. package/dist/types/exa/websets.d.ts +9 -0
  212. package/dist/types/exec/bash-executor.d.ts +41 -0
  213. package/dist/types/exec/exec.d.ts +25 -0
  214. package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
  215. package/dist/types/exec/non-interactive-env.d.ts +1 -0
  216. package/dist/types/export/custom-share.d.ts +20 -0
  217. package/dist/types/export/html/index.d.ts +10 -0
  218. package/dist/types/export/html/template.generated.d.ts +1 -0
  219. package/dist/types/export/html/template.macro.d.ts +5 -0
  220. package/dist/types/export/ttsr.d.ts +44 -0
  221. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
  222. package/dist/types/extensibility/custom-commands/bundled/review/index.d.ts +10 -0
  223. package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
  224. package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
  225. package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
  226. package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
  227. package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
  228. package/dist/types/extensibility/custom-tools/types.d.ts +226 -0
  229. package/dist/types/extensibility/custom-tools/wrapper.d.ts +23 -0
  230. package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
  231. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
  232. package/dist/types/extensibility/extensions/index.d.ts +8 -0
  233. package/dist/types/extensibility/extensions/loader.d.ts +43 -0
  234. package/dist/types/extensibility/extensions/runner.d.ts +134 -0
  235. package/dist/types/extensibility/extensions/types.d.ts +864 -0
  236. package/dist/types/extensibility/extensions/wrapper.d.ts +54 -0
  237. package/dist/types/extensibility/hooks/index.d.ts +5 -0
  238. package/dist/types/extensibility/hooks/loader.d.ts +89 -0
  239. package/dist/types/extensibility/hooks/runner.d.ts +126 -0
  240. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
  241. package/dist/types/extensibility/hooks/types.d.ts +431 -0
  242. package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
  243. package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
  244. package/dist/types/extensibility/plugins/index.d.ts +7 -0
  245. package/dist/types/extensibility/plugins/installer.d.ts +5 -0
  246. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
  247. package/dist/types/extensibility/plugins/loader.d.ts +31 -0
  248. package/dist/types/extensibility/plugins/manager.d.ts +65 -0
  249. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
  250. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
  251. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
  252. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
  253. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
  254. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
  255. package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
  256. package/dist/types/extensibility/plugins/parser.d.ts +52 -0
  257. package/dist/types/extensibility/plugins/types.d.ts +149 -0
  258. package/dist/types/extensibility/shared-events.d.ts +279 -0
  259. package/dist/types/extensibility/skills.d.ts +74 -0
  260. package/dist/types/extensibility/slash-commands.d.ts +48 -0
  261. package/dist/types/extensibility/tool-proxy.d.ts +4 -0
  262. package/dist/types/extensibility/typebox.d.ts +155 -0
  263. package/dist/types/extensibility/utils.d.ts +12 -0
  264. package/dist/types/gjc-runtime/goal-mode-request.d.ts +46 -0
  265. package/dist/types/gjc-runtime/launch-tmux.d.ts +45 -0
  266. package/dist/types/gjc-runtime/launch-worktree.d.ts +46 -0
  267. package/dist/types/gjc-runtime/team-runtime.d.ts +204 -0
  268. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +85 -0
  269. package/dist/types/goals/index.d.ts +3 -0
  270. package/dist/types/goals/runtime.d.ts +68 -0
  271. package/dist/types/goals/state.d.ts +35 -0
  272. package/dist/types/goals/tools/goal-tool.d.ts +128 -0
  273. package/dist/types/hashline/anchors.d.ts +20 -0
  274. package/dist/types/hashline/apply.d.ts +14 -0
  275. package/dist/types/hashline/constants.d.ts +19 -0
  276. package/dist/types/hashline/diff-preview.d.ts +2 -0
  277. package/dist/types/hashline/diff.d.ts +17 -0
  278. package/dist/types/hashline/execute.d.ts +4 -0
  279. package/dist/types/hashline/hash.d.ts +123 -0
  280. package/dist/types/hashline/index.d.ts +13 -0
  281. package/dist/types/hashline/input.d.ts +11 -0
  282. package/dist/types/hashline/parser.d.ts +7 -0
  283. package/dist/types/hashline/prefixes.d.ts +7 -0
  284. package/dist/types/hashline/recovery.d.ts +27 -0
  285. package/dist/types/hashline/stream.d.ts +2 -0
  286. package/dist/types/hashline/types.d.ts +77 -0
  287. package/dist/types/hindsight/backend.d.ts +13 -0
  288. package/dist/types/hindsight/bank.d.ts +54 -0
  289. package/dist/types/hindsight/client.d.ts +224 -0
  290. package/dist/types/hindsight/config.d.ts +51 -0
  291. package/dist/types/hindsight/content.d.ts +70 -0
  292. package/dist/types/hindsight/index.d.ts +8 -0
  293. package/dist/types/hindsight/mental-models.d.ts +125 -0
  294. package/dist/types/hindsight/state.d.ts +99 -0
  295. package/dist/types/hindsight/transcript.d.ts +28 -0
  296. package/dist/types/hooks/codex-native-hooks-config.d.ts +29 -0
  297. package/dist/types/hooks/native-skill-hook.d.ts +16 -0
  298. package/dist/types/hooks/skill-keywords.d.ts +17 -0
  299. package/dist/types/hooks/skill-state.d.ts +80 -0
  300. package/dist/types/index.d.ts +33 -0
  301. package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
  302. package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
  303. package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
  304. package/dist/types/internal-urls/gjc-protocol.d.ts +12 -0
  305. package/dist/types/internal-urls/index.d.ts +20 -0
  306. package/dist/types/internal-urls/issue-pr-protocol.d.ts +17 -0
  307. package/dist/types/internal-urls/json-query.d.ts +30 -0
  308. package/dist/types/internal-urls/local-protocol.d.ts +39 -0
  309. package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
  310. package/dist/types/internal-urls/memory-protocol.d.ts +23 -0
  311. package/dist/types/internal-urls/parse.d.ts +19 -0
  312. package/dist/types/internal-urls/registry-helpers.d.ts +10 -0
  313. package/dist/types/internal-urls/router.d.ts +14 -0
  314. package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
  315. package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
  316. package/dist/types/internal-urls/types.d.ts +105 -0
  317. package/dist/types/lsp/client.d.ts +65 -0
  318. package/dist/types/lsp/clients/biome-client.d.ts +16 -0
  319. package/dist/types/lsp/clients/index.d.ts +19 -0
  320. package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
  321. package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
  322. package/dist/types/lsp/config.d.ts +65 -0
  323. package/dist/types/lsp/edits.d.ts +23 -0
  324. package/dist/types/lsp/index.d.ts +130 -0
  325. package/dist/types/lsp/lspmux.d.ts +58 -0
  326. package/dist/types/lsp/render.d.ts +32 -0
  327. package/dist/types/lsp/startup-events.d.ts +11 -0
  328. package/dist/types/lsp/types.d.ts +302 -0
  329. package/dist/types/lsp/utils.d.ts +108 -0
  330. package/dist/types/main.d.ts +50 -0
  331. package/dist/types/memories/index.d.ts +28 -0
  332. package/dist/types/memories/storage.d.ts +110 -0
  333. package/dist/types/memory-backend/index.d.ts +4 -0
  334. package/dist/types/memory-backend/local-backend.d.ts +9 -0
  335. package/dist/types/memory-backend/off-backend.d.ts +7 -0
  336. package/dist/types/memory-backend/resolve.d.ts +15 -0
  337. package/dist/types/memory-backend/types.d.ts +61 -0
  338. package/dist/types/modes/acp/acp-agent.d.ts +61 -0
  339. package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
  340. package/dist/types/modes/acp/acp-event-mapper.d.ts +32 -0
  341. package/dist/types/modes/acp/acp-mode.d.ts +5 -0
  342. package/dist/types/modes/acp/index.d.ts +2 -0
  343. package/dist/types/modes/acp/terminal-auth.d.ts +6 -0
  344. package/dist/types/modes/components/agent-dashboard.d.ts +21 -0
  345. package/dist/types/modes/components/assistant-message.d.ts +16 -0
  346. package/dist/types/modes/components/bash-execution.d.ts +29 -0
  347. package/dist/types/modes/components/bordered-loader.d.ts +11 -0
  348. package/dist/types/modes/components/branch-summary-message.d.ts +13 -0
  349. package/dist/types/modes/components/btw-panel.d.ts +16 -0
  350. package/dist/types/modes/components/compaction-summary-message.d.ts +13 -0
  351. package/dist/types/modes/components/countdown-timer.d.ts +14 -0
  352. package/dist/types/modes/components/custom-editor.d.ts +47 -0
  353. package/dist/types/modes/components/custom-message.d.ts +15 -0
  354. package/dist/types/modes/components/diff.d.ts +11 -0
  355. package/dist/types/modes/components/dynamic-border.d.ts +14 -0
  356. package/dist/types/modes/components/eval-execution.d.ts +23 -0
  357. package/dist/types/modes/components/execution-shared.d.ts +46 -0
  358. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
  359. package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
  360. package/dist/types/modes/components/extensions/index.d.ts +8 -0
  361. package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
  362. package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
  363. package/dist/types/modes/components/extensions/types.d.ts +151 -0
  364. package/dist/types/modes/components/footer.d.ts +30 -0
  365. package/dist/types/modes/components/history-search.d.ts +7 -0
  366. package/dist/types/modes/components/hook-editor.d.ts +18 -0
  367. package/dist/types/modes/components/hook-input.d.ts +15 -0
  368. package/dist/types/modes/components/hook-message.d.ts +15 -0
  369. package/dist/types/modes/components/hook-selector.d.ts +23 -0
  370. package/dist/types/modes/components/index.d.ts +35 -0
  371. package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
  372. package/dist/types/modes/components/login-dialog.d.ts +32 -0
  373. package/dist/types/modes/components/message-frame.d.ts +42 -0
  374. package/dist/types/modes/components/model-selector.d.ts +26 -0
  375. package/dist/types/modes/components/oauth-selector.d.ts +14 -0
  376. package/dist/types/modes/components/plugin-selector.d.ts +26 -0
  377. package/dist/types/modes/components/plugin-settings.d.ts +66 -0
  378. package/dist/types/modes/components/provider-onboarding-selector.d.ts +7 -0
  379. package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
  380. package/dist/types/modes/components/read-tool-group.d.ts +30 -0
  381. package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +25 -0
  382. package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
  383. package/dist/types/modes/components/session-selector.d.ts +30 -0
  384. package/dist/types/modes/components/settings-defs.d.ts +50 -0
  385. package/dist/types/modes/components/settings-selector.d.ts +54 -0
  386. package/dist/types/modes/components/show-images-selector.d.ts +9 -0
  387. package/dist/types/modes/components/skill-hud/render.d.ts +2 -0
  388. package/dist/types/modes/components/skill-message.d.ts +9 -0
  389. package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
  390. package/dist/types/modes/components/status-line/git-utils.d.ts +22 -0
  391. package/dist/types/modes/components/status-line/index.d.ts +4 -0
  392. package/dist/types/modes/components/status-line/presets.d.ts +3 -0
  393. package/dist/types/modes/components/status-line/segments.d.ts +5 -0
  394. package/dist/types/modes/components/status-line/separators.d.ts +3 -0
  395. package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
  396. package/dist/types/modes/components/status-line/types.d.ts +80 -0
  397. package/dist/types/modes/components/status-line.d.ts +80 -0
  398. package/dist/types/modes/components/theme-selector.d.ts +10 -0
  399. package/dist/types/modes/components/thinking-selector.d.ts +10 -0
  400. package/dist/types/modes/components/todo-reminder.d.ts +13 -0
  401. package/dist/types/modes/components/tool-execution.d.ts +53 -0
  402. package/dist/types/modes/components/tree-selector.d.ts +31 -0
  403. package/dist/types/modes/components/ttsr-notification.d.ts +13 -0
  404. package/dist/types/modes/components/user-message-selector.d.ts +28 -0
  405. package/dist/types/modes/components/user-message.d.ts +7 -0
  406. package/dist/types/modes/components/visual-truncate.d.ts +19 -0
  407. package/dist/types/modes/components/welcome.d.ts +34 -0
  408. package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
  409. package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
  410. package/dist/types/modes/controllers/command-controller.d.ts +36 -0
  411. package/dist/types/modes/controllers/event-controller.d.ts +12 -0
  412. package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
  413. package/dist/types/modes/controllers/input-controller.d.ts +35 -0
  414. package/dist/types/modes/controllers/runtime-mcp-command-controller.d.ts +10 -0
  415. package/dist/types/modes/controllers/selector-controller.d.ts +46 -0
  416. package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
  417. package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
  418. package/dist/types/modes/emoji-autocomplete.d.ts +16 -0
  419. package/dist/types/modes/index.d.ts +9 -0
  420. package/dist/types/modes/interactive-mode.d.ts +271 -0
  421. package/dist/types/modes/loop-limit.d.ts +22 -0
  422. package/dist/types/modes/oauth-manual-input.d.ts +8 -0
  423. package/dist/types/modes/print-mode.d.ts +27 -0
  424. package/dist/types/modes/prompt-action-autocomplete.d.ts +46 -0
  425. package/dist/types/modes/rpc/host-tools.d.ts +16 -0
  426. package/dist/types/modes/rpc/host-uris.d.ts +38 -0
  427. package/dist/types/modes/rpc/rpc-client.d.ts +249 -0
  428. package/dist/types/modes/rpc/rpc-mode.d.ts +17 -0
  429. package/dist/types/modes/rpc/rpc-types.d.ts +586 -0
  430. package/dist/types/modes/runtime-init.d.ts +21 -0
  431. package/dist/types/modes/session-observer-registry.d.ts +26 -0
  432. package/dist/types/modes/shared.d.ts +15 -0
  433. package/dist/types/modes/theme/defaults/index.d.ts +9559 -0
  434. package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
  435. package/dist/types/modes/theme/shimmer.d.ts +38 -0
  436. package/dist/types/modes/theme/theme.d.ts +273 -0
  437. package/dist/types/modes/types.d.ts +278 -0
  438. package/dist/types/modes/utils/context-usage.d.ts +47 -0
  439. package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
  440. package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
  441. package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
  442. package/dist/types/modes/utils/ui-helpers.d.ts +53 -0
  443. package/dist/types/plan-mode/approved-plan.d.ts +49 -0
  444. package/dist/types/plan-mode/state.d.ts +6 -0
  445. package/dist/types/registry/agent-registry.d.ts +62 -0
  446. package/dist/types/runtime-mcp/client.d.ts +74 -0
  447. package/dist/types/runtime-mcp/config-writer.d.ts +53 -0
  448. package/dist/types/runtime-mcp/config.d.ts +75 -0
  449. package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +7 -0
  450. package/dist/types/runtime-mcp/index.d.ts +18 -0
  451. package/dist/types/runtime-mcp/json-rpc.d.ts +22 -0
  452. package/dist/types/runtime-mcp/loader.d.ts +43 -0
  453. package/dist/types/runtime-mcp/manager.d.ts +193 -0
  454. package/dist/types/runtime-mcp/oauth-discovery.d.ts +40 -0
  455. package/dist/types/runtime-mcp/oauth-flow.d.ts +59 -0
  456. package/dist/types/runtime-mcp/render.d.ts +25 -0
  457. package/dist/types/runtime-mcp/smithery-auth.d.ts +16 -0
  458. package/dist/types/runtime-mcp/smithery-connect.d.ts +38 -0
  459. package/dist/types/runtime-mcp/smithery-registry.d.ts +51 -0
  460. package/dist/types/runtime-mcp/tool-bridge.d.ts +86 -0
  461. package/dist/types/runtime-mcp/tool-cache.d.ts +8 -0
  462. package/dist/types/runtime-mcp/transports/http.d.ts +36 -0
  463. package/dist/types/runtime-mcp/transports/index.d.ts +5 -0
  464. package/dist/types/runtime-mcp/transports/stdio.d.ts +32 -0
  465. package/dist/types/runtime-mcp/types.d.ts +333 -0
  466. package/dist/types/sdk.d.ts +216 -0
  467. package/dist/types/secrets/index.d.ts +9 -0
  468. package/dist/types/secrets/obfuscator.d.ts +23 -0
  469. package/dist/types/secrets/regex.d.ts +2 -0
  470. package/dist/types/session/agent-session.d.ts +930 -0
  471. package/dist/types/session/agent-storage.d.ts +100 -0
  472. package/dist/types/session/artifacts.d.ts +61 -0
  473. package/dist/types/session/auth-broker-config.d.ts +13 -0
  474. package/dist/types/session/auth-storage.d.ts +6 -0
  475. package/dist/types/session/blob-store.d.ts +63 -0
  476. package/dist/types/session/client-bridge.d.ts +88 -0
  477. package/dist/types/session/history-storage.d.ts +16 -0
  478. package/dist/types/session/messages.d.ts +162 -0
  479. package/dist/types/session/session-dump-format.d.ts +22 -0
  480. package/dist/types/session/session-manager.d.ts +549 -0
  481. package/dist/types/session/session-storage.d.ts +82 -0
  482. package/dist/types/session/streaming-output.d.ts +185 -0
  483. package/dist/types/session/tool-choice-queue.d.ts +78 -0
  484. package/dist/types/session/yield-queue.d.ts +24 -0
  485. package/dist/types/setup/model-onboarding-guidance.d.ts +8 -0
  486. package/dist/types/setup/provider-onboarding.d.ts +28 -0
  487. package/dist/types/skill-state/active-state.d.ts +50 -0
  488. package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
  489. package/dist/types/slash-commands/builtin-registry.d.ts +23 -0
  490. package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
  491. package/dist/types/slash-commands/helpers/format.d.ts +10 -0
  492. package/dist/types/slash-commands/helpers/mcp.d.ts +3 -0
  493. package/dist/types/slash-commands/helpers/parse.d.ts +33 -0
  494. package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
  495. package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
  496. package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
  497. package/dist/types/slash-commands/types.d.ts +118 -0
  498. package/dist/types/ssh/config-writer.d.ts +49 -0
  499. package/dist/types/ssh/connection-manager.d.ts +33 -0
  500. package/dist/types/ssh/ssh-executor.d.ts +37 -0
  501. package/dist/types/ssh/sshfs-mount.d.ts +6 -0
  502. package/dist/types/ssh/utils.d.ts +2 -0
  503. package/dist/types/stt/downloader.d.ts +9 -0
  504. package/dist/types/stt/index.d.ts +3 -0
  505. package/dist/types/stt/recorder.d.ts +13 -0
  506. package/dist/types/stt/setup.d.ts +18 -0
  507. package/dist/types/stt/stt-controller.d.ts +16 -0
  508. package/dist/types/stt/transcriber.d.ts +16 -0
  509. package/dist/types/system-prompt.d.ts +93 -0
  510. package/dist/types/task/agents.d.ts +28 -0
  511. package/dist/types/task/commands.d.ts +35 -0
  512. package/dist/types/task/discovery.d.ts +19 -0
  513. package/dist/types/task/executor.d.ts +106 -0
  514. package/dist/types/task/gjc-command.d.ts +7 -0
  515. package/dist/types/task/index.d.ts +38 -0
  516. package/dist/types/task/name-generator.d.ts +16 -0
  517. package/dist/types/task/output-manager.d.ts +36 -0
  518. package/dist/types/task/parallel.d.ts +34 -0
  519. package/dist/types/task/render.d.ts +22 -0
  520. package/dist/types/task/simple-mode.d.ts +8 -0
  521. package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
  522. package/dist/types/task/types.d.ts +295 -0
  523. package/dist/types/task/worktree.d.ts +94 -0
  524. package/dist/types/thinking.d.ts +30 -0
  525. package/dist/types/tool-discovery/tool-index.d.ts +112 -0
  526. package/dist/types/tools/archive-reader.d.ts +40 -0
  527. package/dist/types/tools/ask.d.ts +109 -0
  528. package/dist/types/tools/ast-edit.d.ts +77 -0
  529. package/dist/types/tools/ast-grep.d.ts +69 -0
  530. package/dist/types/tools/auto-generated-guard.d.ts +17 -0
  531. package/dist/types/tools/bash-command-fixup.d.ts +11 -0
  532. package/dist/types/tools/bash-interactive.d.ts +16 -0
  533. package/dist/types/tools/bash-interceptor.d.ts +24 -0
  534. package/dist/types/tools/bash-pty-selection.d.ts +7 -0
  535. package/dist/types/tools/bash-skill-urls.d.ts +31 -0
  536. package/dist/types/tools/bash.d.ts +130 -0
  537. package/dist/types/tools/browser/attach.d.ts +34 -0
  538. package/dist/types/tools/browser/launch.d.ts +62 -0
  539. package/dist/types/tools/browser/readable.d.ts +17 -0
  540. package/dist/types/tools/browser/registry.d.ts +42 -0
  541. package/dist/types/tools/browser/render.d.ts +50 -0
  542. package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
  543. package/dist/types/tools/browser/tab-supervisor.d.ts +63 -0
  544. package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
  545. package/dist/types/tools/browser/tab-worker.d.ts +19 -0
  546. package/dist/types/tools/browser.d.ts +114 -0
  547. package/dist/types/tools/calculator.d.ts +76 -0
  548. package/dist/types/tools/checkpoint.d.ts +63 -0
  549. package/dist/types/tools/conflict-detect.d.ts +205 -0
  550. package/dist/types/tools/context.d.ts +19 -0
  551. package/dist/types/tools/debug.d.ts +209 -0
  552. package/dist/types/tools/eval.d.ts +108 -0
  553. package/dist/types/tools/fetch.d.ts +61 -0
  554. package/dist/types/tools/file-recorder.d.ts +13 -0
  555. package/dist/types/tools/find.d.ts +95 -0
  556. package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
  557. package/dist/types/tools/gh-format.d.ts +6 -0
  558. package/dist/types/tools/gh-renderer.d.ts +25 -0
  559. package/dist/types/tools/gh.d.ts +356 -0
  560. package/dist/types/tools/github-cache.d.ts +103 -0
  561. package/dist/types/tools/grouped-file-output.d.ts +36 -0
  562. package/dist/types/tools/hindsight-recall.d.ts +23 -0
  563. package/dist/types/tools/hindsight-reflect.d.ts +25 -0
  564. package/dist/types/tools/hindsight-retain.d.ts +29 -0
  565. package/dist/types/tools/image-gen.d.ts +78 -0
  566. package/dist/types/tools/index.d.ts +242 -0
  567. package/dist/types/tools/inspect-image-renderer.d.ts +26 -0
  568. package/dist/types/tools/inspect-image.d.ts +31 -0
  569. package/dist/types/tools/irc.d.ts +79 -0
  570. package/dist/types/tools/job.d.ts +65 -0
  571. package/dist/types/tools/json-tree.d.ts +23 -0
  572. package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
  573. package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
  574. package/dist/types/tools/jtd-utils.d.ts +42 -0
  575. package/dist/types/tools/list-limit.d.ts +12 -0
  576. package/dist/types/tools/match-line-format.d.ts +11 -0
  577. package/dist/types/tools/output-meta.d.ts +204 -0
  578. package/dist/types/tools/path-utils.d.ts +146 -0
  579. package/dist/types/tools/plan-mode-guard.d.ts +18 -0
  580. package/dist/types/tools/read.d.ts +85 -0
  581. package/dist/types/tools/recipe/index.d.ts +45 -0
  582. package/dist/types/tools/recipe/render.d.ts +36 -0
  583. package/dist/types/tools/recipe/runner.d.ts +60 -0
  584. package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
  585. package/dist/types/tools/recipe/runners/index.d.ts +2 -0
  586. package/dist/types/tools/recipe/runners/just.d.ts +2 -0
  587. package/dist/types/tools/recipe/runners/make.d.ts +2 -0
  588. package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
  589. package/dist/types/tools/recipe/runners/task.d.ts +2 -0
  590. package/dist/types/tools/render-mermaid.d.ts +37 -0
  591. package/dist/types/tools/render-utils.d.ts +158 -0
  592. package/dist/types/tools/renderers.d.ts +26 -0
  593. package/dist/types/tools/resolve.d.ts +90 -0
  594. package/dist/types/tools/review.d.ts +63 -0
  595. package/dist/types/tools/search-tool-bm25.d.ts +65 -0
  596. package/dist/types/tools/search.d.ts +93 -0
  597. package/dist/types/tools/sqlite-reader.d.ts +93 -0
  598. package/dist/types/tools/ssh.d.ts +67 -0
  599. package/dist/types/tools/subagent.d.ts +58 -0
  600. package/dist/types/tools/todo-write.d.ts +120 -0
  601. package/dist/types/tools/tool-errors.d.ts +33 -0
  602. package/dist/types/tools/tool-result.d.ts +30 -0
  603. package/dist/types/tools/tool-timeouts.d.ts +51 -0
  604. package/dist/types/tools/vim.d.ts +58 -0
  605. package/dist/types/tools/write.d.ts +59 -0
  606. package/dist/types/tools/yield.d.ts +25 -0
  607. package/dist/types/tui/code-cell.d.ts +32 -0
  608. package/dist/types/tui/file-list.d.ts +22 -0
  609. package/dist/types/tui/hyperlink.d.ts +42 -0
  610. package/dist/types/tui/index.d.ts +11 -0
  611. package/dist/types/tui/output-block.d.ts +28 -0
  612. package/dist/types/tui/status-line.d.ts +18 -0
  613. package/dist/types/tui/tree-list.d.ts +19 -0
  614. package/dist/types/tui/types.d.ts +13 -0
  615. package/dist/types/tui/utils.d.ts +36 -0
  616. package/dist/types/utils/changelog.d.ts +20 -0
  617. package/dist/types/utils/clipboard.d.ts +22 -0
  618. package/dist/types/utils/command-args.d.ts +9 -0
  619. package/dist/types/utils/commit-message-generator.d.ts +7 -0
  620. package/dist/types/utils/edit-mode.d.ts +13 -0
  621. package/dist/types/utils/event-bus.d.ts +6 -0
  622. package/dist/types/utils/external-editor.d.ts +17 -0
  623. package/dist/types/utils/file-display-mode.d.ts +27 -0
  624. package/dist/types/utils/file-mentions.d.ts +11 -0
  625. package/dist/types/utils/git.d.ts +361 -0
  626. package/dist/types/utils/image-loading.d.ts +26 -0
  627. package/dist/types/utils/image-resize.d.ts +39 -0
  628. package/dist/types/utils/lang-from-path.d.ts +8 -0
  629. package/dist/types/utils/markit.d.ts +7 -0
  630. package/dist/types/utils/open.d.ts +2 -0
  631. package/dist/types/utils/session-color.d.ts +10 -0
  632. package/dist/types/utils/shell-snapshot.d.ts +5 -0
  633. package/dist/types/utils/sixel.d.ts +21 -0
  634. package/dist/types/utils/title-generator.d.ts +31 -0
  635. package/dist/types/utils/tool-choice.d.ts +7 -0
  636. package/dist/types/utils/tools-manager.d.ts +9 -0
  637. package/dist/types/vim/buffer.d.ts +41 -0
  638. package/dist/types/vim/commands.d.ts +6 -0
  639. package/dist/types/vim/engine.d.ts +47 -0
  640. package/dist/types/vim/parser.d.ts +3 -0
  641. package/dist/types/vim/render.d.ts +25 -0
  642. package/dist/types/vim/types.d.ts +182 -0
  643. package/dist/types/web/kagi.d.ts +23 -0
  644. package/dist/types/web/parallel.d.ts +58 -0
  645. package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
  646. package/dist/types/web/scrapers/arxiv.d.ts +5 -0
  647. package/dist/types/web/scrapers/aur.d.ts +5 -0
  648. package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
  649. package/dist/types/web/scrapers/bluesky.d.ts +5 -0
  650. package/dist/types/web/scrapers/brew.d.ts +5 -0
  651. package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
  652. package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
  653. package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
  654. package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
  655. package/dist/types/web/scrapers/clojars.d.ts +5 -0
  656. package/dist/types/web/scrapers/coingecko.d.ts +5 -0
  657. package/dist/types/web/scrapers/crates-io.d.ts +5 -0
  658. package/dist/types/web/scrapers/crossref.d.ts +2 -0
  659. package/dist/types/web/scrapers/devto.d.ts +5 -0
  660. package/dist/types/web/scrapers/discogs.d.ts +8 -0
  661. package/dist/types/web/scrapers/discourse.d.ts +5 -0
  662. package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
  663. package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
  664. package/dist/types/web/scrapers/fdroid.d.ts +5 -0
  665. package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
  666. package/dist/types/web/scrapers/flathub.d.ts +2 -0
  667. package/dist/types/web/scrapers/github-gist.d.ts +5 -0
  668. package/dist/types/web/scrapers/github.d.ts +12 -0
  669. package/dist/types/web/scrapers/gitlab.d.ts +5 -0
  670. package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
  671. package/dist/types/web/scrapers/hackage.d.ts +5 -0
  672. package/dist/types/web/scrapers/hackernews.d.ts +2 -0
  673. package/dist/types/web/scrapers/hex.d.ts +5 -0
  674. package/dist/types/web/scrapers/huggingface.d.ts +2 -0
  675. package/dist/types/web/scrapers/iacr.d.ts +5 -0
  676. package/dist/types/web/scrapers/index.d.ts +84 -0
  677. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
  678. package/dist/types/web/scrapers/lemmy.d.ts +2 -0
  679. package/dist/types/web/scrapers/lobsters.d.ts +5 -0
  680. package/dist/types/web/scrapers/mastodon.d.ts +5 -0
  681. package/dist/types/web/scrapers/maven.d.ts +6 -0
  682. package/dist/types/web/scrapers/mdn.d.ts +2 -0
  683. package/dist/types/web/scrapers/metacpan.d.ts +5 -0
  684. package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
  685. package/dist/types/web/scrapers/npm.d.ts +5 -0
  686. package/dist/types/web/scrapers/nuget.d.ts +5 -0
  687. package/dist/types/web/scrapers/nvd.d.ts +5 -0
  688. package/dist/types/web/scrapers/ollama.d.ts +2 -0
  689. package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
  690. package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
  691. package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
  692. package/dist/types/web/scrapers/orcid.d.ts +5 -0
  693. package/dist/types/web/scrapers/osv.d.ts +5 -0
  694. package/dist/types/web/scrapers/packagist.d.ts +5 -0
  695. package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
  696. package/dist/types/web/scrapers/pubmed.d.ts +5 -0
  697. package/dist/types/web/scrapers/pypi.d.ts +5 -0
  698. package/dist/types/web/scrapers/rawg.d.ts +2 -0
  699. package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
  700. package/dist/types/web/scrapers/reddit.d.ts +5 -0
  701. package/dist/types/web/scrapers/repology.d.ts +5 -0
  702. package/dist/types/web/scrapers/rfc.d.ts +5 -0
  703. package/dist/types/web/scrapers/rubygems.d.ts +5 -0
  704. package/dist/types/web/scrapers/searchcode.d.ts +2 -0
  705. package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
  706. package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
  707. package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
  708. package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
  709. package/dist/types/web/scrapers/spdx.d.ts +5 -0
  710. package/dist/types/web/scrapers/spotify.d.ts +8 -0
  711. package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
  712. package/dist/types/web/scrapers/terraform.d.ts +5 -0
  713. package/dist/types/web/scrapers/tldr.d.ts +7 -0
  714. package/dist/types/web/scrapers/twitter.d.ts +5 -0
  715. package/dist/types/web/scrapers/types.d.ts +78 -0
  716. package/dist/types/web/scrapers/utils.d.ts +26 -0
  717. package/dist/types/web/scrapers/vimeo.d.ts +5 -0
  718. package/dist/types/web/scrapers/vscode-marketplace.d.ts +5 -0
  719. package/dist/types/web/scrapers/w3c.d.ts +2 -0
  720. package/dist/types/web/scrapers/wikidata.d.ts +5 -0
  721. package/dist/types/web/scrapers/wikipedia.d.ts +5 -0
  722. package/dist/types/web/scrapers/youtube.d.ts +5 -0
  723. package/dist/types/web/search/index.d.ts +84 -0
  724. package/dist/types/web/search/provider.d.ts +21 -0
  725. package/dist/types/web/search/providers/anthropic.d.ts +32 -0
  726. package/dist/types/web/search/providers/base.d.ts +67 -0
  727. package/dist/types/web/search/providers/brave.d.ts +27 -0
  728. package/dist/types/web/search/providers/codex.d.ts +35 -0
  729. package/dist/types/web/search/providers/exa.d.ts +52 -0
  730. package/dist/types/web/search/providers/gemini.d.ts +57 -0
  731. package/dist/types/web/search/providers/jina.d.ts +26 -0
  732. package/dist/types/web/search/providers/kagi.d.ts +24 -0
  733. package/dist/types/web/search/providers/kimi.d.ts +27 -0
  734. package/dist/types/web/search/providers/parallel.d.ts +15 -0
  735. package/dist/types/web/search/providers/perplexity.d.ts +38 -0
  736. package/dist/types/web/search/providers/searxng.d.ts +44 -0
  737. package/dist/types/web/search/providers/synthetic.d.ts +21 -0
  738. package/dist/types/web/search/providers/tavily.d.ts +29 -0
  739. package/dist/types/web/search/providers/utils.d.ts +52 -0
  740. package/dist/types/web/search/providers/zai.d.ts +28 -0
  741. package/dist/types/web/search/render.d.ts +35 -0
  742. package/dist/types/web/search/types.d.ts +344 -0
  743. package/dist/types/web/search/utils.d.ts +4 -0
  744. package/dist/types/workspace-tree.d.ts +42 -0
  745. package/examples/README.md +21 -0
  746. package/examples/custom-tools/README.md +104 -0
  747. package/examples/custom-tools/hello/index.ts +20 -0
  748. package/examples/extensions/README.md +141 -0
  749. package/examples/extensions/api-demo.ts +79 -0
  750. package/examples/extensions/chalk-logger.ts +25 -0
  751. package/examples/extensions/hello.ts +31 -0
  752. package/examples/extensions/pirate.ts +43 -0
  753. package/examples/extensions/plan-mode.ts +549 -0
  754. package/examples/extensions/reload-runtime.ts +38 -0
  755. package/examples/extensions/tools.ts +144 -0
  756. package/examples/extensions/with-deps/index.ts +36 -0
  757. package/examples/extensions/with-deps/package-lock.json +31 -0
  758. package/examples/extensions/with-deps/package.json +16 -0
  759. package/examples/hooks/README.md +56 -0
  760. package/examples/hooks/auto-commit-on-exit.ts +48 -0
  761. package/examples/hooks/confirm-destructive.ts +58 -0
  762. package/examples/hooks/custom-compaction.ts +115 -0
  763. package/examples/hooks/dirty-repo-guard.ts +51 -0
  764. package/examples/hooks/file-trigger.ts +40 -0
  765. package/examples/hooks/git-checkpoint.ts +52 -0
  766. package/examples/hooks/handoff.ts +149 -0
  767. package/examples/hooks/permission-gate.ts +33 -0
  768. package/examples/hooks/protected-paths.ts +29 -0
  769. package/examples/hooks/qna.ts +118 -0
  770. package/examples/hooks/status-line.ts +39 -0
  771. package/examples/sdk/01-minimal.ts +21 -0
  772. package/examples/sdk/02-custom-model.ts +49 -0
  773. package/examples/sdk/03-custom-prompt.ts +46 -0
  774. package/examples/sdk/04-skills.ts +43 -0
  775. package/examples/sdk/06-extensions.ts +82 -0
  776. package/examples/sdk/06-hooks.ts +61 -0
  777. package/examples/sdk/07-context-files.ts +35 -0
  778. package/examples/sdk/08-prompt-templates.ts +41 -0
  779. package/examples/sdk/08-slash-commands.ts +46 -0
  780. package/examples/sdk/09-api-keys-and-oauth.ts +54 -0
  781. package/examples/sdk/11-sessions.ts +47 -0
  782. package/examples/sdk/README.md +172 -0
  783. package/package.json +533 -0
  784. package/scripts/build-binary.ts +77 -0
  785. package/scripts/format-prompts.ts +68 -0
  786. package/scripts/generate-docs-index.ts +71 -0
  787. package/scripts/generate-template.ts +33 -0
  788. package/src/async/index.ts +2 -0
  789. package/src/async/job-manager.ts +586 -0
  790. package/src/async/support.ts +6 -0
  791. package/src/autoresearch/command-resume.md +14 -0
  792. package/src/autoresearch/dashboard.ts +446 -0
  793. package/src/autoresearch/git.ts +319 -0
  794. package/src/autoresearch/helpers.ts +218 -0
  795. package/src/autoresearch/index.ts +536 -0
  796. package/src/autoresearch/prompt-setup.md +43 -0
  797. package/src/autoresearch/prompt.md +103 -0
  798. package/src/autoresearch/resume-message.md +10 -0
  799. package/src/autoresearch/state.ts +273 -0
  800. package/src/autoresearch/storage.ts +699 -0
  801. package/src/autoresearch/tools/init-experiment.ts +272 -0
  802. package/src/autoresearch/tools/log-experiment.ts +524 -0
  803. package/src/autoresearch/tools/run-experiment.ts +475 -0
  804. package/src/autoresearch/tools/update-notes.ts +109 -0
  805. package/src/autoresearch/types.ts +168 -0
  806. package/src/bun-imports.d.ts +28 -0
  807. package/src/capability/context-file.ts +44 -0
  808. package/src/capability/extension-module.ts +34 -0
  809. package/src/capability/extension.ts +47 -0
  810. package/src/capability/fs.ts +107 -0
  811. package/src/capability/hook.ts +40 -0
  812. package/src/capability/index.ts +436 -0
  813. package/src/capability/instruction.ts +37 -0
  814. package/src/capability/mcp.ts +74 -0
  815. package/src/capability/prompt.ts +35 -0
  816. package/src/capability/rule.ts +244 -0
  817. package/src/capability/settings.ts +34 -0
  818. package/src/capability/skill.ts +56 -0
  819. package/src/capability/slash-command.ts +40 -0
  820. package/src/capability/ssh.ts +41 -0
  821. package/src/capability/system-prompt.ts +34 -0
  822. package/src/capability/tool.ts +38 -0
  823. package/src/capability/types.ts +168 -0
  824. package/src/cli/agents-cli.ts +138 -0
  825. package/src/cli/args.ts +269 -0
  826. package/src/cli/auth-broker-cli.ts +746 -0
  827. package/src/cli/auth-gateway-cli.ts +411 -0
  828. package/src/cli/classify-install-target.ts +50 -0
  829. package/src/cli/commands/init-xdg.ts +27 -0
  830. package/src/cli/config-cli.ts +418 -0
  831. package/src/cli/file-processor.ts +123 -0
  832. package/src/cli/grep-cli.ts +160 -0
  833. package/src/cli/initial-message.ts +58 -0
  834. package/src/cli/list-models.ts +194 -0
  835. package/src/cli/plugin-cli.ts +942 -0
  836. package/src/cli/read-cli.ts +57 -0
  837. package/src/cli/session-picker.ts +52 -0
  838. package/src/cli/setup-cli.ts +433 -0
  839. package/src/cli/shell-cli.ts +176 -0
  840. package/src/cli/ssh-cli.ts +179 -0
  841. package/src/cli/stats-cli.ts +238 -0
  842. package/src/cli/update-cli.ts +408 -0
  843. package/src/cli/web-search-cli.ts +133 -0
  844. package/src/cli/worktree-cli.ts +291 -0
  845. package/src/cli.ts +99 -0
  846. package/src/commands/acp.ts +24 -0
  847. package/src/commands/agents.ts +57 -0
  848. package/src/commands/auth-broker.ts +96 -0
  849. package/src/commands/auth-gateway.ts +63 -0
  850. package/src/commands/codex-native-hook.ts +11 -0
  851. package/src/commands/commit.ts +46 -0
  852. package/src/commands/config.ts +51 -0
  853. package/src/commands/deep-interview.ts +12 -0
  854. package/src/commands/gjc-runtime-bridge.ts +81 -0
  855. package/src/commands/grep.ts +48 -0
  856. package/src/commands/launch.ts +161 -0
  857. package/src/commands/plugin.ts +78 -0
  858. package/src/commands/question.ts +12 -0
  859. package/src/commands/ralplan.ts +12 -0
  860. package/src/commands/read.ts +35 -0
  861. package/src/commands/setup.ts +52 -0
  862. package/src/commands/shell.ts +29 -0
  863. package/src/commands/ssh.ts +60 -0
  864. package/src/commands/state.ts +12 -0
  865. package/src/commands/stats.ts +29 -0
  866. package/src/commands/team.ts +130 -0
  867. package/src/commands/ultragoal.ts +32 -0
  868. package/src/commands/update.ts +21 -0
  869. package/src/commands/web-search.ts +42 -0
  870. package/src/commands/worktree.ts +56 -0
  871. package/src/commit/agentic/agent.ts +316 -0
  872. package/src/commit/agentic/fallback.ts +96 -0
  873. package/src/commit/agentic/index.ts +355 -0
  874. package/src/commit/agentic/prompts/analyze-file.md +22 -0
  875. package/src/commit/agentic/prompts/session-user.md +25 -0
  876. package/src/commit/agentic/prompts/split-confirm.md +1 -0
  877. package/src/commit/agentic/prompts/system.md +38 -0
  878. package/src/commit/agentic/state.ts +60 -0
  879. package/src/commit/agentic/tools/analyze-file.ts +127 -0
  880. package/src/commit/agentic/tools/git-file-diff.ts +191 -0
  881. package/src/commit/agentic/tools/git-hunk.ts +50 -0
  882. package/src/commit/agentic/tools/git-overview.ts +81 -0
  883. package/src/commit/agentic/tools/index.ts +54 -0
  884. package/src/commit/agentic/tools/propose-changelog.ts +144 -0
  885. package/src/commit/agentic/tools/propose-commit.ts +109 -0
  886. package/src/commit/agentic/tools/recent-commits.ts +81 -0
  887. package/src/commit/agentic/tools/schemas.ts +23 -0
  888. package/src/commit/agentic/tools/split-commit.ts +238 -0
  889. package/src/commit/agentic/topo-sort.ts +44 -0
  890. package/src/commit/agentic/trivial.ts +51 -0
  891. package/src/commit/agentic/validation.ts +183 -0
  892. package/src/commit/analysis/conventional.ts +64 -0
  893. package/src/commit/analysis/index.ts +4 -0
  894. package/src/commit/analysis/scope.ts +242 -0
  895. package/src/commit/analysis/summary.ts +105 -0
  896. package/src/commit/analysis/validation.ts +66 -0
  897. package/src/commit/changelog/detect.ts +40 -0
  898. package/src/commit/changelog/generate.ts +97 -0
  899. package/src/commit/changelog/index.ts +234 -0
  900. package/src/commit/changelog/parse.ts +44 -0
  901. package/src/commit/cli.ts +85 -0
  902. package/src/commit/git/diff.ts +148 -0
  903. package/src/commit/index.ts +5 -0
  904. package/src/commit/map-reduce/index.ts +69 -0
  905. package/src/commit/map-reduce/map-phase.ts +193 -0
  906. package/src/commit/map-reduce/reduce-phase.ts +49 -0
  907. package/src/commit/map-reduce/utils.ts +9 -0
  908. package/src/commit/message.ts +11 -0
  909. package/src/commit/model-selection.ts +66 -0
  910. package/src/commit/pipeline.ts +243 -0
  911. package/src/commit/prompts/analysis-system.md +148 -0
  912. package/src/commit/prompts/analysis-user.md +38 -0
  913. package/src/commit/prompts/changelog-system.md +50 -0
  914. package/src/commit/prompts/changelog-user.md +18 -0
  915. package/src/commit/prompts/file-observer-system.md +24 -0
  916. package/src/commit/prompts/file-observer-user.md +8 -0
  917. package/src/commit/prompts/reduce-system.md +50 -0
  918. package/src/commit/prompts/reduce-user.md +17 -0
  919. package/src/commit/prompts/summary-retry.md +3 -0
  920. package/src/commit/prompts/summary-system.md +38 -0
  921. package/src/commit/prompts/summary-user.md +13 -0
  922. package/src/commit/prompts/types-description.md +2 -0
  923. package/src/commit/shared-llm.ts +77 -0
  924. package/src/commit/types.ts +118 -0
  925. package/src/commit/utils/exclusions.ts +42 -0
  926. package/src/commit/utils.ts +58 -0
  927. package/src/config/config-file.ts +232 -0
  928. package/src/config/file-lock.ts +121 -0
  929. package/src/config/keybindings.ts +493 -0
  930. package/src/config/mcp-schema.json +230 -0
  931. package/src/config/model-equivalence.ts +811 -0
  932. package/src/config/model-registry.ts +2384 -0
  933. package/src/config/model-resolver.ts +1398 -0
  934. package/src/config/models-config-schema.ts +175 -0
  935. package/src/config/prompt-templates.ts +310 -0
  936. package/src/config/resolve-config-value.ts +94 -0
  937. package/src/config/settings-schema.ts +2939 -0
  938. package/src/config/settings.ts +919 -0
  939. package/src/config/skill-settings-defaults.ts +27 -0
  940. package/src/config.ts +212 -0
  941. package/src/cursor.ts +350 -0
  942. package/src/dap/client.ts +675 -0
  943. package/src/dap/config.ts +150 -0
  944. package/src/dap/defaults.json +211 -0
  945. package/src/dap/index.ts +4 -0
  946. package/src/dap/session.ts +1306 -0
  947. package/src/dap/types.ts +600 -0
  948. package/src/debug/index.ts +459 -0
  949. package/src/debug/log-formatting.ts +58 -0
  950. package/src/debug/log-viewer.ts +908 -0
  951. package/src/debug/profiler.ts +162 -0
  952. package/src/debug/raw-sse-buffer.ts +270 -0
  953. package/src/debug/raw-sse.ts +213 -0
  954. package/src/debug/report-bundle.ts +365 -0
  955. package/src/debug/system-info.ts +111 -0
  956. package/src/defaults/gjc/skills/deep-interview/SKILL.md +795 -0
  957. package/src/defaults/gjc/skills/ralplan/SKILL.md +142 -0
  958. package/src/defaults/gjc/skills/team/SKILL.md +373 -0
  959. package/src/defaults/gjc/skills/ultragoal/SKILL.md +176 -0
  960. package/src/defaults/gjc-defaults.ts +151 -0
  961. package/src/discovery/agents-md.ts +67 -0
  962. package/src/discovery/agents.ts +230 -0
  963. package/src/discovery/builtin.ts +932 -0
  964. package/src/discovery/claude-plugins.ts +387 -0
  965. package/src/discovery/claude.ts +313 -0
  966. package/src/discovery/cline.ts +83 -0
  967. package/src/discovery/codex.ts +330 -0
  968. package/src/discovery/cursor.ts +220 -0
  969. package/src/discovery/gemini.ts +383 -0
  970. package/src/discovery/github.ts +118 -0
  971. package/src/discovery/helpers.ts +964 -0
  972. package/src/discovery/index.ts +76 -0
  973. package/src/discovery/mcp-json.ts +171 -0
  974. package/src/discovery/opencode.ts +398 -0
  975. package/src/discovery/plugin-dir-roots.ts +28 -0
  976. package/src/discovery/ssh.ts +153 -0
  977. package/src/discovery/substitute-plugin-root.ts +29 -0
  978. package/src/discovery/vscode.ts +105 -0
  979. package/src/discovery/windsurf.ts +147 -0
  980. package/src/edit/apply-patch/index.ts +87 -0
  981. package/src/edit/apply-patch/parser.ts +174 -0
  982. package/src/edit/diff.ts +810 -0
  983. package/src/edit/file-read-cache.ts +95 -0
  984. package/src/edit/index.ts +528 -0
  985. package/src/edit/modes/apply-patch.lark +19 -0
  986. package/src/edit/modes/apply-patch.ts +53 -0
  987. package/src/edit/modes/patch.ts +1835 -0
  988. package/src/edit/modes/replace.ts +1103 -0
  989. package/src/edit/normalize.ts +375 -0
  990. package/src/edit/notebook.ts +222 -0
  991. package/src/edit/read-file.ts +25 -0
  992. package/src/edit/renderer.ts +683 -0
  993. package/src/edit/streaming.ts +561 -0
  994. package/src/eval/backend.ts +43 -0
  995. package/src/eval/index.ts +4 -0
  996. package/src/eval/js/context-manager.ts +414 -0
  997. package/src/eval/js/executor.ts +134 -0
  998. package/src/eval/js/index.ts +46 -0
  999. package/src/eval/js/shared/helpers.ts +237 -0
  1000. package/src/eval/js/shared/indirect-eval.ts +30 -0
  1001. package/src/eval/js/shared/prelude.ts +2 -0
  1002. package/src/eval/js/shared/prelude.txt +70 -0
  1003. package/src/eval/js/shared/rewrite-imports.ts +416 -0
  1004. package/src/eval/js/shared/runtime.ts +301 -0
  1005. package/src/eval/js/shared/types.ts +18 -0
  1006. package/src/eval/js/tool-bridge.ts +144 -0
  1007. package/src/eval/js/worker-core.ts +146 -0
  1008. package/src/eval/js/worker-entry.ts +24 -0
  1009. package/src/eval/js/worker-protocol.ts +41 -0
  1010. package/src/eval/py/display.ts +71 -0
  1011. package/src/eval/py/executor.ts +602 -0
  1012. package/src/eval/py/index.ts +58 -0
  1013. package/src/eval/py/kernel.ts +668 -0
  1014. package/src/eval/py/prelude.py +462 -0
  1015. package/src/eval/py/prelude.ts +3 -0
  1016. package/src/eval/py/runner.py +910 -0
  1017. package/src/eval/py/runtime.ts +210 -0
  1018. package/src/eval/py/tool-bridge.ts +137 -0
  1019. package/src/eval/types.ts +48 -0
  1020. package/src/exa/factory.ts +60 -0
  1021. package/src/exa/index.ts +27 -0
  1022. package/src/exa/mcp-client.ts +364 -0
  1023. package/src/exa/render.ts +244 -0
  1024. package/src/exa/researcher.ts +36 -0
  1025. package/src/exa/search.ts +47 -0
  1026. package/src/exa/types.ts +166 -0
  1027. package/src/exa/websets.ts +248 -0
  1028. package/src/exec/bash-executor.ts +309 -0
  1029. package/src/exec/exec.ts +53 -0
  1030. package/src/exec/idle-timeout-watchdog.ts +126 -0
  1031. package/src/exec/non-interactive-env.ts +48 -0
  1032. package/src/export/custom-share.ts +65 -0
  1033. package/src/export/html/index.ts +164 -0
  1034. package/src/export/html/template.css +1060 -0
  1035. package/src/export/html/template.generated.ts +2 -0
  1036. package/src/export/html/template.html +47 -0
  1037. package/src/export/html/template.js +2268 -0
  1038. package/src/export/html/template.macro.ts +25 -0
  1039. package/src/export/html/vendor/highlight.min.js +1213 -0
  1040. package/src/export/html/vendor/marked.min.js +6 -0
  1041. package/src/export/ttsr.ts +434 -0
  1042. package/src/extensibility/custom-commands/bundled/ci-green/index.ts +25 -0
  1043. package/src/extensibility/custom-commands/bundled/review/index.ts +456 -0
  1044. package/src/extensibility/custom-commands/index.ts +2 -0
  1045. package/src/extensibility/custom-commands/loader.ts +238 -0
  1046. package/src/extensibility/custom-commands/types.ts +113 -0
  1047. package/src/extensibility/custom-tools/index.ts +7 -0
  1048. package/src/extensibility/custom-tools/loader.ts +245 -0
  1049. package/src/extensibility/custom-tools/types.ts +254 -0
  1050. package/src/extensibility/custom-tools/wrapper.ts +47 -0
  1051. package/src/extensibility/extensions/compact-handler.ts +40 -0
  1052. package/src/extensibility/extensions/get-commands-handler.ts +80 -0
  1053. package/src/extensibility/extensions/index.ts +15 -0
  1054. package/src/extensibility/extensions/loader.ts +545 -0
  1055. package/src/extensibility/extensions/runner.ts +900 -0
  1056. package/src/extensibility/extensions/types.ts +1259 -0
  1057. package/src/extensibility/extensions/wrapper.ts +189 -0
  1058. package/src/extensibility/hooks/index.ts +5 -0
  1059. package/src/extensibility/hooks/loader.ts +257 -0
  1060. package/src/extensibility/hooks/runner.ts +425 -0
  1061. package/src/extensibility/hooks/tool-wrapper.ts +107 -0
  1062. package/src/extensibility/hooks/types.ts +599 -0
  1063. package/src/extensibility/plugins/doctor.ts +66 -0
  1064. package/src/extensibility/plugins/git-url.ts +281 -0
  1065. package/src/extensibility/plugins/index.ts +9 -0
  1066. package/src/extensibility/plugins/installer.ts +192 -0
  1067. package/src/extensibility/plugins/legacy-pi-compat.ts +336 -0
  1068. package/src/extensibility/plugins/loader.ts +288 -0
  1069. package/src/extensibility/plugins/manager.ts +731 -0
  1070. package/src/extensibility/plugins/marketplace/cache.ts +136 -0
  1071. package/src/extensibility/plugins/marketplace/fetcher.ts +317 -0
  1072. package/src/extensibility/plugins/marketplace/index.ts +6 -0
  1073. package/src/extensibility/plugins/marketplace/manager.ts +770 -0
  1074. package/src/extensibility/plugins/marketplace/registry.ts +196 -0
  1075. package/src/extensibility/plugins/marketplace/source-resolver.ts +147 -0
  1076. package/src/extensibility/plugins/marketplace/types.ts +191 -0
  1077. package/src/extensibility/plugins/parser.ts +105 -0
  1078. package/src/extensibility/plugins/types.ts +194 -0
  1079. package/src/extensibility/shared-events.ts +343 -0
  1080. package/src/extensibility/skills.ts +391 -0
  1081. package/src/extensibility/slash-commands.ts +227 -0
  1082. package/src/extensibility/tool-proxy.ts +25 -0
  1083. package/src/extensibility/typebox.ts +418 -0
  1084. package/src/extensibility/utils.ts +44 -0
  1085. package/src/gjc-runtime/goal-mode-request.ts +212 -0
  1086. package/src/gjc-runtime/launch-tmux.ts +162 -0
  1087. package/src/gjc-runtime/launch-worktree.ts +291 -0
  1088. package/src/gjc-runtime/team-runtime.ts +2025 -0
  1089. package/src/gjc-runtime/ultragoal-runtime.ts +564 -0
  1090. package/src/goals/index.ts +3 -0
  1091. package/src/goals/runtime.ts +524 -0
  1092. package/src/goals/state.ts +37 -0
  1093. package/src/goals/tools/goal-tool.ts +371 -0
  1094. package/src/hashline/anchors.ts +113 -0
  1095. package/src/hashline/apply.ts +737 -0
  1096. package/src/hashline/bigrams.json +649 -0
  1097. package/src/hashline/constants.ts +25 -0
  1098. package/src/hashline/diff-preview.ts +43 -0
  1099. package/src/hashline/diff.ts +56 -0
  1100. package/src/hashline/execute.ts +267 -0
  1101. package/src/hashline/grammar.lark +21 -0
  1102. package/src/hashline/hash.ts +173 -0
  1103. package/src/hashline/index.ts +13 -0
  1104. package/src/hashline/input.ts +130 -0
  1105. package/src/hashline/parser.ts +246 -0
  1106. package/src/hashline/prefixes.ts +101 -0
  1107. package/src/hashline/recovery.ts +113 -0
  1108. package/src/hashline/stream.ts +123 -0
  1109. package/src/hashline/types.ts +68 -0
  1110. package/src/hindsight/backend.ts +205 -0
  1111. package/src/hindsight/bank.ts +131 -0
  1112. package/src/hindsight/client.ts +598 -0
  1113. package/src/hindsight/config.ts +175 -0
  1114. package/src/hindsight/content.ts +210 -0
  1115. package/src/hindsight/index.ts +8 -0
  1116. package/src/hindsight/mental-models.ts +382 -0
  1117. package/src/hindsight/seeds.json +32 -0
  1118. package/src/hindsight/state.ts +469 -0
  1119. package/src/hindsight/transcript.ts +71 -0
  1120. package/src/hooks/codex-native-hooks-config.ts +143 -0
  1121. package/src/hooks/native-skill-hook.ts +279 -0
  1122. package/src/hooks/skill-keywords.ts +86 -0
  1123. package/src/hooks/skill-state.ts +416 -0
  1124. package/src/index.ts +56 -0
  1125. package/src/internal-urls/agent-protocol.ts +129 -0
  1126. package/src/internal-urls/artifact-protocol.ts +80 -0
  1127. package/src/internal-urls/docs-index.generated.ts +81 -0
  1128. package/src/internal-urls/gjc-protocol.ts +83 -0
  1129. package/src/internal-urls/index.ts +21 -0
  1130. package/src/internal-urls/issue-pr-protocol.ts +577 -0
  1131. package/src/internal-urls/json-query.ts +126 -0
  1132. package/src/internal-urls/local-protocol.ts +249 -0
  1133. package/src/internal-urls/mcp-protocol.ts +151 -0
  1134. package/src/internal-urls/memory-protocol.ts +164 -0
  1135. package/src/internal-urls/parse.ts +72 -0
  1136. package/src/internal-urls/registry-helpers.ts +25 -0
  1137. package/src/internal-urls/router.ts +78 -0
  1138. package/src/internal-urls/rule-protocol.ts +38 -0
  1139. package/src/internal-urls/skill-protocol.ts +103 -0
  1140. package/src/internal-urls/types.ts +110 -0
  1141. package/src/lsp/client.ts +951 -0
  1142. package/src/lsp/clients/biome-client.ts +202 -0
  1143. package/src/lsp/clients/index.ts +50 -0
  1144. package/src/lsp/clients/lsp-linter-client.ts +93 -0
  1145. package/src/lsp/clients/swiftlint-client.ts +120 -0
  1146. package/src/lsp/config.ts +492 -0
  1147. package/src/lsp/defaults.json +493 -0
  1148. package/src/lsp/edits.ts +166 -0
  1149. package/src/lsp/index.ts +2282 -0
  1150. package/src/lsp/lspmux.ts +233 -0
  1151. package/src/lsp/render.ts +692 -0
  1152. package/src/lsp/startup-events.ts +13 -0
  1153. package/src/lsp/types.ts +443 -0
  1154. package/src/lsp/utils.ts +678 -0
  1155. package/src/main.ts +961 -0
  1156. package/src/memories/index.ts +1135 -0
  1157. package/src/memories/storage.ts +577 -0
  1158. package/src/memory-backend/index.ts +4 -0
  1159. package/src/memory-backend/local-backend.ts +30 -0
  1160. package/src/memory-backend/off-backend.ts +16 -0
  1161. package/src/memory-backend/resolve.ts +24 -0
  1162. package/src/memory-backend/types.ts +79 -0
  1163. package/src/modes/acp/acp-agent.ts +2170 -0
  1164. package/src/modes/acp/acp-client-bridge.ts +154 -0
  1165. package/src/modes/acp/acp-event-mapper.ts +879 -0
  1166. package/src/modes/acp/acp-mode.ts +23 -0
  1167. package/src/modes/acp/index.ts +2 -0
  1168. package/src/modes/acp/terminal-auth.ts +37 -0
  1169. package/src/modes/components/agent-dashboard.ts +1120 -0
  1170. package/src/modes/components/assistant-message.ts +231 -0
  1171. package/src/modes/components/bash-execution.ts +228 -0
  1172. package/src/modes/components/bordered-loader.ts +41 -0
  1173. package/src/modes/components/branch-summary-message.ts +45 -0
  1174. package/src/modes/components/btw-panel.ts +104 -0
  1175. package/src/modes/components/compaction-summary-message.ts +51 -0
  1176. package/src/modes/components/countdown-timer.ts +75 -0
  1177. package/src/modes/components/custom-editor.ts +237 -0
  1178. package/src/modes/components/custom-message.ts +65 -0
  1179. package/src/modes/components/diff.ts +266 -0
  1180. package/src/modes/components/dynamic-border.ts +25 -0
  1181. package/src/modes/components/eval-execution.ts +164 -0
  1182. package/src/modes/components/execution-shared.ts +102 -0
  1183. package/src/modes/components/extensions/extension-dashboard.ts +350 -0
  1184. package/src/modes/components/extensions/extension-list.ts +492 -0
  1185. package/src/modes/components/extensions/index.ts +9 -0
  1186. package/src/modes/components/extensions/inspector-panel.ts +317 -0
  1187. package/src/modes/components/extensions/state-manager.ts +628 -0
  1188. package/src/modes/components/extensions/types.ts +191 -0
  1189. package/src/modes/components/footer.ts +270 -0
  1190. package/src/modes/components/history-search.ts +158 -0
  1191. package/src/modes/components/hook-editor.ts +151 -0
  1192. package/src/modes/components/hook-input.ts +79 -0
  1193. package/src/modes/components/hook-message.ts +68 -0
  1194. package/src/modes/components/hook-selector.ts +190 -0
  1195. package/src/modes/components/index.ts +36 -0
  1196. package/src/modes/components/keybinding-hints.ts +65 -0
  1197. package/src/modes/components/login-dialog.ts +164 -0
  1198. package/src/modes/components/message-frame.ts +88 -0
  1199. package/src/modes/components/model-selector.ts +794 -0
  1200. package/src/modes/components/oauth-selector.ts +248 -0
  1201. package/src/modes/components/plugin-selector.ts +95 -0
  1202. package/src/modes/components/plugin-settings.ts +488 -0
  1203. package/src/modes/components/provider-onboarding-selector.ts +88 -0
  1204. package/src/modes/components/queue-mode-selector.ts +56 -0
  1205. package/src/modes/components/read-tool-group.ts +267 -0
  1206. package/src/modes/components/runtime-mcp-add-wizard.ts +1341 -0
  1207. package/src/modes/components/session-observer-overlay.ts +839 -0
  1208. package/src/modes/components/session-selector.ts +343 -0
  1209. package/src/modes/components/settings-defs.ts +175 -0
  1210. package/src/modes/components/settings-selector.ts +635 -0
  1211. package/src/modes/components/show-images-selector.ts +45 -0
  1212. package/src/modes/components/skill-hud/render.ts +47 -0
  1213. package/src/modes/components/skill-message.ts +90 -0
  1214. package/src/modes/components/status-line/context-thresholds.ts +68 -0
  1215. package/src/modes/components/status-line/git-utils.ts +42 -0
  1216. package/src/modes/components/status-line/index.ts +4 -0
  1217. package/src/modes/components/status-line/presets.ts +105 -0
  1218. package/src/modes/components/status-line/segments.ts +560 -0
  1219. package/src/modes/components/status-line/separators.ts +55 -0
  1220. package/src/modes/components/status-line/token-rate.ts +66 -0
  1221. package/src/modes/components/status-line/types.ts +93 -0
  1222. package/src/modes/components/status-line.ts +839 -0
  1223. package/src/modes/components/theme-selector.ts +63 -0
  1224. package/src/modes/components/thinking-selector.ts +52 -0
  1225. package/src/modes/components/todo-reminder.ts +40 -0
  1226. package/src/modes/components/tool-execution.ts +830 -0
  1227. package/src/modes/components/tree-selector.ts +930 -0
  1228. package/src/modes/components/ttsr-notification.ts +80 -0
  1229. package/src/modes/components/user-message-selector.ts +141 -0
  1230. package/src/modes/components/user-message.ts +51 -0
  1231. package/src/modes/components/visual-truncate.ts +63 -0
  1232. package/src/modes/components/welcome.ts +389 -0
  1233. package/src/modes/controllers/btw-controller.ts +105 -0
  1234. package/src/modes/controllers/command-controller-shared.ts +108 -0
  1235. package/src/modes/controllers/command-controller.ts +1630 -0
  1236. package/src/modes/controllers/event-controller.ts +786 -0
  1237. package/src/modes/controllers/extension-ui-controller.ts +927 -0
  1238. package/src/modes/controllers/input-controller.ts +858 -0
  1239. package/src/modes/controllers/runtime-mcp-command-controller.ts +1934 -0
  1240. package/src/modes/controllers/selector-controller.ts +1039 -0
  1241. package/src/modes/controllers/ssh-command-controller.ts +384 -0
  1242. package/src/modes/controllers/todo-command-controller.ts +485 -0
  1243. package/src/modes/data/emojis.json +1 -0
  1244. package/src/modes/emoji-autocomplete.ts +285 -0
  1245. package/src/modes/index.ts +34 -0
  1246. package/src/modes/interactive-mode.ts +2756 -0
  1247. package/src/modes/loop-limit.ts +140 -0
  1248. package/src/modes/oauth-manual-input.ts +42 -0
  1249. package/src/modes/print-mode.ts +121 -0
  1250. package/src/modes/prompt-action-autocomplete.ts +345 -0
  1251. package/src/modes/rpc/host-tools.ts +186 -0
  1252. package/src/modes/rpc/host-uris.ts +235 -0
  1253. package/src/modes/rpc/rpc-client.ts +810 -0
  1254. package/src/modes/rpc/rpc-mode.ts +851 -0
  1255. package/src/modes/rpc/rpc-types.ts +378 -0
  1256. package/src/modes/runtime-init.ts +116 -0
  1257. package/src/modes/session-observer-registry.ts +146 -0
  1258. package/src/modes/shared.ts +55 -0
  1259. package/src/modes/theme/dark.json +95 -0
  1260. package/src/modes/theme/defaults/alabaster.json +93 -0
  1261. package/src/modes/theme/defaults/amethyst.json +96 -0
  1262. package/src/modes/theme/defaults/anthracite.json +93 -0
  1263. package/src/modes/theme/defaults/basalt.json +91 -0
  1264. package/src/modes/theme/defaults/birch.json +95 -0
  1265. package/src/modes/theme/defaults/dark-abyss.json +91 -0
  1266. package/src/modes/theme/defaults/dark-arctic.json +104 -0
  1267. package/src/modes/theme/defaults/dark-aurora.json +95 -0
  1268. package/src/modes/theme/defaults/dark-catppuccin.json +107 -0
  1269. package/src/modes/theme/defaults/dark-cavern.json +91 -0
  1270. package/src/modes/theme/defaults/dark-copper.json +95 -0
  1271. package/src/modes/theme/defaults/dark-cosmos.json +90 -0
  1272. package/src/modes/theme/defaults/dark-cyberpunk.json +102 -0
  1273. package/src/modes/theme/defaults/dark-dracula.json +98 -0
  1274. package/src/modes/theme/defaults/dark-eclipse.json +91 -0
  1275. package/src/modes/theme/defaults/dark-ember.json +95 -0
  1276. package/src/modes/theme/defaults/dark-equinox.json +90 -0
  1277. package/src/modes/theme/defaults/dark-forest.json +96 -0
  1278. package/src/modes/theme/defaults/dark-github.json +105 -0
  1279. package/src/modes/theme/defaults/dark-gruvbox.json +112 -0
  1280. package/src/modes/theme/defaults/dark-lavender.json +95 -0
  1281. package/src/modes/theme/defaults/dark-lunar.json +89 -0
  1282. package/src/modes/theme/defaults/dark-midnight.json +95 -0
  1283. package/src/modes/theme/defaults/dark-monochrome.json +94 -0
  1284. package/src/modes/theme/defaults/dark-monokai.json +98 -0
  1285. package/src/modes/theme/defaults/dark-nebula.json +90 -0
  1286. package/src/modes/theme/defaults/dark-nord.json +97 -0
  1287. package/src/modes/theme/defaults/dark-ocean.json +101 -0
  1288. package/src/modes/theme/defaults/dark-one.json +100 -0
  1289. package/src/modes/theme/defaults/dark-poimandres.json +142 -0
  1290. package/src/modes/theme/defaults/dark-rainforest.json +91 -0
  1291. package/src/modes/theme/defaults/dark-reef.json +91 -0
  1292. package/src/modes/theme/defaults/dark-retro.json +92 -0
  1293. package/src/modes/theme/defaults/dark-rose-pine.json +96 -0
  1294. package/src/modes/theme/defaults/dark-sakura.json +95 -0
  1295. package/src/modes/theme/defaults/dark-slate.json +95 -0
  1296. package/src/modes/theme/defaults/dark-solarized.json +97 -0
  1297. package/src/modes/theme/defaults/dark-solstice.json +90 -0
  1298. package/src/modes/theme/defaults/dark-starfall.json +91 -0
  1299. package/src/modes/theme/defaults/dark-sunset.json +99 -0
  1300. package/src/modes/theme/defaults/dark-swamp.json +90 -0
  1301. package/src/modes/theme/defaults/dark-synthwave.json +103 -0
  1302. package/src/modes/theme/defaults/dark-taiga.json +91 -0
  1303. package/src/modes/theme/defaults/dark-terminal.json +95 -0
  1304. package/src/modes/theme/defaults/dark-tokyo-night.json +101 -0
  1305. package/src/modes/theme/defaults/dark-tundra.json +91 -0
  1306. package/src/modes/theme/defaults/dark-twilight.json +91 -0
  1307. package/src/modes/theme/defaults/dark-volcanic.json +91 -0
  1308. package/src/modes/theme/defaults/graphite.json +92 -0
  1309. package/src/modes/theme/defaults/index.ts +201 -0
  1310. package/src/modes/theme/defaults/light-arctic.json +107 -0
  1311. package/src/modes/theme/defaults/light-aurora-day.json +91 -0
  1312. package/src/modes/theme/defaults/light-canyon.json +91 -0
  1313. package/src/modes/theme/defaults/light-catppuccin.json +106 -0
  1314. package/src/modes/theme/defaults/light-cirrus.json +90 -0
  1315. package/src/modes/theme/defaults/light-coral.json +95 -0
  1316. package/src/modes/theme/defaults/light-cyberpunk.json +96 -0
  1317. package/src/modes/theme/defaults/light-dawn.json +90 -0
  1318. package/src/modes/theme/defaults/light-dunes.json +91 -0
  1319. package/src/modes/theme/defaults/light-eucalyptus.json +95 -0
  1320. package/src/modes/theme/defaults/light-forest.json +100 -0
  1321. package/src/modes/theme/defaults/light-frost.json +95 -0
  1322. package/src/modes/theme/defaults/light-github.json +115 -0
  1323. package/src/modes/theme/defaults/light-glacier.json +91 -0
  1324. package/src/modes/theme/defaults/light-gruvbox.json +108 -0
  1325. package/src/modes/theme/defaults/light-haze.json +90 -0
  1326. package/src/modes/theme/defaults/light-honeycomb.json +95 -0
  1327. package/src/modes/theme/defaults/light-lagoon.json +91 -0
  1328. package/src/modes/theme/defaults/light-lavender.json +95 -0
  1329. package/src/modes/theme/defaults/light-meadow.json +91 -0
  1330. package/src/modes/theme/defaults/light-mint.json +95 -0
  1331. package/src/modes/theme/defaults/light-monochrome.json +101 -0
  1332. package/src/modes/theme/defaults/light-ocean.json +99 -0
  1333. package/src/modes/theme/defaults/light-one.json +99 -0
  1334. package/src/modes/theme/defaults/light-opal.json +91 -0
  1335. package/src/modes/theme/defaults/light-orchard.json +91 -0
  1336. package/src/modes/theme/defaults/light-paper.json +95 -0
  1337. package/src/modes/theme/defaults/light-poimandres.json +142 -0
  1338. package/src/modes/theme/defaults/light-prism.json +90 -0
  1339. package/src/modes/theme/defaults/light-retro.json +98 -0
  1340. package/src/modes/theme/defaults/light-sand.json +95 -0
  1341. package/src/modes/theme/defaults/light-savanna.json +91 -0
  1342. package/src/modes/theme/defaults/light-solarized.json +102 -0
  1343. package/src/modes/theme/defaults/light-soleil.json +90 -0
  1344. package/src/modes/theme/defaults/light-sunset.json +99 -0
  1345. package/src/modes/theme/defaults/light-synthwave.json +98 -0
  1346. package/src/modes/theme/defaults/light-tokyo-night.json +111 -0
  1347. package/src/modes/theme/defaults/light-wetland.json +91 -0
  1348. package/src/modes/theme/defaults/light-zenith.json +89 -0
  1349. package/src/modes/theme/defaults/limestone.json +94 -0
  1350. package/src/modes/theme/defaults/mahogany.json +97 -0
  1351. package/src/modes/theme/defaults/marble.json +93 -0
  1352. package/src/modes/theme/defaults/obsidian.json +91 -0
  1353. package/src/modes/theme/defaults/onyx.json +91 -0
  1354. package/src/modes/theme/defaults/pearl.json +93 -0
  1355. package/src/modes/theme/defaults/porcelain.json +91 -0
  1356. package/src/modes/theme/defaults/quartz.json +96 -0
  1357. package/src/modes/theme/defaults/red-claw.json +123 -0
  1358. package/src/modes/theme/defaults/sandstone.json +95 -0
  1359. package/src/modes/theme/defaults/titanium.json +90 -0
  1360. package/src/modes/theme/light.json +93 -0
  1361. package/src/modes/theme/mermaid-cache.ts +29 -0
  1362. package/src/modes/theme/shimmer.ts +219 -0
  1363. package/src/modes/theme/theme-schema.json +429 -0
  1364. package/src/modes/theme/theme.ts +2413 -0
  1365. package/src/modes/types.ts +313 -0
  1366. package/src/modes/utils/context-usage.ts +335 -0
  1367. package/src/modes/utils/hotkeys-markdown.ts +59 -0
  1368. package/src/modes/utils/keybinding-matchers.ts +30 -0
  1369. package/src/modes/utils/tools-markdown.ts +27 -0
  1370. package/src/modes/utils/ui-helpers.ts +741 -0
  1371. package/src/plan-mode/approved-plan.ts +163 -0
  1372. package/src/plan-mode/state.ts +6 -0
  1373. package/src/priority.json +37 -0
  1374. package/src/prompts/agents/architect.md +79 -0
  1375. package/src/prompts/agents/critic.md +55 -0
  1376. package/src/prompts/agents/executor.md +45 -0
  1377. package/src/prompts/agents/explore.md +58 -0
  1378. package/src/prompts/agents/frontmatter.md +12 -0
  1379. package/src/prompts/agents/init.md +34 -0
  1380. package/src/prompts/agents/plan.md +49 -0
  1381. package/src/prompts/agents/planner.md +49 -0
  1382. package/src/prompts/agents/reviewer.md +141 -0
  1383. package/src/prompts/agents/task.md +16 -0
  1384. package/src/prompts/ci-green-request.md +36 -0
  1385. package/src/prompts/commands/orchestrate.md +49 -0
  1386. package/src/prompts/goals/goal-budget-limit.md +16 -0
  1387. package/src/prompts/goals/goal-continuation.md +28 -0
  1388. package/src/prompts/goals/goal-mode-active.md +23 -0
  1389. package/src/prompts/memories/consolidation.md +30 -0
  1390. package/src/prompts/memories/read-path.md +11 -0
  1391. package/src/prompts/memories/stage_one_input.md +6 -0
  1392. package/src/prompts/memories/stage_one_system.md +21 -0
  1393. package/src/prompts/review-request.md +70 -0
  1394. package/src/prompts/system/agent-creation-architect.md +75 -0
  1395. package/src/prompts/system/agent-creation-user.md +6 -0
  1396. package/src/prompts/system/auto-continue.md +1 -0
  1397. package/src/prompts/system/btw-user.md +8 -0
  1398. package/src/prompts/system/commit-message-system.md +2 -0
  1399. package/src/prompts/system/custom-system-prompt.md +64 -0
  1400. package/src/prompts/system/eager-todo.md +13 -0
  1401. package/src/prompts/system/irc-incoming.md +8 -0
  1402. package/src/prompts/system/plan-mode-active.md +116 -0
  1403. package/src/prompts/system/plan-mode-approved.md +28 -0
  1404. package/src/prompts/system/plan-mode-compact-instructions.md +16 -0
  1405. package/src/prompts/system/plan-mode-reference.md +14 -0
  1406. package/src/prompts/system/plan-mode-subagent.md +34 -0
  1407. package/src/prompts/system/plan-mode-tool-decision-reminder.md +9 -0
  1408. package/src/prompts/system/project-prompt.md +46 -0
  1409. package/src/prompts/system/subagent-system-prompt.md +54 -0
  1410. package/src/prompts/system/subagent-user-prompt.md +3 -0
  1411. package/src/prompts/system/subagent-yield-reminder.md +12 -0
  1412. package/src/prompts/system/system-prompt.md +267 -0
  1413. package/src/prompts/system/title-system.md +2 -0
  1414. package/src/prompts/system/ttsr-interrupt.md +7 -0
  1415. package/src/prompts/system/ttsr-tool-reminder.md +5 -0
  1416. package/src/prompts/system/web-search.md +25 -0
  1417. package/src/prompts/tools/apply-patch.md +65 -0
  1418. package/src/prompts/tools/ask.md +29 -0
  1419. package/src/prompts/tools/ast-edit.md +39 -0
  1420. package/src/prompts/tools/ast-grep.md +42 -0
  1421. package/src/prompts/tools/async-result.md +8 -0
  1422. package/src/prompts/tools/bash.md +39 -0
  1423. package/src/prompts/tools/browser.md +70 -0
  1424. package/src/prompts/tools/calculator.md +10 -0
  1425. package/src/prompts/tools/checkpoint.md +16 -0
  1426. package/src/prompts/tools/create-goal.md +3 -0
  1427. package/src/prompts/tools/debug.md +33 -0
  1428. package/src/prompts/tools/eval.md +75 -0
  1429. package/src/prompts/tools/find.md +34 -0
  1430. package/src/prompts/tools/get-goal.md +3 -0
  1431. package/src/prompts/tools/github.md +20 -0
  1432. package/src/prompts/tools/goal.md +18 -0
  1433. package/src/prompts/tools/hashline.md +130 -0
  1434. package/src/prompts/tools/image-gen.md +7 -0
  1435. package/src/prompts/tools/inspect-image-system.md +20 -0
  1436. package/src/prompts/tools/inspect-image.md +32 -0
  1437. package/src/prompts/tools/irc.md +49 -0
  1438. package/src/prompts/tools/job.md +19 -0
  1439. package/src/prompts/tools/lsp.md +42 -0
  1440. package/src/prompts/tools/patch.md +70 -0
  1441. package/src/prompts/tools/read.md +82 -0
  1442. package/src/prompts/tools/recall.md +5 -0
  1443. package/src/prompts/tools/recipe.md +16 -0
  1444. package/src/prompts/tools/reflect.md +5 -0
  1445. package/src/prompts/tools/render-mermaid.md +9 -0
  1446. package/src/prompts/tools/replace.md +36 -0
  1447. package/src/prompts/tools/resolve.md +9 -0
  1448. package/src/prompts/tools/retain.md +6 -0
  1449. package/src/prompts/tools/rewind.md +13 -0
  1450. package/src/prompts/tools/search-tool-bm25.md +33 -0
  1451. package/src/prompts/tools/search.md +25 -0
  1452. package/src/prompts/tools/ssh.md +35 -0
  1453. package/src/prompts/tools/subagent.md +21 -0
  1454. package/src/prompts/tools/task-summary.md +28 -0
  1455. package/src/prompts/tools/task.md +79 -0
  1456. package/src/prompts/tools/todo-write.md +50 -0
  1457. package/src/prompts/tools/update-goal.md +3 -0
  1458. package/src/prompts/tools/vim.md +98 -0
  1459. package/src/prompts/tools/web-search.md +10 -0
  1460. package/src/prompts/tools/write.md +14 -0
  1461. package/src/registry/agent-registry.ts +140 -0
  1462. package/src/runtime-mcp/client.ts +482 -0
  1463. package/src/runtime-mcp/config-writer.ts +225 -0
  1464. package/src/runtime-mcp/config.ts +365 -0
  1465. package/src/runtime-mcp/discoverable-tool-metadata.ts +25 -0
  1466. package/src/runtime-mcp/index.ts +29 -0
  1467. package/src/runtime-mcp/json-rpc.ts +84 -0
  1468. package/src/runtime-mcp/loader.ts +124 -0
  1469. package/src/runtime-mcp/manager.ts +1172 -0
  1470. package/src/runtime-mcp/oauth-discovery.ts +349 -0
  1471. package/src/runtime-mcp/oauth-flow.ts +407 -0
  1472. package/src/runtime-mcp/render.ts +123 -0
  1473. package/src/runtime-mcp/smithery-auth.ts +104 -0
  1474. package/src/runtime-mcp/smithery-connect.ts +145 -0
  1475. package/src/runtime-mcp/smithery-registry.ts +477 -0
  1476. package/src/runtime-mcp/tool-bridge.ts +416 -0
  1477. package/src/runtime-mcp/tool-cache.ts +117 -0
  1478. package/src/runtime-mcp/transports/http.ts +477 -0
  1479. package/src/runtime-mcp/transports/index.ts +6 -0
  1480. package/src/runtime-mcp/transports/stdio.ts +325 -0
  1481. package/src/runtime-mcp/types.ts +423 -0
  1482. package/src/sdk.ts +2064 -0
  1483. package/src/secrets/index.ts +116 -0
  1484. package/src/secrets/obfuscator.ts +277 -0
  1485. package/src/secrets/regex.ts +21 -0
  1486. package/src/session/agent-session.ts +8794 -0
  1487. package/src/session/agent-storage.ts +466 -0
  1488. package/src/session/artifacts.ts +135 -0
  1489. package/src/session/auth-broker-config.ts +102 -0
  1490. package/src/session/auth-storage.ts +23 -0
  1491. package/src/session/blob-store.ts +168 -0
  1492. package/src/session/client-bridge.ts +85 -0
  1493. package/src/session/history-storage.ts +311 -0
  1494. package/src/session/messages.ts +403 -0
  1495. package/src/session/session-dump-format.ts +209 -0
  1496. package/src/session/session-manager.ts +3333 -0
  1497. package/src/session/session-storage.ts +389 -0
  1498. package/src/session/streaming-output.ts +1093 -0
  1499. package/src/session/tool-choice-queue.ts +213 -0
  1500. package/src/session/yield-queue.ts +155 -0
  1501. package/src/setup/model-onboarding-guidance.ts +36 -0
  1502. package/src/setup/provider-onboarding.ts +195 -0
  1503. package/src/skill-state/active-state.ts +272 -0
  1504. package/src/slash-commands/acp-builtins.ts +46 -0
  1505. package/src/slash-commands/builtin-registry.ts +955 -0
  1506. package/src/slash-commands/helpers/context-report.ts +39 -0
  1507. package/src/slash-commands/helpers/format.ts +46 -0
  1508. package/src/slash-commands/helpers/mcp.ts +532 -0
  1509. package/src/slash-commands/helpers/parse.ts +85 -0
  1510. package/src/slash-commands/helpers/ssh.ts +195 -0
  1511. package/src/slash-commands/helpers/todo.ts +279 -0
  1512. package/src/slash-commands/helpers/usage-report.ts +91 -0
  1513. package/src/slash-commands/types.ts +125 -0
  1514. package/src/ssh/config-writer.ts +183 -0
  1515. package/src/ssh/connection-manager.ts +482 -0
  1516. package/src/ssh/ssh-executor.ts +133 -0
  1517. package/src/ssh/sshfs-mount.ts +140 -0
  1518. package/src/ssh/utils.ts +8 -0
  1519. package/src/stt/downloader.ts +71 -0
  1520. package/src/stt/index.ts +3 -0
  1521. package/src/stt/recorder.ts +351 -0
  1522. package/src/stt/setup.ts +52 -0
  1523. package/src/stt/stt-controller.ts +160 -0
  1524. package/src/stt/transcribe.py +70 -0
  1525. package/src/stt/transcriber.ts +91 -0
  1526. package/src/system-prompt.ts +581 -0
  1527. package/src/task/agents.ts +162 -0
  1528. package/src/task/commands.ts +135 -0
  1529. package/src/task/discovery.ts +130 -0
  1530. package/src/task/executor.ts +1564 -0
  1531. package/src/task/gjc-command.ts +26 -0
  1532. package/src/task/index.ts +1366 -0
  1533. package/src/task/name-generator.ts +1577 -0
  1534. package/src/task/output-manager.ts +107 -0
  1535. package/src/task/parallel.ts +116 -0
  1536. package/src/task/render.ts +1136 -0
  1537. package/src/task/simple-mode.ts +27 -0
  1538. package/src/task/subprocess-tool-registry.ts +88 -0
  1539. package/src/task/types.ts +315 -0
  1540. package/src/task/worktree.ts +506 -0
  1541. package/src/thinking.ts +87 -0
  1542. package/src/tool-discovery/tool-index.ts +400 -0
  1543. package/src/tools/archive-reader.ts +321 -0
  1544. package/src/tools/ask.ts +790 -0
  1545. package/src/tools/ast-edit.ts +542 -0
  1546. package/src/tools/ast-grep.ts +423 -0
  1547. package/src/tools/auto-generated-guard.ts +305 -0
  1548. package/src/tools/bash-command-fixup.ts +37 -0
  1549. package/src/tools/bash-interactive.ts +388 -0
  1550. package/src/tools/bash-interceptor.ts +67 -0
  1551. package/src/tools/bash-pty-selection.ts +14 -0
  1552. package/src/tools/bash-skill-urls.ts +248 -0
  1553. package/src/tools/bash.ts +1061 -0
  1554. package/src/tools/browser/attach.ts +175 -0
  1555. package/src/tools/browser/launch.ts +651 -0
  1556. package/src/tools/browser/readable.ts +95 -0
  1557. package/src/tools/browser/registry.ts +194 -0
  1558. package/src/tools/browser/render.ts +212 -0
  1559. package/src/tools/browser/tab-protocol.ts +105 -0
  1560. package/src/tools/browser/tab-supervisor.ts +577 -0
  1561. package/src/tools/browser/tab-worker-entry.ts +21 -0
  1562. package/src/tools/browser/tab-worker.ts +1054 -0
  1563. package/src/tools/browser.ts +301 -0
  1564. package/src/tools/calculator.ts +540 -0
  1565. package/src/tools/checkpoint.ts +134 -0
  1566. package/src/tools/conflict-detect.ts +672 -0
  1567. package/src/tools/context.ts +39 -0
  1568. package/src/tools/debug.ts +1014 -0
  1569. package/src/tools/eval.ts +1101 -0
  1570. package/src/tools/fetch.ts +1482 -0
  1571. package/src/tools/file-recorder.ts +35 -0
  1572. package/src/tools/find.ts +540 -0
  1573. package/src/tools/fs-cache-invalidation.ts +28 -0
  1574. package/src/tools/gh-format.ts +12 -0
  1575. package/src/tools/gh-renderer.ts +428 -0
  1576. package/src/tools/gh.ts +3499 -0
  1577. package/src/tools/github-cache.ts +548 -0
  1578. package/src/tools/grouped-file-output.ts +96 -0
  1579. package/src/tools/hindsight-recall.ts +68 -0
  1580. package/src/tools/hindsight-reflect.ts +57 -0
  1581. package/src/tools/hindsight-retain.ts +56 -0
  1582. package/src/tools/image-gen.ts +1248 -0
  1583. package/src/tools/index.ts +519 -0
  1584. package/src/tools/inspect-image-renderer.ts +103 -0
  1585. package/src/tools/inspect-image.ts +165 -0
  1586. package/src/tools/irc.ts +239 -0
  1587. package/src/tools/job.ts +520 -0
  1588. package/src/tools/json-tree.ts +243 -0
  1589. package/src/tools/jtd-to-json-schema.ts +219 -0
  1590. package/src/tools/jtd-to-typescript.ts +136 -0
  1591. package/src/tools/jtd-utils.ts +102 -0
  1592. package/src/tools/list-limit.ts +40 -0
  1593. package/src/tools/match-line-format.ts +22 -0
  1594. package/src/tools/output-meta.ts +754 -0
  1595. package/src/tools/path-utils.ts +739 -0
  1596. package/src/tools/plan-mode-guard.ts +68 -0
  1597. package/src/tools/puppeteer/00_stealth_tampering.txt +63 -0
  1598. package/src/tools/puppeteer/01_stealth_activity.txt +20 -0
  1599. package/src/tools/puppeteer/02_stealth_hairline.txt +11 -0
  1600. package/src/tools/puppeteer/03_stealth_botd.txt +384 -0
  1601. package/src/tools/puppeteer/04_stealth_iframe.txt +81 -0
  1602. package/src/tools/puppeteer/05_stealth_webgl.txt +75 -0
  1603. package/src/tools/puppeteer/06_stealth_screen.txt +72 -0
  1604. package/src/tools/puppeteer/07_stealth_fonts.txt +97 -0
  1605. package/src/tools/puppeteer/08_stealth_audio.txt +51 -0
  1606. package/src/tools/puppeteer/09_stealth_locale.txt +46 -0
  1607. package/src/tools/puppeteer/10_stealth_plugins.txt +206 -0
  1608. package/src/tools/puppeteer/11_stealth_hardware.txt +8 -0
  1609. package/src/tools/puppeteer/12_stealth_codecs.txt +40 -0
  1610. package/src/tools/puppeteer/13_stealth_worker.txt +74 -0
  1611. package/src/tools/read.ts +2332 -0
  1612. package/src/tools/recipe/index.ts +80 -0
  1613. package/src/tools/recipe/render.ts +19 -0
  1614. package/src/tools/recipe/runner.ts +219 -0
  1615. package/src/tools/recipe/runners/cargo.ts +131 -0
  1616. package/src/tools/recipe/runners/index.ts +8 -0
  1617. package/src/tools/recipe/runners/just.ts +73 -0
  1618. package/src/tools/recipe/runners/make.ts +101 -0
  1619. package/src/tools/recipe/runners/pkg.ts +167 -0
  1620. package/src/tools/recipe/runners/task.ts +72 -0
  1621. package/src/tools/render-mermaid.ts +68 -0
  1622. package/src/tools/render-utils.ts +774 -0
  1623. package/src/tools/renderers.ts +75 -0
  1624. package/src/tools/resolve.ts +258 -0
  1625. package/src/tools/review.ts +252 -0
  1626. package/src/tools/search-tool-bm25.ts +360 -0
  1627. package/src/tools/search.ts +786 -0
  1628. package/src/tools/sqlite-reader.ts +736 -0
  1629. package/src/tools/ssh.ts +310 -0
  1630. package/src/tools/subagent.ts +312 -0
  1631. package/src/tools/todo-write.ts +695 -0
  1632. package/src/tools/tool-errors.ts +62 -0
  1633. package/src/tools/tool-result.ts +86 -0
  1634. package/src/tools/tool-timeouts.ts +30 -0
  1635. package/src/tools/vim.ts +949 -0
  1636. package/src/tools/write.ts +953 -0
  1637. package/src/tools/yield.ts +268 -0
  1638. package/src/tui/code-cell.ts +201 -0
  1639. package/src/tui/file-list.ts +55 -0
  1640. package/src/tui/hyperlink.ts +126 -0
  1641. package/src/tui/index.ts +12 -0
  1642. package/src/tui/output-block.ts +150 -0
  1643. package/src/tui/status-line.ts +39 -0
  1644. package/src/tui/tree-list.ts +84 -0
  1645. package/src/tui/types.ts +15 -0
  1646. package/src/tui/utils.ts +103 -0
  1647. package/src/utils/changelog.ts +98 -0
  1648. package/src/utils/clipboard.ts +156 -0
  1649. package/src/utils/command-args.ts +76 -0
  1650. package/src/utils/commit-message-generator.ts +142 -0
  1651. package/src/utils/edit-mode.ts +42 -0
  1652. package/src/utils/event-bus.ts +33 -0
  1653. package/src/utils/external-editor.ts +65 -0
  1654. package/src/utils/file-display-mode.ts +45 -0
  1655. package/src/utils/file-mentions.ts +376 -0
  1656. package/src/utils/git.ts +1536 -0
  1657. package/src/utils/image-loading.ts +102 -0
  1658. package/src/utils/image-resize.ts +309 -0
  1659. package/src/utils/lang-from-path.ts +239 -0
  1660. package/src/utils/markit.ts +89 -0
  1661. package/src/utils/open.ts +20 -0
  1662. package/src/utils/session-color.ts +43 -0
  1663. package/src/utils/shell-snapshot.ts +187 -0
  1664. package/src/utils/sixel.ts +69 -0
  1665. package/src/utils/title-generator.ts +223 -0
  1666. package/src/utils/tool-choice.ts +33 -0
  1667. package/src/utils/tools-manager.ts +363 -0
  1668. package/src/vim/buffer.ts +309 -0
  1669. package/src/vim/commands.ts +382 -0
  1670. package/src/vim/engine.ts +2409 -0
  1671. package/src/vim/parser.ts +134 -0
  1672. package/src/vim/render.ts +252 -0
  1673. package/src/vim/types.ts +197 -0
  1674. package/src/web/kagi.ts +183 -0
  1675. package/src/web/parallel.ts +349 -0
  1676. package/src/web/scrapers/artifacthub.ts +207 -0
  1677. package/src/web/scrapers/arxiv.ts +83 -0
  1678. package/src/web/scrapers/aur.ts +162 -0
  1679. package/src/web/scrapers/biorxiv.ts +133 -0
  1680. package/src/web/scrapers/bluesky.ts +262 -0
  1681. package/src/web/scrapers/brew.ts +172 -0
  1682. package/src/web/scrapers/cheatsh.ts +68 -0
  1683. package/src/web/scrapers/chocolatey.ts +196 -0
  1684. package/src/web/scrapers/choosealicense.ts +95 -0
  1685. package/src/web/scrapers/cisa-kev.ts +87 -0
  1686. package/src/web/scrapers/clojars.ts +154 -0
  1687. package/src/web/scrapers/coingecko.ts +177 -0
  1688. package/src/web/scrapers/crates-io.ts +97 -0
  1689. package/src/web/scrapers/crossref.ts +136 -0
  1690. package/src/web/scrapers/devto.ts +147 -0
  1691. package/src/web/scrapers/discogs.ts +306 -0
  1692. package/src/web/scrapers/discourse.ts +197 -0
  1693. package/src/web/scrapers/dockerhub.ts +138 -0
  1694. package/src/web/scrapers/docs-rs.ts +653 -0
  1695. package/src/web/scrapers/fdroid.ts +134 -0
  1696. package/src/web/scrapers/firefox-addons.ts +191 -0
  1697. package/src/web/scrapers/flathub.ts +223 -0
  1698. package/src/web/scrapers/github-gist.ts +58 -0
  1699. package/src/web/scrapers/github.ts +452 -0
  1700. package/src/web/scrapers/gitlab.ts +401 -0
  1701. package/src/web/scrapers/go-pkg.ts +266 -0
  1702. package/src/web/scrapers/hackage.ts +140 -0
  1703. package/src/web/scrapers/hackernews.ts +189 -0
  1704. package/src/web/scrapers/hex.ts +105 -0
  1705. package/src/web/scrapers/huggingface.ts +321 -0
  1706. package/src/web/scrapers/iacr.ts +89 -0
  1707. package/src/web/scrapers/index.ts +252 -0
  1708. package/src/web/scrapers/jetbrains-marketplace.ts +159 -0
  1709. package/src/web/scrapers/lemmy.ts +203 -0
  1710. package/src/web/scrapers/lobsters.ts +175 -0
  1711. package/src/web/scrapers/mastodon.ts +292 -0
  1712. package/src/web/scrapers/maven.ts +138 -0
  1713. package/src/web/scrapers/mdn.ts +173 -0
  1714. package/src/web/scrapers/metacpan.ts +222 -0
  1715. package/src/web/scrapers/musicbrainz.ts +250 -0
  1716. package/src/web/scrapers/npm.ts +98 -0
  1717. package/src/web/scrapers/nuget.ts +183 -0
  1718. package/src/web/scrapers/nvd.ts +222 -0
  1719. package/src/web/scrapers/ollama.ts +239 -0
  1720. package/src/web/scrapers/open-vsx.ts +106 -0
  1721. package/src/web/scrapers/opencorporates.ts +292 -0
  1722. package/src/web/scrapers/openlibrary.ts +336 -0
  1723. package/src/web/scrapers/orcid.ts +286 -0
  1724. package/src/web/scrapers/osv.ts +176 -0
  1725. package/src/web/scrapers/packagist.ts +160 -0
  1726. package/src/web/scrapers/pub-dev.ts +143 -0
  1727. package/src/web/scrapers/pubmed.ts +211 -0
  1728. package/src/web/scrapers/pypi.ts +112 -0
  1729. package/src/web/scrapers/rawg.ts +110 -0
  1730. package/src/web/scrapers/readthedocs.ts +120 -0
  1731. package/src/web/scrapers/reddit.ts +95 -0
  1732. package/src/web/scrapers/repology.ts +251 -0
  1733. package/src/web/scrapers/rfc.ts +201 -0
  1734. package/src/web/scrapers/rubygems.ts +103 -0
  1735. package/src/web/scrapers/searchcode.ts +189 -0
  1736. package/src/web/scrapers/sec-edgar.ts +261 -0
  1737. package/src/web/scrapers/semantic-scholar.ts +171 -0
  1738. package/src/web/scrapers/snapcraft.ts +187 -0
  1739. package/src/web/scrapers/sourcegraph.ts +336 -0
  1740. package/src/web/scrapers/spdx.ts +108 -0
  1741. package/src/web/scrapers/spotify.ts +198 -0
  1742. package/src/web/scrapers/stackoverflow.ts +120 -0
  1743. package/src/web/scrapers/terraform.ts +277 -0
  1744. package/src/web/scrapers/tldr.ts +47 -0
  1745. package/src/web/scrapers/twitter.ts +93 -0
  1746. package/src/web/scrapers/types.ts +318 -0
  1747. package/src/web/scrapers/utils.ts +109 -0
  1748. package/src/web/scrapers/vimeo.ts +133 -0
  1749. package/src/web/scrapers/vscode-marketplace.ts +187 -0
  1750. package/src/web/scrapers/w3c.ts +156 -0
  1751. package/src/web/scrapers/wikidata.ts +344 -0
  1752. package/src/web/scrapers/wikipedia.ts +84 -0
  1753. package/src/web/scrapers/youtube.ts +319 -0
  1754. package/src/web/search/index.ts +288 -0
  1755. package/src/web/search/provider.ts +173 -0
  1756. package/src/web/search/providers/anthropic.ts +302 -0
  1757. package/src/web/search/providers/base.ts +71 -0
  1758. package/src/web/search/providers/brave.ts +149 -0
  1759. package/src/web/search/providers/codex.ts +556 -0
  1760. package/src/web/search/providers/exa.ts +193 -0
  1761. package/src/web/search/providers/gemini.ts +455 -0
  1762. package/src/web/search/providers/jina.ts +101 -0
  1763. package/src/web/search/providers/kagi.ts +75 -0
  1764. package/src/web/search/providers/kimi.ts +171 -0
  1765. package/src/web/search/providers/parallel.ts +210 -0
  1766. package/src/web/search/providers/perplexity.ts +575 -0
  1767. package/src/web/search/providers/searxng.ts +309 -0
  1768. package/src/web/search/providers/synthetic.ts +108 -0
  1769. package/src/web/search/providers/tavily.ts +173 -0
  1770. package/src/web/search/providers/utils.ts +128 -0
  1771. package/src/web/search/providers/zai.ts +320 -0
  1772. package/src/web/search/render.ts +299 -0
  1773. package/src/web/search/types.ts +436 -0
  1774. package/src/web/search/utils.ts +17 -0
  1775. package/src/workspace-tree.ts +286 -0
@@ -0,0 +1,2939 @@
1
+ import { THINKING_EFFORTS } from "@gajae-code/ai";
2
+ import { TASK_SIMPLE_MODES } from "../task/simple-mode";
3
+ import { getThinkingLevelMetadata } from "../thinking";
4
+ import { EDIT_MODES } from "../utils/edit-mode";
5
+ import {
6
+ DEFAULT_DISABLED_EXTENSIONS,
7
+ DEFAULT_SKILL_DISCOVERY_SETTINGS,
8
+ type SkillDiscoverySettings,
9
+ } from "./skill-settings-defaults";
10
+
11
+ /** Unified settings schema - single source of truth for all settings.
12
+ * Unified settings schema - single source of truth for all settings.
13
+ *
14
+ * Each setting is defined once here with:
15
+ * - Type and default value
16
+ * - Optional UI metadata (label, description, tab)
17
+ *
18
+ * The Settings singleton provides type-safe path-based access:
19
+ * settings.get("compaction.enabled") // => boolean
20
+ * settings.set("theme.dark", "red-claw") // sync, saves in background
21
+ */
22
+
23
+ // ═══════════════════════════════════════════════════════════════════════════
24
+ // Schema Definition Types
25
+ // ═══════════════════════════════════════════════════════════════════════════
26
+
27
+ export type SettingTab =
28
+ | "appearance"
29
+ | "model"
30
+ | "interaction"
31
+ | "context"
32
+ | "memory"
33
+ | "editing"
34
+ | "tools"
35
+ | "tasks"
36
+ | "providers";
37
+
38
+ /** Tab display metadata - icon is resolved via theme.symbol() */
39
+ export type TabMetadata = { label: string; icon: `tab.${string}` };
40
+
41
+ /** Ordered list of tabs for UI rendering */
42
+ export const SETTING_TABS: SettingTab[] = [
43
+ "appearance",
44
+ "model",
45
+ "interaction",
46
+ "context",
47
+ "memory",
48
+ "editing",
49
+ "tools",
50
+ "tasks",
51
+ "providers",
52
+ ];
53
+
54
+ /** Tab display metadata - icon is a symbol key from theme.ts (tab.*) */
55
+ export const TAB_METADATA: Record<SettingTab, { label: string; icon: `tab.${string}` }> = {
56
+ appearance: { label: "Appearance", icon: "tab.appearance" },
57
+ model: { label: "Model", icon: "tab.model" },
58
+ interaction: { label: "Interaction", icon: "tab.interaction" },
59
+ context: { label: "Context", icon: "tab.context" },
60
+ memory: { label: "Memory", icon: "tab.memory" },
61
+ editing: { label: "Editing", icon: "tab.editing" },
62
+ tools: { label: "Tools", icon: "tab.tools" },
63
+ tasks: { label: "Tasks", icon: "tab.tasks" },
64
+ providers: { label: "Providers", icon: "tab.providers" },
65
+ };
66
+
67
+ /** Status line segment identifiers */
68
+ export type StatusLineSegmentId =
69
+ | "gajae"
70
+ | "pi" // legacy custom alias; public presets use gajae
71
+ | "model"
72
+ | "mode"
73
+ | "path"
74
+ | "git"
75
+ | "pr"
76
+ | "subagents"
77
+ | "token_in"
78
+ | "token_out"
79
+ | "token_total"
80
+ | "token_rate"
81
+ | "cost"
82
+ | "context_pct"
83
+ | "context_total"
84
+ | "time_spent"
85
+ | "time"
86
+ | "session"
87
+ | "hostname"
88
+ | "cache_read"
89
+ | "cache_write"
90
+ | "session_name"
91
+ | "usage";
92
+
93
+ /** Submenu choice metadata. */
94
+ export type SubmenuOption<V extends string = string> = {
95
+ value: V;
96
+ label: string;
97
+ description?: string;
98
+ };
99
+
100
+ interface UiBase {
101
+ tab: SettingTab;
102
+ label: string;
103
+ description: string;
104
+ /** Condition function name - setting only shown when true */
105
+ condition?: string;
106
+ }
107
+
108
+ interface UiBoolean extends UiBase {}
109
+
110
+ interface UiEnum<T extends readonly string[]> extends UiBase {
111
+ /** Submenu options. When omitted, the enum renders as an inline toggle derived from `values`. */
112
+ options?: ReadonlyArray<SubmenuOption<T[number]>>;
113
+ }
114
+
115
+ interface UiNumber extends UiBase {
116
+ /** Submenu options. Without options, a numeric setting has no UI representation (intentional hide). */
117
+ options?: ReadonlyArray<SubmenuOption>;
118
+ }
119
+
120
+ interface UiString extends UiBase {
121
+ /**
122
+ * Submenu options.
123
+ * - Array → submenu with these choices.
124
+ * - "runtime" → submenu populated by the runtime layer (theme registry, etc.).
125
+ * - Omitted → renders as a free text input.
126
+ */
127
+ options?: ReadonlyArray<SubmenuOption> | "runtime";
128
+ }
129
+
130
+ /** Wide ui shape exposed to consumers that walk the schema generically. */
131
+ export type AnyUiMetadata = UiBase & {
132
+ options?: ReadonlyArray<SubmenuOption> | "runtime";
133
+ };
134
+
135
+ interface BooleanDef {
136
+ type: "boolean";
137
+ default: boolean;
138
+ ui?: UiBoolean;
139
+ }
140
+
141
+ interface StringDef {
142
+ type: "string";
143
+ default: string | undefined;
144
+ ui?: UiString;
145
+ }
146
+
147
+ interface NumberDef {
148
+ type: "number";
149
+ default: number;
150
+ ui?: UiNumber;
151
+ }
152
+
153
+ interface EnumDef<T extends readonly string[]> {
154
+ type: "enum";
155
+ values: T;
156
+ default: T[number];
157
+ ui?: UiEnum<T>;
158
+ }
159
+
160
+ interface ArrayDef<T> {
161
+ type: "array";
162
+ default: T[];
163
+ ui?: UiBase;
164
+ }
165
+
166
+ interface RecordDef<T> {
167
+ type: "record";
168
+ default: Record<string, T>;
169
+ ui?: UiBase;
170
+ }
171
+
172
+ type SettingDef =
173
+ | BooleanDef
174
+ | StringDef
175
+ | NumberDef
176
+ | EnumDef<readonly string[]>
177
+ | ArrayDef<unknown>
178
+ | RecordDef<unknown>;
179
+
180
+ // ═══════════════════════════════════════════════════════════════════════════
181
+ // Schema Definition
182
+ // ═══════════════════════════════════════════════════════════════════════════
183
+
184
+ export interface ModelTagDef {
185
+ name: string;
186
+ color?: string;
187
+ }
188
+
189
+ export interface ModelTagsSettings {
190
+ [key: string]: ModelTagDef;
191
+ }
192
+
193
+ // Typed defaults for array/record settings — named constants avoid `as` casts
194
+ // under `as const` while still letting SettingValue infer the correct element type.
195
+ const EMPTY_STRING_ARRAY: string[] = [];
196
+ const EMPTY_STRING_RECORD: Record<string, string> = {};
197
+ const DEFAULT_CYCLE_ORDER: string[] = ["default"];
198
+ const EMPTY_MODEL_TAGS_RECORD: ModelTagsSettings = {};
199
+ const HINDSIGHT_RECALL_TYPES_DEFAULT: string[] = ["world", "experience"];
200
+ export const DEFAULT_BASH_INTERCEPTOR_RULES: BashInterceptorRule[] = [
201
+ {
202
+ pattern: "^\\s*(cat|head|tail|less|more)\\s+",
203
+ tool: "read",
204
+ message: "Use the `read` tool instead of cat/head/tail. It provides better context and handles binary files.",
205
+ },
206
+ {
207
+ pattern: "^\\s*(grep|rg|ripgrep|ag|ack)\\s+",
208
+ tool: "search",
209
+ message: "Use the `search` tool instead of grep/rg. It respects .gitignore and provides structured output.",
210
+ },
211
+ {
212
+ pattern: "^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)",
213
+ tool: "find",
214
+ message: "Use the `find` tool instead of find/fd. It respects .gitignore and is faster for glob patterns.",
215
+ },
216
+ {
217
+ pattern: "^\\s*sed\\s+(-i|--in-place)",
218
+ tool: "edit",
219
+ message: "Use the `edit` tool instead of sed -i. It provides diff preview and fuzzy matching.",
220
+ },
221
+ {
222
+ pattern: "^\\s*perl\\s+.*-[pn]?i",
223
+ tool: "edit",
224
+ message: "Use the `edit` tool instead of perl -i. It provides diff preview and fuzzy matching.",
225
+ },
226
+ {
227
+ pattern: "^\\s*awk\\s+.*-i\\s+inplace",
228
+ tool: "edit",
229
+ message: "Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching.",
230
+ },
231
+ {
232
+ pattern: "^\\s*(echo|printf|cat\\s*<<)\\s+.*[^|]>\\s*\\S",
233
+ tool: "write",
234
+ message: "Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation.",
235
+ },
236
+ ];
237
+
238
+ export const SETTINGS_SCHEMA = {
239
+ // ────────────────────────────────────────────────────────────────────────
240
+ // General settings (no UI)
241
+ // ────────────────────────────────────────────────────────────────────────
242
+ lastChangelogVersion: { type: "string", default: undefined },
243
+
244
+ // Auth broker — credentials proxied through a remote `gjc auth-broker serve`
245
+ // host. Hidden from the UI; populate via env vars or hand-edited config.yml.
246
+ // Env (`GJC_AUTH_BROKER_URL` / `GJC_AUTH_BROKER_TOKEN`) takes precedence so
247
+ // per-machine overrides remain trivial.
248
+ "auth.broker.url": { type: "string", default: undefined },
249
+ "auth.broker.token": { type: "string", default: undefined },
250
+
251
+ autoResume: {
252
+ type: "boolean",
253
+ default: false,
254
+ ui: {
255
+ tab: "interaction",
256
+ label: "Auto Resume",
257
+ description: "Automatically resume the most recent session in the current directory",
258
+ },
259
+ },
260
+
261
+ // macOS power assertions (caffeinate flags). No-op on other platforms.
262
+ "power.preventIdleSleep": {
263
+ type: "boolean",
264
+ default: true,
265
+ ui: {
266
+ tab: "interaction",
267
+ label: "Prevent Idle Sleep (macOS)",
268
+ description: "caffeinate -i: keep the system awake while a session is open",
269
+ },
270
+ },
271
+ "power.preventSystemSleep": {
272
+ type: "boolean",
273
+ default: false,
274
+ ui: {
275
+ tab: "interaction",
276
+ label: "Prevent System Sleep on AC (macOS)",
277
+ description: "caffeinate -s: block all system sleep while on AC power",
278
+ },
279
+ },
280
+ "power.declareUserActive": {
281
+ type: "boolean",
282
+ default: false,
283
+ ui: {
284
+ tab: "interaction",
285
+ label: "Declare User Active (macOS)",
286
+ description: "caffeinate -u: keep the display lit and treat the user as active",
287
+ },
288
+ },
289
+ "power.preventDisplaySleep": {
290
+ type: "boolean",
291
+ default: false,
292
+ ui: {
293
+ tab: "interaction",
294
+ label: "Prevent Display Sleep (macOS)",
295
+ description: "caffeinate -d: keep the display from idle-sleeping while a session is open",
296
+ },
297
+ },
298
+ shellPath: { type: "string", default: undefined },
299
+
300
+ extensions: { type: "array", default: EMPTY_STRING_ARRAY },
301
+
302
+ "marketplace.autoUpdate": {
303
+ type: "enum",
304
+ values: ["off", "notify", "auto"] as const,
305
+ default: "off",
306
+ },
307
+
308
+ enabledModels: { type: "array", default: EMPTY_STRING_ARRAY },
309
+
310
+ disabledProviders: { type: "array", default: EMPTY_STRING_ARRAY },
311
+
312
+ disabledExtensions: { type: "array", default: DEFAULT_DISABLED_EXTENSIONS },
313
+
314
+ modelRoles: { type: "record", default: EMPTY_STRING_RECORD },
315
+
316
+ modelTags: { type: "record", default: EMPTY_MODEL_TAGS_RECORD },
317
+
318
+ modelProviderOrder: { type: "array", default: EMPTY_STRING_ARRAY },
319
+
320
+ cycleOrder: { type: "array", default: DEFAULT_CYCLE_ORDER },
321
+
322
+ // ────────────────────────────────────────────────────────────────────────
323
+ // Appearance
324
+ // ────────────────────────────────────────────────────────────────────────
325
+
326
+ // Theme
327
+ "theme.dark": {
328
+ type: "string",
329
+ default: "red-claw",
330
+ ui: {
331
+ tab: "appearance",
332
+ label: "Dark Theme",
333
+ description: "Theme used when terminal has dark background",
334
+ options: "runtime",
335
+ },
336
+ },
337
+
338
+ "theme.light": {
339
+ type: "string",
340
+ default: "light",
341
+ ui: {
342
+ tab: "appearance",
343
+ label: "Light Theme",
344
+ description: "Theme used when terminal has light background",
345
+ options: "runtime",
346
+ },
347
+ },
348
+
349
+ symbolPreset: {
350
+ type: "enum",
351
+ values: ["unicode", "nerd", "ascii"] as const,
352
+ default: "unicode",
353
+ ui: {
354
+ tab: "appearance",
355
+ label: "Symbol Preset",
356
+ description: "Icon/symbol style",
357
+ options: [
358
+ { value: "unicode", label: "Unicode", description: "Standard symbols (default)" },
359
+ { value: "nerd", label: "Nerd Font", description: "Requires Nerd Font" },
360
+ { value: "ascii", label: "ASCII", description: "Maximum compatibility" },
361
+ ],
362
+ },
363
+ },
364
+
365
+ colorBlindMode: {
366
+ type: "boolean",
367
+ default: false,
368
+ ui: {
369
+ tab: "appearance",
370
+ label: "Color-Blind Mode",
371
+ description: "Use blue instead of green for diff additions",
372
+ },
373
+ },
374
+
375
+ // Status line
376
+ "statusLine.preset": {
377
+ type: "enum",
378
+ values: ["default", "minimal", "compact", "full", "nerd", "ascii", "custom"] as const,
379
+ default: "default",
380
+ ui: {
381
+ tab: "appearance",
382
+ label: "Status Line Preset",
383
+ description: "Pre-built status line configurations",
384
+ options: [
385
+ { value: "default", label: "Default", description: "Model, path, git, context, tokens, cost" },
386
+ { value: "minimal", label: "Minimal", description: "Path and git only" },
387
+ { value: "compact", label: "Compact", description: "Model, git, cost, context" },
388
+ { value: "full", label: "Full", description: "All segments including time" },
389
+ { value: "nerd", label: "Nerd", description: "Maximum info with Nerd Font icons" },
390
+ { value: "ascii", label: "ASCII", description: "No special characters" },
391
+ { value: "custom", label: "Custom", description: "User-defined segments" },
392
+ ],
393
+ },
394
+ },
395
+
396
+ "statusLine.separator": {
397
+ type: "enum",
398
+ values: ["powerline", "powerline-thin", "slash", "pipe", "block", "none", "ascii"] as const,
399
+ default: "slash",
400
+ ui: {
401
+ tab: "appearance",
402
+ label: "Status Line Separator",
403
+ description: "Style of separators between segments",
404
+ options: [
405
+ { value: "powerline", label: "Powerline", description: "Solid arrows (Nerd Font)" },
406
+ { value: "powerline-thin", label: "Thin chevron", description: "Thin arrows (Nerd Font)" },
407
+ { value: "slash", label: "Slash", description: "Forward slashes" },
408
+ { value: "pipe", label: "Pipe", description: "Vertical pipes" },
409
+ { value: "block", label: "Block", description: "Solid blocks" },
410
+ { value: "none", label: "None", description: "Space only" },
411
+ { value: "ascii", label: "ASCII", description: "Greater-than signs" },
412
+ ],
413
+ },
414
+ },
415
+
416
+ "statusLine.sessionAccent": {
417
+ type: "boolean",
418
+ default: true,
419
+ ui: {
420
+ tab: "appearance",
421
+ label: "Session Accent",
422
+ description: "Use the session name color for the editor border and status line gap",
423
+ },
424
+ },
425
+ "tools.artifactSpillThreshold": {
426
+ type: "number",
427
+ default: 50,
428
+ ui: {
429
+ tab: "tools",
430
+ label: "Artifact spill threshold (KB)",
431
+ description: "Tool output above this size is saved as an artifact; tail is kept inline",
432
+ options: [
433
+ { value: "1", label: "1 KB", description: "~250 tokens" },
434
+ { value: "2.5", label: "2.5 KB", description: "~625 tokens" },
435
+ { value: "5", label: "5 KB", description: "~1.25K tokens" },
436
+ { value: "10", label: "10 KB", description: "~2.5K tokens" },
437
+ { value: "20", label: "20 KB", description: "~5K tokens" },
438
+ { value: "30", label: "30 KB", description: "~7.5K tokens" },
439
+ { value: "50", label: "50 KB", description: "Default; ~12.5K tokens" },
440
+ { value: "75", label: "75 KB", description: "~19K tokens" },
441
+ { value: "100", label: "100 KB", description: "~25K tokens" },
442
+ { value: "200", label: "200 KB", description: "~50K tokens" },
443
+ { value: "500", label: "500 KB", description: "~125K tokens" },
444
+ { value: "1000", label: "1 MB", description: "~250K tokens" },
445
+ ],
446
+ },
447
+ },
448
+ "tools.artifactTailBytes": {
449
+ type: "number",
450
+ default: 20,
451
+ ui: {
452
+ tab: "tools",
453
+ label: "Artifact tail size (KB)",
454
+ description: "Amount of tail content kept inline when output spills to artifact",
455
+ options: [
456
+ { value: "1", label: "1 KB", description: "~250 tokens" },
457
+ { value: "2.5", label: "2.5 KB", description: "~625 tokens" },
458
+ { value: "5", label: "5 KB", description: "~1.25K tokens" },
459
+ { value: "10", label: "10 KB", description: "~2.5K tokens" },
460
+ { value: "20", label: "20 KB", description: "Default; ~5K tokens" },
461
+ { value: "50", label: "50 KB", description: "~12.5K tokens" },
462
+ { value: "100", label: "100 KB", description: "~25K tokens" },
463
+ { value: "200", label: "200 KB", description: "~50K tokens" },
464
+ ],
465
+ },
466
+ },
467
+ "tools.artifactHeadBytes": {
468
+ type: "number",
469
+ default: 20,
470
+ ui: {
471
+ tab: "tools",
472
+ label: "Artifact head size (KB)",
473
+ description:
474
+ "Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables — keep tail only.",
475
+ options: [
476
+ { value: "0", label: "0 KB", description: "Disabled; tail-only truncation" },
477
+ { value: "1", label: "1 KB", description: "~250 tokens" },
478
+ { value: "2.5", label: "2.5 KB", description: "~625 tokens" },
479
+ { value: "5", label: "5 KB", description: "~1.25K tokens" },
480
+ { value: "10", label: "10 KB", description: "~2.5K tokens" },
481
+ { value: "20", label: "20 KB", description: "Default; ~5K tokens" },
482
+ { value: "50", label: "50 KB", description: "~12.5K tokens" },
483
+ { value: "100", label: "100 KB", description: "~25K tokens" },
484
+ { value: "200", label: "200 KB", description: "~50K tokens" },
485
+ ],
486
+ },
487
+ },
488
+ "tools.outputMaxColumns": {
489
+ type: "number",
490
+ default: 768,
491
+ ui: {
492
+ tab: "tools",
493
+ label: "Output column cap",
494
+ description:
495
+ "Per-line byte cap for streaming tool outputs (bash, ssh, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.",
496
+ options: [
497
+ { value: "0", label: "Off", description: "No per-line cap" },
498
+ { value: "256", label: "256", description: "Tight" },
499
+ { value: "512", label: "512" },
500
+ { value: "768", label: "768", description: "Default" },
501
+ { value: "1024", label: "1024" },
502
+ { value: "2048", label: "2048" },
503
+ { value: "4096", label: "4096", description: "Loose" },
504
+ ],
505
+ },
506
+ },
507
+ "tools.artifactTailLines": {
508
+ type: "number",
509
+ default: 500,
510
+ ui: {
511
+ tab: "tools",
512
+ label: "Artifact tail lines",
513
+ description: "Maximum lines of tail content kept inline when output spills to artifact",
514
+ options: [
515
+ { value: "50", label: "50 lines", description: "~250 tokens" },
516
+ { value: "100", label: "100 lines", description: "~500 tokens" },
517
+ { value: "250", label: "250 lines", description: "~1.25K tokens" },
518
+ { value: "500", label: "500 lines", description: "Default; ~2.5K tokens" },
519
+ { value: "1000", label: "1000 lines", description: "~5K tokens" },
520
+ { value: "2000", label: "2000 lines", description: "~10K tokens" },
521
+ { value: "5000", label: "5000 lines", description: "~25K tokens" },
522
+ ],
523
+ },
524
+ },
525
+
526
+ "statusLine.showHookStatus": {
527
+ type: "boolean",
528
+ default: false,
529
+ },
530
+
531
+ "statusLine.showSkillHud": {
532
+ type: "boolean",
533
+ default: true,
534
+ },
535
+
536
+ "statusLine.leftSegments": { type: "array", default: [] as StatusLineSegmentId[] },
537
+
538
+ "statusLine.rightSegments": { type: "array", default: [] as StatusLineSegmentId[] },
539
+
540
+ "statusLine.segmentOptions": { type: "record", default: {} as Record<string, unknown> },
541
+
542
+ // Images and terminal
543
+ "terminal.showImages": {
544
+ type: "boolean",
545
+ default: true,
546
+ ui: {
547
+ tab: "appearance",
548
+ label: "Show Inline Images",
549
+ description: "Render images inline in terminal",
550
+ condition: "hasImageProtocol",
551
+ },
552
+ },
553
+
554
+ "images.autoResize": {
555
+ type: "boolean",
556
+ default: true,
557
+ ui: {
558
+ tab: "appearance",
559
+ label: "Auto-Resize Images",
560
+ description: "Resize large images to 2000x2000 max for better model compatibility",
561
+ },
562
+ },
563
+
564
+ "images.blockImages": {
565
+ type: "boolean",
566
+ default: false,
567
+ ui: { tab: "appearance", label: "Block Images", description: "Prevent images from being sent to LLM providers" },
568
+ },
569
+
570
+ "tui.maxInlineImageColumns": {
571
+ type: "number",
572
+ default: 100,
573
+ description:
574
+ "Maximum width in terminal columns for inline images (default 100). Set to 0 for unlimited (bounded only by terminal width).",
575
+ },
576
+
577
+ "tui.maxInlineImageRows": {
578
+ type: "number",
579
+ default: 20,
580
+ description:
581
+ "Maximum height in terminal rows for inline images (default 20). Set to 0 to use only the viewport-based limit (60% of terminal height).",
582
+ },
583
+
584
+ "tui.hyperlinks": {
585
+ type: "enum",
586
+ values: ["off", "auto", "always"] as const,
587
+ default: "auto",
588
+ ui: {
589
+ tab: "appearance",
590
+ label: "Terminal Hyperlinks",
591
+ description:
592
+ "Wrap file paths in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional)",
593
+ },
594
+ },
595
+ // Display rendering
596
+ "display.tabWidth": {
597
+ type: "number",
598
+ default: 3,
599
+ },
600
+
601
+ "display.shimmer": {
602
+ type: "enum",
603
+ values: ["classic", "kitt", "disabled"] as const,
604
+ default: "classic",
605
+ ui: {
606
+ tab: "appearance",
607
+ label: "Shimmer",
608
+ description: "Animation style for working/loading messages",
609
+ options: [
610
+ { value: "classic", label: "Classic", description: "Soft cosine wave sweeping across the text" },
611
+ { value: "kitt", label: "KITT Scanner", description: "Knight Rider 1982 red light bouncing left-right" },
612
+ { value: "disabled", label: "Disabled", description: "No animation; static muted text" },
613
+ ],
614
+ },
615
+ },
616
+
617
+ "display.showTokenUsage": {
618
+ type: "boolean",
619
+ default: false,
620
+ ui: {
621
+ tab: "appearance",
622
+ label: "Show Token Usage",
623
+ description: "Show per-turn token usage on assistant messages",
624
+ },
625
+ },
626
+
627
+ showHardwareCursor: {
628
+ type: "boolean",
629
+ default: true, // will be computed based on platform if undefined
630
+ ui: { tab: "appearance", label: "Show Hardware Cursor", description: "Show terminal cursor for IME support" },
631
+ },
632
+
633
+ clearOnShrink: {
634
+ type: "boolean",
635
+ default: false,
636
+ ui: {
637
+ tab: "appearance",
638
+ label: "Clear on Shrink",
639
+ description: "Clear empty rows when content shrinks (may cause flicker)",
640
+ },
641
+ },
642
+
643
+ // ────────────────────────────────────────────────────────────────────────
644
+ // Model
645
+ // ────────────────────────────────────────────────────────────────────────
646
+
647
+ // Reasoning and prompts
648
+ defaultThinkingLevel: {
649
+ type: "enum",
650
+ values: THINKING_EFFORTS,
651
+ default: "high",
652
+ ui: {
653
+ tab: "model",
654
+ label: "Thinking Level",
655
+ description: "Reasoning depth for thinking-capable models",
656
+ options: [...THINKING_EFFORTS.map(getThinkingLevelMetadata)],
657
+ },
658
+ },
659
+
660
+ hideThinkingBlock: {
661
+ type: "boolean",
662
+ default: false,
663
+ ui: { tab: "model", label: "Hide Thinking Blocks", description: "Hide thinking blocks in assistant responses" },
664
+ },
665
+
666
+ repeatToolDescriptions: {
667
+ type: "boolean",
668
+ default: false,
669
+ ui: {
670
+ tab: "model",
671
+ label: "Repeat Tool Descriptions",
672
+ description: "Render full tool descriptions in the system prompt instead of a tool name list",
673
+ },
674
+ },
675
+
676
+ // Sampling
677
+ temperature: {
678
+ type: "number",
679
+ default: -1,
680
+ ui: {
681
+ tab: "model",
682
+ label: "Temperature",
683
+ description: "Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)",
684
+ options: [
685
+ { value: "-1", label: "Default", description: "Use provider default" },
686
+ { value: "0", label: "0", description: "Deterministic" },
687
+ { value: "0.2", label: "0.2", description: "Focused" },
688
+ { value: "0.5", label: "0.5", description: "Balanced" },
689
+ { value: "0.7", label: "0.7", description: "Creative" },
690
+ { value: "1", label: "1", description: "Maximum variety" },
691
+ ],
692
+ },
693
+ },
694
+
695
+ topP: {
696
+ type: "number",
697
+ default: -1,
698
+ ui: {
699
+ tab: "model",
700
+ label: "Top P",
701
+ description: "Nucleus sampling cutoff (0-1, -1 = provider default)",
702
+ options: [
703
+ { value: "-1", label: "Default", description: "Use provider default" },
704
+ { value: "0.1", label: "0.1", description: "Very focused" },
705
+ { value: "0.3", label: "0.3", description: "Focused" },
706
+ { value: "0.5", label: "0.5", description: "Balanced" },
707
+ { value: "0.9", label: "0.9", description: "Broad" },
708
+ { value: "1", label: "1", description: "No nucleus filtering" },
709
+ ],
710
+ },
711
+ },
712
+
713
+ topK: {
714
+ type: "number",
715
+ default: -1,
716
+ ui: {
717
+ tab: "model",
718
+ label: "Top K",
719
+ description: "Sample from top-K tokens (-1 = provider default)",
720
+ options: [
721
+ { value: "-1", label: "Default", description: "Use provider default" },
722
+ { value: "1", label: "1", description: "Greedy top token" },
723
+ { value: "20", label: "20", description: "Focused" },
724
+ { value: "40", label: "40", description: "Balanced" },
725
+ { value: "100", label: "100", description: "Broad" },
726
+ ],
727
+ },
728
+ },
729
+
730
+ minP: {
731
+ type: "number",
732
+ default: -1,
733
+ ui: {
734
+ tab: "model",
735
+ label: "Min P",
736
+ description: "Minimum probability threshold (0-1, -1 = provider default)",
737
+ options: [
738
+ { value: "-1", label: "Default", description: "Use provider default" },
739
+ { value: "0.01", label: "0.01", description: "Very permissive" },
740
+ { value: "0.05", label: "0.05", description: "Balanced" },
741
+ { value: "0.1", label: "0.1", description: "Strict" },
742
+ ],
743
+ },
744
+ },
745
+
746
+ presencePenalty: {
747
+ type: "number",
748
+ default: -1,
749
+ ui: {
750
+ tab: "model",
751
+ label: "Presence Penalty",
752
+ description: "Penalty for introducing already-present tokens (-1 = provider default)",
753
+ options: [
754
+ { value: "-1", label: "Default", description: "Use provider default" },
755
+ { value: "0", label: "0", description: "No penalty" },
756
+ { value: "0.5", label: "0.5", description: "Mild novelty" },
757
+ { value: "1", label: "1", description: "Encourage novelty" },
758
+ { value: "2", label: "2", description: "Strong novelty" },
759
+ ],
760
+ },
761
+ },
762
+
763
+ repetitionPenalty: {
764
+ type: "number",
765
+ default: -1,
766
+ ui: {
767
+ tab: "model",
768
+ label: "Repetition Penalty",
769
+ description: "Penalty for repeated tokens (-1 = provider default)",
770
+ options: [
771
+ { value: "-1", label: "Default", description: "Use provider default" },
772
+ { value: "0.8", label: "0.8", description: "Allow repetition" },
773
+ { value: "1", label: "1", description: "No penalty" },
774
+ { value: "1.1", label: "1.1", description: "Mild penalty" },
775
+ { value: "1.2", label: "1.2", description: "Balanced" },
776
+ { value: "1.5", label: "1.5", description: "Strong penalty" },
777
+ ],
778
+ },
779
+ },
780
+
781
+ serviceTier: {
782
+ type: "enum",
783
+ values: ["none", "auto", "default", "flex", "scale", "priority", "openai-only", "claude-only"] as const,
784
+ default: "none",
785
+ ui: {
786
+ tab: "model",
787
+ label: "Service Tier",
788
+ description:
789
+ 'Processing priority hint (none = omit). OpenAI accepts the tier values directly; Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.',
790
+ options: [
791
+ { value: "none", label: "None", description: "Omit service_tier parameter" },
792
+ { value: "auto", label: "Auto", description: "Use provider default tier selection (OpenAI)" },
793
+ { value: "default", label: "Default", description: "Standard priority processing (OpenAI)" },
794
+ { value: "flex", label: "Flex", description: "Flexible capacity tier when available (OpenAI)" },
795
+ { value: "scale", label: "Scale", description: "Scale Tier credits when available (OpenAI)" },
796
+ {
797
+ value: "priority",
798
+ label: "Priority",
799
+ description: "Priority on every supported provider (OpenAI `service_tier`, Anthropic fast mode)",
800
+ },
801
+ {
802
+ value: "openai-only",
803
+ label: "Priority (OpenAI only)",
804
+ description: "Priority on OpenAI/OpenAI-Codex requests; ignored elsewhere",
805
+ },
806
+ {
807
+ value: "claude-only",
808
+ label: "Priority (Claude only)",
809
+ description: "Anthropic fast mode on direct Claude requests; ignored elsewhere (incl. Bedrock/Vertex)",
810
+ },
811
+ ],
812
+ },
813
+ },
814
+
815
+ // Retries
816
+ "retry.enabled": { type: "boolean", default: true },
817
+
818
+ "retry.maxRetries": {
819
+ type: "number",
820
+ default: 3,
821
+ ui: {
822
+ tab: "model",
823
+ label: "Retry Attempts",
824
+ description: "Maximum retry attempts on API errors",
825
+ options: [
826
+ { value: "1", label: "1 retry" },
827
+ { value: "2", label: "2 retries" },
828
+ { value: "3", label: "3 retries" },
829
+ { value: "5", label: "5 retries" },
830
+ { value: "10", label: "10 retries" },
831
+ ],
832
+ },
833
+ },
834
+
835
+ "retry.baseDelayMs": { type: "number", default: 2000 },
836
+ "retry.maxDelayMs": {
837
+ type: "number",
838
+ default: 5 * 60 * 1000,
839
+ ui: {
840
+ tab: "model",
841
+ label: "Max Retry Delay",
842
+ description:
843
+ "Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows).",
844
+ },
845
+ },
846
+ "retry.fallbackChains": { type: "record", default: {} as Record<string, string[]> },
847
+ "retry.fallbackRevertPolicy": {
848
+ type: "enum",
849
+ values: ["cooldown-expiry", "never"] as const,
850
+ default: "cooldown-expiry",
851
+ ui: {
852
+ tab: "model",
853
+ label: "Fallback Revert Policy",
854
+ description: "When to return to the primary model after a fallback",
855
+ options: [
856
+ {
857
+ value: "cooldown-expiry",
858
+ label: "Cooldown expiry",
859
+ description: "Return to the primary model after its suppression window ends",
860
+ },
861
+ { value: "never", label: "Never", description: "Stay on the fallback model until manually changed" },
862
+ ],
863
+ },
864
+ },
865
+
866
+ // ────────────────────────────────────────────────────────────────────────
867
+ // Interaction
868
+ // ────────────────────────────────────────────────────────────────────────
869
+
870
+ // Conversation flow
871
+ steeringMode: {
872
+ type: "enum",
873
+ values: ["all", "one-at-a-time"] as const,
874
+ default: "one-at-a-time",
875
+ ui: {
876
+ tab: "interaction",
877
+ label: "Steering Mode",
878
+ description: "How to process queued messages while agent is working",
879
+ },
880
+ },
881
+
882
+ followUpMode: {
883
+ type: "enum",
884
+ values: ["all", "one-at-a-time"] as const,
885
+ default: "one-at-a-time",
886
+ ui: {
887
+ tab: "interaction",
888
+ label: "Follow-Up Mode",
889
+ description: "How to drain follow-up messages after a turn completes",
890
+ },
891
+ },
892
+
893
+ interruptMode: {
894
+ type: "enum",
895
+ values: ["immediate", "wait"] as const,
896
+ default: "immediate",
897
+ ui: {
898
+ tab: "interaction",
899
+ label: "Interrupt Mode",
900
+ description: "When steering messages interrupt tool execution",
901
+ },
902
+ },
903
+
904
+ "loop.mode": {
905
+ type: "enum",
906
+ values: ["prompt", "compact", "reset"] as const,
907
+ default: "prompt",
908
+ ui: {
909
+ tab: "interaction",
910
+ label: "Loop Mode",
911
+ description: "What happens between /loop iterations before re-submitting the prompt",
912
+ options: [
913
+ {
914
+ value: "prompt",
915
+ label: "Prompt",
916
+ description: "Re-submit the prompt as a follow-up message (current behavior)",
917
+ },
918
+ {
919
+ value: "compact",
920
+ label: "Compact",
921
+ description: "Compact the session context, then re-submit the prompt",
922
+ },
923
+ { value: "reset", label: "Reset", description: "Start a new session, then re-submit the prompt" },
924
+ ],
925
+ },
926
+ },
927
+
928
+ // Input and startup
929
+ doubleEscapeAction: {
930
+ type: "enum",
931
+ values: ["branch", "tree", "none"] as const,
932
+ default: "tree",
933
+ ui: {
934
+ tab: "interaction",
935
+ label: "Double-Escape Action",
936
+ description: "Action when pressing Escape twice with empty editor",
937
+ },
938
+ },
939
+
940
+ treeFilterMode: {
941
+ type: "enum",
942
+ values: ["default", "no-tools", "user-only", "labeled-only", "all"] as const,
943
+ default: "default",
944
+ ui: {
945
+ tab: "interaction",
946
+ label: "Session Tree Filter",
947
+ description: "Default filter mode when opening the session tree",
948
+ },
949
+ },
950
+
951
+ autocompleteMaxVisible: {
952
+ type: "number",
953
+ default: 5,
954
+ ui: {
955
+ tab: "interaction",
956
+ label: "Autocomplete Items",
957
+ description: "Max visible items in autocomplete dropdown (3-20)",
958
+ options: [
959
+ { value: "3", label: "3 items" },
960
+ { value: "5", label: "5 items" },
961
+ { value: "7", label: "7 items" },
962
+ { value: "10", label: "10 items" },
963
+ { value: "15", label: "15 items" },
964
+ { value: "20", label: "20 items" },
965
+ ],
966
+ },
967
+ },
968
+
969
+ emojiAutocomplete: {
970
+ type: "boolean",
971
+ default: true,
972
+ ui: {
973
+ tab: "interaction",
974
+ label: "Emoji Autocomplete",
975
+ description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`",
976
+ },
977
+ },
978
+
979
+ "startup.quiet": {
980
+ type: "boolean",
981
+ default: false,
982
+ ui: {
983
+ tab: "interaction",
984
+ label: "Quiet Startup",
985
+ description: "Skip welcome screen and startup status messages",
986
+ },
987
+ },
988
+
989
+ "startup.checkUpdate": {
990
+ type: "boolean",
991
+ default: true,
992
+ ui: {
993
+ tab: "interaction",
994
+ label: "Check for Updates",
995
+ description: "If false, skip update check",
996
+ },
997
+ },
998
+
999
+ collapseChangelog: {
1000
+ type: "boolean",
1001
+ default: false,
1002
+ ui: { tab: "interaction", label: "Collapse Changelog", description: "Show condensed changelog after updates" },
1003
+ },
1004
+
1005
+ // Notifications
1006
+ "completion.notify": {
1007
+ type: "enum",
1008
+ values: ["on", "off"] as const,
1009
+ default: "on",
1010
+ ui: { tab: "interaction", label: "Completion Notification", description: "Notify when the agent completes" },
1011
+ },
1012
+
1013
+ "ask.timeout": {
1014
+ type: "number",
1015
+ default: 0,
1016
+ ui: {
1017
+ tab: "interaction",
1018
+ label: "Ask Timeout",
1019
+ description: "Auto-select recommended option after timeout (0 to disable)",
1020
+ options: [
1021
+ { value: "0", label: "Disabled" },
1022
+ { value: "15", label: "15 seconds" },
1023
+ { value: "30", label: "30 seconds" },
1024
+ { value: "60", label: "60 seconds" },
1025
+ { value: "120", label: "120 seconds" },
1026
+ ],
1027
+ },
1028
+ },
1029
+
1030
+ "ask.notify": {
1031
+ type: "enum",
1032
+ values: ["on", "off"] as const,
1033
+ default: "on",
1034
+ ui: { tab: "interaction", label: "Ask Notification", description: "Notify when ask tool is waiting for input" },
1035
+ },
1036
+
1037
+ // Speech-to-text
1038
+ "stt.enabled": {
1039
+ type: "boolean",
1040
+ default: false,
1041
+ ui: { tab: "interaction", label: "Speech-to-Text", description: "Enable speech-to-text input via microphone" },
1042
+ },
1043
+
1044
+ "stt.language": {
1045
+ type: "string",
1046
+ default: "en",
1047
+ },
1048
+
1049
+ "stt.modelName": {
1050
+ type: "enum",
1051
+ values: ["tiny", "tiny.en", "base", "base.en", "small", "small.en", "medium", "medium.en", "large"] as const,
1052
+ default: "base.en",
1053
+ ui: {
1054
+ tab: "interaction",
1055
+ label: "Speech Model",
1056
+ description: "Whisper model size (larger = more accurate but slower)",
1057
+ options: [
1058
+ { value: "tiny", label: "tiny", description: "Multilingual; fastest, lowest accuracy" },
1059
+ { value: "tiny.en", label: "tiny.en", description: "English-only; fastest" },
1060
+ { value: "base", label: "base", description: "Multilingual; small and fast" },
1061
+ { value: "base.en", label: "base.en", description: "English-only; default" },
1062
+ { value: "small", label: "small", description: "Multilingual; balanced" },
1063
+ { value: "small.en", label: "small.en", description: "English-only; balanced" },
1064
+ { value: "medium", label: "medium", description: "Multilingual; accurate but slower" },
1065
+ { value: "medium.en", label: "medium.en", description: "English-only; accurate but slower" },
1066
+ { value: "large", label: "large", description: "Multilingual; most accurate" },
1067
+ ],
1068
+ },
1069
+ },
1070
+
1071
+ // ────────────────────────────────────────────────────────────────────────
1072
+ // Context
1073
+ // ────────────────────────────────────────────────────────────────────────
1074
+
1075
+ // Context promotion
1076
+ "contextPromotion.enabled": {
1077
+ type: "boolean",
1078
+ default: true,
1079
+ ui: {
1080
+ tab: "context",
1081
+ label: "Auto-Promote Context",
1082
+ description: "Promote to a larger-context model on context overflow instead of compacting",
1083
+ },
1084
+ },
1085
+
1086
+ // Compaction
1087
+ "compaction.enabled": {
1088
+ type: "boolean",
1089
+ default: true,
1090
+ ui: {
1091
+ tab: "context",
1092
+ label: "Auto-Compact",
1093
+ description: "Automatically compact context when it gets too large",
1094
+ },
1095
+ },
1096
+
1097
+ "compaction.strategy": {
1098
+ type: "enum",
1099
+ values: ["context-full", "handoff", "off"] as const,
1100
+ default: "context-full",
1101
+ ui: {
1102
+ tab: "context",
1103
+ label: "Compaction Strategy",
1104
+ description: "Choose in-place context-full maintenance, auto-handoff, or disable auto maintenance (off)",
1105
+ options: [
1106
+ {
1107
+ value: "context-full",
1108
+ label: "Context-full",
1109
+ description: "Summarize in-place and keep the current session",
1110
+ },
1111
+ { value: "handoff", label: "Handoff", description: "Generate handoff and continue in a new session" },
1112
+ {
1113
+ value: "off",
1114
+ label: "Off",
1115
+ description: "Disable automatic context maintenance (same behavior as Auto-compact off)",
1116
+ },
1117
+ ],
1118
+ },
1119
+ },
1120
+
1121
+ "compaction.thresholdPercent": {
1122
+ type: "number",
1123
+ default: -1,
1124
+ ui: {
1125
+ tab: "context",
1126
+ label: "Compaction Threshold",
1127
+ description: "Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior",
1128
+ options: [
1129
+ { value: "default", label: "Default", description: "Legacy reserve-based threshold" },
1130
+ { value: "10", label: "10%", description: "Extremely early maintenance" },
1131
+ { value: "20", label: "20%", description: "Very early maintenance" },
1132
+ { value: "30", label: "30%", description: "Early maintenance" },
1133
+ { value: "40", label: "40%", description: "Moderately early maintenance" },
1134
+ { value: "50", label: "50%", description: "Halfway point" },
1135
+ { value: "60", label: "60%", description: "Moderate context usage" },
1136
+ { value: "70", label: "70%", description: "Balanced" },
1137
+ { value: "75", label: "75%", description: "Slightly aggressive" },
1138
+ { value: "80", label: "80%", description: "Typical threshold" },
1139
+ { value: "85", label: "85%", description: "Aggressive context usage" },
1140
+ { value: "90", label: "90%", description: "Very aggressive" },
1141
+ { value: "95", label: "95%", description: "Near context limit" },
1142
+ ],
1143
+ },
1144
+ },
1145
+ "compaction.thresholdTokens": {
1146
+ type: "number",
1147
+ default: -1,
1148
+ ui: {
1149
+ tab: "context",
1150
+ label: "Compaction Token Limit",
1151
+ description: "Fixed token limit for context maintenance; overrides percentage if set",
1152
+ options: [
1153
+ { value: "default", label: "Default", description: "Use percentage-based threshold" },
1154
+ { value: "25000", label: "25K tokens", description: "Quarter of a 200K window" },
1155
+ { value: "50000", label: "50K tokens", description: "Half of a 200K window" },
1156
+ { value: "100000", label: "100K tokens", description: "Half of a 200K window" },
1157
+ { value: "150000", label: "150K tokens", description: "Three-quarters of a 200K window" },
1158
+ { value: "200000", label: "200K tokens", description: "Full standard context window" },
1159
+ { value: "300000", label: "300K tokens", description: "Large context window" },
1160
+ { value: "500000", label: "500K tokens", description: "Very large context window" },
1161
+ ],
1162
+ },
1163
+ },
1164
+
1165
+ "compaction.handoffSaveToDisk": {
1166
+ type: "boolean",
1167
+ default: false,
1168
+ ui: {
1169
+ tab: "context",
1170
+ label: "Save Handoff Docs",
1171
+ description: "Save generated handoff documents to markdown files for the auto-handoff flow",
1172
+ },
1173
+ },
1174
+
1175
+ "compaction.remoteEnabled": {
1176
+ type: "boolean",
1177
+ default: true,
1178
+ ui: {
1179
+ tab: "context",
1180
+ label: "Remote Compaction",
1181
+ description: "Use remote compaction endpoints when available instead of local summarization",
1182
+ },
1183
+ },
1184
+
1185
+ "compaction.reserveTokens": { type: "number", default: 16384 },
1186
+
1187
+ "compaction.keepRecentTokens": { type: "number", default: 20000 },
1188
+
1189
+ "compaction.autoContinue": { type: "boolean", default: true },
1190
+
1191
+ "compaction.remoteEndpoint": { type: "string", default: undefined },
1192
+
1193
+ // Idle compaction
1194
+ "compaction.idleEnabled": {
1195
+ type: "boolean",
1196
+ default: false,
1197
+ ui: {
1198
+ tab: "context",
1199
+ label: "Idle Compaction",
1200
+ description: "Compact context while idle when token count exceeds threshold",
1201
+ },
1202
+ },
1203
+
1204
+ "compaction.idleThresholdTokens": {
1205
+ type: "number",
1206
+ default: 200000,
1207
+ ui: {
1208
+ tab: "context",
1209
+ label: "Idle Compaction Threshold",
1210
+ description: "Token count above which idle compaction triggers",
1211
+ options: [
1212
+ { value: "100000", label: "100K tokens" },
1213
+ { value: "200000", label: "200K tokens" },
1214
+ { value: "300000", label: "300K tokens" },
1215
+ { value: "400000", label: "400K tokens" },
1216
+ { value: "500000", label: "500K tokens" },
1217
+ { value: "600000", label: "600K tokens" },
1218
+ { value: "700000", label: "700K tokens" },
1219
+ { value: "800000", label: "800K tokens" },
1220
+ { value: "900000", label: "900K tokens" },
1221
+ ],
1222
+ },
1223
+ },
1224
+
1225
+ "compaction.idleTimeoutSeconds": {
1226
+ type: "number",
1227
+ default: 300,
1228
+ ui: {
1229
+ tab: "context",
1230
+ label: "Idle Compaction Delay",
1231
+ description: "Seconds to wait while idle before compacting",
1232
+ options: [
1233
+ { value: "60", label: "1 minute" },
1234
+ { value: "120", label: "2 minutes" },
1235
+ { value: "300", label: "5 minutes" },
1236
+ { value: "600", label: "10 minutes" },
1237
+ { value: "1800", label: "30 minutes" },
1238
+ { value: "3600", label: "1 hour" },
1239
+ ],
1240
+ },
1241
+ },
1242
+ // Branch summaries
1243
+ "branchSummary.enabled": {
1244
+ type: "boolean",
1245
+ default: false,
1246
+ ui: { tab: "context", label: "Branch Summaries", description: "Prompt to summarize when leaving a branch" },
1247
+ },
1248
+
1249
+ "branchSummary.reserveTokens": { type: "number", default: 16384 },
1250
+
1251
+ // Memories
1252
+ // Legacy local-memory enable flag kept only for back-compat migration.
1253
+ // Hidden from UI — users should use `memory.backend` instead.
1254
+ "memories.enabled": {
1255
+ type: "boolean",
1256
+ default: false,
1257
+ },
1258
+
1259
+ "memories.maxRolloutsPerStartup": { type: "number", default: 64 },
1260
+
1261
+ "memories.maxRolloutAgeDays": { type: "number", default: 30 },
1262
+
1263
+ "memories.minRolloutIdleHours": { type: "number", default: 12 },
1264
+
1265
+ "memories.threadScanLimit": { type: "number", default: 300 },
1266
+
1267
+ "memories.maxRawMemoriesForGlobal": { type: "number", default: 200 },
1268
+
1269
+ "memories.stage1Concurrency": { type: "number", default: 8 },
1270
+
1271
+ "memories.stage1LeaseSeconds": { type: "number", default: 120 },
1272
+
1273
+ "memories.stage1RetryDelaySeconds": { type: "number", default: 120 },
1274
+
1275
+ "memories.phase2LeaseSeconds": { type: "number", default: 180 },
1276
+
1277
+ "memories.phase2RetryDelaySeconds": { type: "number", default: 180 },
1278
+
1279
+ "memories.phase2HeartbeatSeconds": { type: "number", default: 30 },
1280
+
1281
+ "memories.rolloutPayloadPercent": { type: "number", default: 0.7 },
1282
+
1283
+ "memories.phase1InputTokenLimit": { type: "number", default: 4000 },
1284
+
1285
+ "memories.fallbackTokenLimit": { type: "number", default: 16000 },
1286
+
1287
+ "memories.summaryInjectionTokenLimit": { type: "number", default: 5000 },
1288
+
1289
+ // Memory backend selector — picks between local memories pipeline,
1290
+ // Hindsight remote memory, or off. Legacy `memories.enabled` keeps gating
1291
+ // the local backend; see config/settings.ts migration for details.
1292
+ "memory.backend": {
1293
+ type: "enum",
1294
+ values: ["off", "local", "hindsight"] as const,
1295
+ default: "off",
1296
+ ui: {
1297
+ tab: "memory",
1298
+ label: "Memory Backend",
1299
+ description: "Off, local memory pipeline, or Hindsight remote memory",
1300
+ options: [
1301
+ { value: "off", label: "Off", description: "No memory subsystem runs" },
1302
+ { value: "local", label: "Local", description: "Local rollout summarisation pipeline (memory_summary.md)" },
1303
+ { value: "hindsight", label: "Hindsight", description: "Vectorize Hindsight remote memory service" },
1304
+ ],
1305
+ },
1306
+ },
1307
+
1308
+ // Hindsight (https://hindsight.vectorize.io)
1309
+ "hindsight.apiUrl": {
1310
+ type: "string",
1311
+ default: "http://localhost:8888",
1312
+ ui: {
1313
+ tab: "memory",
1314
+ label: "Hindsight API URL",
1315
+ description: "Hindsight server URL (Cloud or self-hosted)",
1316
+ condition: "hindsightActive",
1317
+ },
1318
+ },
1319
+
1320
+ "hindsight.apiToken": { type: "string", default: undefined },
1321
+
1322
+ "hindsight.bankId": {
1323
+ type: "string",
1324
+ default: undefined,
1325
+ ui: {
1326
+ tab: "memory",
1327
+ label: "Hindsight Bank ID",
1328
+ description: "Memory bank identifier (default: project name)",
1329
+ condition: "hindsightActive",
1330
+ },
1331
+ },
1332
+
1333
+ "hindsight.bankIdPrefix": { type: "string", default: undefined },
1334
+ "hindsight.scoping": {
1335
+ type: "enum",
1336
+ values: ["global", "per-project", "per-project-tagged"] as const,
1337
+ default: "per-project-tagged",
1338
+ ui: {
1339
+ tab: "memory",
1340
+ label: "Hindsight Scoping",
1341
+ description:
1342
+ "global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall",
1343
+ options: [
1344
+ {
1345
+ value: "global",
1346
+ label: "Global",
1347
+ description: "One shared bank — every project sees the same memories",
1348
+ },
1349
+ {
1350
+ value: "per-project",
1351
+ label: "Per project",
1352
+ description: "Isolated bank per cwd basename — projects cannot see each other's memories",
1353
+ },
1354
+ {
1355
+ value: "per-project-tagged",
1356
+ label: "Per project (tagged)",
1357
+ description:
1358
+ "Shared bank, retains tagged with project:<cwd>. Recall surfaces project + untagged global memories together",
1359
+ },
1360
+ ],
1361
+ condition: "hindsightActive",
1362
+ },
1363
+ },
1364
+ "hindsight.bankMission": { type: "string", default: undefined },
1365
+ "hindsight.retainMission": { type: "string", default: undefined },
1366
+
1367
+ "hindsight.autoRecall": {
1368
+ type: "boolean",
1369
+ default: true,
1370
+ ui: {
1371
+ tab: "memory",
1372
+ label: "Hindsight Auto Recall",
1373
+ description: "Recall memories on the first turn of each session",
1374
+ condition: "hindsightActive",
1375
+ },
1376
+ },
1377
+ "hindsight.autoRetain": {
1378
+ type: "boolean",
1379
+ default: true,
1380
+ ui: {
1381
+ tab: "memory",
1382
+ label: "Hindsight Auto Retain",
1383
+ description: "Retain transcript every N turns and at session boundaries",
1384
+ condition: "hindsightActive",
1385
+ },
1386
+ },
1387
+
1388
+ "hindsight.retainMode": {
1389
+ type: "enum",
1390
+ values: ["full-session", "last-turn"] as const,
1391
+ default: "full-session",
1392
+ ui: {
1393
+ tab: "memory",
1394
+ label: "Hindsight Retain Mode",
1395
+ description: "full-session = upsert one document per session, last-turn = chunked",
1396
+ options: [
1397
+ {
1398
+ value: "full-session",
1399
+ label: "Full session",
1400
+ description: "Upsert one document per session (recommended)",
1401
+ },
1402
+ { value: "last-turn", label: "Last turn", description: "Chunked retention sliced by turn boundaries" },
1403
+ ],
1404
+ condition: "hindsightActive",
1405
+ },
1406
+ },
1407
+ "hindsight.retainEveryNTurns": { type: "number", default: 3 },
1408
+ "hindsight.retainOverlapTurns": { type: "number", default: 2 },
1409
+ "hindsight.retainContext": { type: "string", default: "gjc" },
1410
+
1411
+ "hindsight.recallBudget": {
1412
+ type: "enum",
1413
+ values: ["low", "mid", "high"] as const,
1414
+ default: "mid",
1415
+ },
1416
+ "hindsight.recallMaxTokens": { type: "number", default: 1024 },
1417
+ "hindsight.recallContextTurns": { type: "number", default: 1 },
1418
+ "hindsight.recallMaxQueryChars": { type: "number", default: 800 },
1419
+ "hindsight.recallTypes": { type: "array", default: HINDSIGHT_RECALL_TYPES_DEFAULT },
1420
+
1421
+ "hindsight.debug": { type: "boolean", default: false },
1422
+
1423
+ "hindsight.mentalModelsEnabled": {
1424
+ type: "boolean",
1425
+ default: true,
1426
+ ui: {
1427
+ tab: "memory",
1428
+ label: "Hindsight Mental Models",
1429
+ description:
1430
+ "Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank — does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.",
1431
+ condition: "hindsightActive",
1432
+ },
1433
+ },
1434
+ "hindsight.mentalModelAutoSeed": {
1435
+ type: "boolean",
1436
+ default: true,
1437
+ ui: {
1438
+ tab: "memory",
1439
+ label: "Hindsight Mental Model Auto-Seed",
1440
+ description:
1441
+ "At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.",
1442
+ condition: "hindsightActive",
1443
+ },
1444
+ },
1445
+ "hindsight.mentalModelRefreshIntervalMs": { type: "number", default: 5 * 60 * 1000 },
1446
+ "hindsight.mentalModelMaxRenderChars": { type: "number", default: 16_000 },
1447
+
1448
+ // TTSR
1449
+ "ttsr.enabled": {
1450
+ type: "boolean",
1451
+ default: true,
1452
+ ui: {
1453
+ tab: "context",
1454
+ label: "TTSR",
1455
+ description: "Time Traveling Stream Rules: interrupt agent when output matches patterns",
1456
+ },
1457
+ },
1458
+
1459
+ "ttsr.contextMode": {
1460
+ type: "enum",
1461
+ values: ["discard", "keep"] as const,
1462
+ default: "discard",
1463
+ ui: {
1464
+ tab: "context",
1465
+ label: "TTSR Context Mode",
1466
+ description: "What to do with partial output when TTSR triggers",
1467
+ },
1468
+ },
1469
+
1470
+ "ttsr.interruptMode": {
1471
+ type: "enum",
1472
+ values: ["never", "prose-only", "tool-only", "always"] as const,
1473
+ default: "always",
1474
+ ui: {
1475
+ tab: "context",
1476
+ label: "TTSR Interrupt Mode",
1477
+ description: "When to interrupt mid-stream vs inject warning after completion",
1478
+ options: [
1479
+ { value: "always", label: "always", description: "Interrupt on prose and tool streams" },
1480
+ { value: "prose-only", label: "prose-only", description: "Interrupt only on reply/thinking matches" },
1481
+ { value: "tool-only", label: "tool-only", description: "Interrupt only on tool-call argument matches" },
1482
+ { value: "never", label: "never", description: "Never interrupt; inject warning after completion" },
1483
+ ],
1484
+ },
1485
+ },
1486
+
1487
+ "ttsr.repeatMode": {
1488
+ type: "enum",
1489
+ values: ["once", "after-gap"] as const,
1490
+ default: "once",
1491
+ ui: {
1492
+ tab: "context",
1493
+ label: "TTSR Repeat Mode",
1494
+ description: "How rules can repeat: once per session or after a message gap",
1495
+ },
1496
+ },
1497
+
1498
+ "ttsr.repeatGap": {
1499
+ type: "number",
1500
+ default: 10,
1501
+ ui: {
1502
+ tab: "context",
1503
+ label: "TTSR Repeat Gap",
1504
+ description: "Messages before a rule can trigger again",
1505
+ options: [
1506
+ { value: "5", label: "5 messages" },
1507
+ { value: "10", label: "10 messages" },
1508
+ { value: "15", label: "15 messages" },
1509
+ { value: "20", label: "20 messages" },
1510
+ { value: "30", label: "30 messages" },
1511
+ ],
1512
+ },
1513
+ },
1514
+
1515
+ // ────────────────────────────────────────────────────────────────────────
1516
+ // Editing
1517
+ // ────────────────────────────────────────────────────────────────────────
1518
+
1519
+ // Edit tool
1520
+ "edit.mode": {
1521
+ type: "enum",
1522
+ values: EDIT_MODES,
1523
+ default: "hashline",
1524
+ ui: {
1525
+ tab: "editing",
1526
+ label: "Edit Mode",
1527
+ description: "Select the edit tool variant (replace, patch, hashline, vim, or apply_patch)",
1528
+ },
1529
+ },
1530
+
1531
+ "edit.fuzzyMatch": {
1532
+ type: "boolean",
1533
+ default: true,
1534
+ ui: {
1535
+ tab: "editing",
1536
+ label: "Fuzzy Match",
1537
+ description: "Accept high-confidence fuzzy matches for whitespace differences",
1538
+ },
1539
+ },
1540
+
1541
+ "edit.fuzzyThreshold": {
1542
+ type: "number",
1543
+ default: 0.95,
1544
+ ui: {
1545
+ tab: "editing",
1546
+ label: "Fuzzy Match Threshold",
1547
+ description: "Similarity threshold for fuzzy matches",
1548
+ options: [
1549
+ { value: "0.85", label: "0.85", description: "Lenient" },
1550
+ { value: "0.90", label: "0.90", description: "Moderate" },
1551
+ { value: "0.95", label: "0.95", description: "Default" },
1552
+ { value: "0.98", label: "0.98", description: "Strict" },
1553
+ ],
1554
+ },
1555
+ },
1556
+
1557
+ "edit.streamingAbort": {
1558
+ type: "boolean",
1559
+ default: false,
1560
+ ui: {
1561
+ tab: "editing",
1562
+ label: "Abort on Failed Preview",
1563
+ description: "Abort streaming edit tool calls when patch preview fails",
1564
+ },
1565
+ },
1566
+
1567
+ "edit.hashlineAutoDropPureInsertDuplicates": {
1568
+ type: "boolean",
1569
+ default: false,
1570
+ ui: {
1571
+ tab: "editing",
1572
+ label: "Hashline Duplicate Insert Drop",
1573
+ description: "Drop 2+ pure-insert payload lines that duplicate adjacent file context",
1574
+ },
1575
+ },
1576
+ "edit.blockAutoGenerated": {
1577
+ type: "boolean",
1578
+ default: true,
1579
+ ui: {
1580
+ tab: "editing",
1581
+ label: "Block Auto-Generated Files",
1582
+ description: "Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",
1583
+ },
1584
+ },
1585
+
1586
+ readLineNumbers: {
1587
+ type: "boolean",
1588
+ default: false,
1589
+ ui: {
1590
+ tab: "editing",
1591
+ label: "Line Numbers",
1592
+ description: "Prepend line numbers to read tool output by default",
1593
+ },
1594
+ },
1595
+
1596
+ readHashLines: {
1597
+ type: "boolean",
1598
+ default: true,
1599
+ ui: {
1600
+ tab: "editing",
1601
+ label: "Hash Lines",
1602
+ description: "Include line hashes in read output for hashline edit mode (LINE+ID|content)",
1603
+ },
1604
+ },
1605
+
1606
+ "read.defaultLimit": {
1607
+ type: "number",
1608
+ default: 300,
1609
+ ui: {
1610
+ tab: "editing",
1611
+ label: "Default Read Limit",
1612
+ description: "Default number of lines returned when agent calls read without a limit",
1613
+ options: [
1614
+ { value: "200", label: "200 lines" },
1615
+ { value: "300", label: "300 lines" },
1616
+ { value: "500", label: "500 lines" },
1617
+ { value: "1000", label: "1000 lines" },
1618
+ { value: "5000", label: "5000 lines" },
1619
+ ],
1620
+ },
1621
+ },
1622
+
1623
+ "read.summarize.enabled": {
1624
+ type: "boolean",
1625
+ default: true,
1626
+ ui: {
1627
+ tab: "editing",
1628
+ label: "Read Summaries",
1629
+ description: "Return structural code summaries when read is called without an explicit selector",
1630
+ },
1631
+ },
1632
+
1633
+ "read.summarize.prose": {
1634
+ type: "boolean",
1635
+ default: false,
1636
+ ui: {
1637
+ tab: "editing",
1638
+ label: "Prose Summaries",
1639
+ description: "Return structural summaries for Markdown and plain text reads",
1640
+ },
1641
+ },
1642
+
1643
+ "read.summarize.minBodyLines": {
1644
+ type: "number",
1645
+ default: 4,
1646
+ ui: {
1647
+ tab: "editing",
1648
+ label: "Read Summary Body Lines",
1649
+ description: "Minimum multiline body or literal length before read summaries collapse it",
1650
+ },
1651
+ },
1652
+
1653
+ "read.summarize.minCommentLines": {
1654
+ type: "number",
1655
+ default: 6,
1656
+ ui: {
1657
+ tab: "editing",
1658
+ label: "Read Summary Comment Lines",
1659
+ description: "Minimum multiline block comment length before read summaries collapse it",
1660
+ },
1661
+ },
1662
+
1663
+ "read.toolResultPreview": {
1664
+ type: "boolean",
1665
+ default: false,
1666
+ ui: {
1667
+ tab: "editing",
1668
+ label: "Inline Read Previews",
1669
+ description: "Render read tool results inline in the transcript instead of summary rows",
1670
+ },
1671
+ },
1672
+
1673
+ // LSP
1674
+ "lsp.enabled": {
1675
+ type: "boolean",
1676
+ default: true,
1677
+ ui: { tab: "editing", label: "LSP", description: "Enable the lsp tool for language server protocol" },
1678
+ },
1679
+
1680
+ "lsp.formatOnWrite": {
1681
+ type: "boolean",
1682
+ default: false,
1683
+ ui: {
1684
+ tab: "editing",
1685
+ label: "Format on Write",
1686
+ description: "Automatically format code files using LSP after writing",
1687
+ },
1688
+ },
1689
+
1690
+ "lsp.diagnosticsOnWrite": {
1691
+ type: "boolean",
1692
+ default: true,
1693
+ ui: {
1694
+ tab: "editing",
1695
+ label: "Diagnostics on Write",
1696
+ description: "Return LSP diagnostics after writing code files",
1697
+ },
1698
+ },
1699
+
1700
+ "lsp.diagnosticsOnEdit": {
1701
+ type: "boolean",
1702
+ default: false,
1703
+ ui: {
1704
+ tab: "editing",
1705
+ label: "Diagnostics on Edit",
1706
+ description: "Return LSP diagnostics after editing code files",
1707
+ },
1708
+ },
1709
+
1710
+ // Bash interceptor
1711
+ "bashInterceptor.enabled": {
1712
+ type: "boolean",
1713
+ default: false,
1714
+ ui: { tab: "editing", label: "Bash Interceptor", description: "Block shell commands that have dedicated tools" },
1715
+ },
1716
+ "bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
1717
+
1718
+ "bash.stripTrailingHeadTail": {
1719
+ type: "boolean",
1720
+ default: true,
1721
+ ui: {
1722
+ tab: "editing",
1723
+ label: "Strip Trailing head/tail",
1724
+ description:
1725
+ "Silently drop trailing `| head`/`| tail` pipes from single-line bash commands. Output is already truncated automatically.",
1726
+ },
1727
+ },
1728
+
1729
+ // Shell output minimizer
1730
+ "shellMinimizer.enabled": {
1731
+ type: "boolean",
1732
+ default: true,
1733
+ ui: {
1734
+ tab: "editing",
1735
+ label: "Shell Minimizer",
1736
+ description: "Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent",
1737
+ },
1738
+ },
1739
+ "shellMinimizer.settingsPath": {
1740
+ type: "string",
1741
+ default: undefined,
1742
+ },
1743
+ "shellMinimizer.only": { type: "array", default: EMPTY_STRING_ARRAY },
1744
+ "shellMinimizer.except": { type: "array", default: EMPTY_STRING_ARRAY },
1745
+ "shellMinimizer.maxCaptureBytes": {
1746
+ type: "number",
1747
+ default: 4 * 1024 * 1024,
1748
+ },
1749
+
1750
+ // Eval (per-backend toggles; add more as new backends ship, e.g. eval.ts)
1751
+ "eval.py": {
1752
+ type: "boolean",
1753
+ default: true,
1754
+ ui: {
1755
+ tab: "editing",
1756
+ label: "Eval: Python backend",
1757
+ description: "Allow the eval tool to dispatch to the IPython kernel",
1758
+ },
1759
+ },
1760
+
1761
+ "eval.js": {
1762
+ type: "boolean",
1763
+ default: true,
1764
+ ui: {
1765
+ tab: "editing",
1766
+ label: "Eval: JavaScript backend",
1767
+ description: "Allow the eval tool to dispatch to the in-process JavaScript runtime",
1768
+ },
1769
+ },
1770
+
1771
+ // Python kernel knobs (consumed by the eval py backend and the /python slash command)
1772
+ "python.kernelMode": {
1773
+ type: "enum",
1774
+ values: ["session", "per-call"] as const,
1775
+ default: "session",
1776
+ ui: {
1777
+ tab: "editing",
1778
+ label: "Python Kernel Mode",
1779
+ description: "Whether to keep IPython kernel alive across calls",
1780
+ },
1781
+ },
1782
+
1783
+ // ────────────────────────────────────────────────────────────────────────
1784
+ // Tools
1785
+ // ────────────────────────────────────────────────────────────────────────
1786
+
1787
+ // Todo tool
1788
+ "todo.enabled": {
1789
+ type: "boolean",
1790
+ default: true,
1791
+ ui: { tab: "tools", label: "Todos", description: "Enable the todo_write tool for task tracking" },
1792
+ },
1793
+
1794
+ "todo.reminders": {
1795
+ type: "boolean",
1796
+ default: true,
1797
+ ui: { tab: "tools", label: "Todo Reminders", description: "Remind agent to complete todos before stopping" },
1798
+ },
1799
+
1800
+ "todo.reminders.max": {
1801
+ type: "number",
1802
+ default: 3,
1803
+ ui: {
1804
+ tab: "tools",
1805
+ label: "Todo Reminder Limit",
1806
+ description: "Maximum reminders to complete todos before giving up",
1807
+ options: [
1808
+ { value: "1", label: "1 reminder" },
1809
+ { value: "2", label: "2 reminders" },
1810
+ { value: "3", label: "3 reminders" },
1811
+ { value: "5", label: "5 reminders" },
1812
+ ],
1813
+ },
1814
+ },
1815
+
1816
+ "todo.eager": {
1817
+ type: "boolean",
1818
+ default: false,
1819
+ ui: {
1820
+ tab: "tools",
1821
+ label: "Create Todos Automatically",
1822
+ description: "Automatically create a comprehensive todo list after the first message",
1823
+ },
1824
+ },
1825
+
1826
+ // Search and AST tools
1827
+ "find.enabled": {
1828
+ type: "boolean",
1829
+ default: true,
1830
+ ui: { tab: "tools", label: "Find", description: "Enable the find tool for file searching" },
1831
+ },
1832
+
1833
+ "search.enabled": {
1834
+ type: "boolean",
1835
+ default: true,
1836
+ ui: { tab: "tools", label: "Search", description: "Enable the search tool for content searching" },
1837
+ },
1838
+
1839
+ "search.contextBefore": {
1840
+ type: "number",
1841
+ default: 1,
1842
+ ui: {
1843
+ tab: "tools",
1844
+ label: "Search Context Before",
1845
+ description: "Lines of context before each search match",
1846
+ options: [
1847
+ { value: "0", label: "0 lines" },
1848
+ { value: "1", label: "1 line" },
1849
+ { value: "2", label: "2 lines" },
1850
+ { value: "3", label: "3 lines" },
1851
+ { value: "5", label: "5 lines" },
1852
+ ],
1853
+ },
1854
+ },
1855
+
1856
+ "search.contextAfter": {
1857
+ type: "number",
1858
+ default: 3,
1859
+ ui: {
1860
+ tab: "tools",
1861
+ label: "Search Context After",
1862
+ description: "Lines of context after each search match",
1863
+ options: [
1864
+ { value: "0", label: "0 lines" },
1865
+ { value: "1", label: "1 line" },
1866
+ { value: "2", label: "2 lines" },
1867
+ { value: "3", label: "3 lines" },
1868
+ { value: "5", label: "5 lines" },
1869
+ { value: "10", label: "10 lines" },
1870
+ ],
1871
+ },
1872
+ },
1873
+
1874
+ "astGrep.enabled": {
1875
+ type: "boolean",
1876
+ default: true,
1877
+ ui: {
1878
+ tab: "tools",
1879
+ label: "AST Grep",
1880
+ description: "Enable the ast_grep tool for structural AST search",
1881
+ },
1882
+ },
1883
+
1884
+ "astEdit.enabled": {
1885
+ type: "boolean",
1886
+ default: true,
1887
+ ui: {
1888
+ tab: "tools",
1889
+ label: "AST Edit",
1890
+ description: "Enable the ast_edit tool for structural AST rewrites",
1891
+ },
1892
+ },
1893
+
1894
+ "irc.enabled": {
1895
+ type: "boolean",
1896
+ default: true,
1897
+ ui: {
1898
+ tab: "tools",
1899
+ label: "IRC",
1900
+ description: "Enable agent-to-agent IRC messaging via the irc tool",
1901
+ },
1902
+ },
1903
+
1904
+ // Optional tools
1905
+
1906
+ "renderMermaid.enabled": {
1907
+ type: "boolean",
1908
+ default: false,
1909
+ ui: {
1910
+ tab: "tools",
1911
+ label: "Render Mermaid",
1912
+ description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering",
1913
+ },
1914
+ },
1915
+
1916
+ "debug.enabled": {
1917
+ type: "boolean",
1918
+ default: true,
1919
+ ui: {
1920
+ tab: "tools",
1921
+ label: "Debug",
1922
+ description: "Enable the debug tool for DAP-based debugging",
1923
+ },
1924
+ },
1925
+
1926
+ "calc.enabled": {
1927
+ type: "boolean",
1928
+ default: false,
1929
+ ui: {
1930
+ tab: "tools",
1931
+ label: "Calculator",
1932
+ description: "Enable the calculator tool for basic calculations",
1933
+ },
1934
+ },
1935
+
1936
+ "recipe.enabled": {
1937
+ type: "boolean",
1938
+ default: true,
1939
+ ui: {
1940
+ tab: "tools",
1941
+ label: "Recipe",
1942
+ description:
1943
+ "Enable the recipe tool when a justfile / package.json / Cargo.toml / Makefile / Taskfile is present",
1944
+ },
1945
+ },
1946
+
1947
+ "inspect_image.enabled": {
1948
+ type: "boolean",
1949
+ default: false,
1950
+ ui: {
1951
+ tab: "tools",
1952
+ label: "Inspect Image",
1953
+ description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model",
1954
+ },
1955
+ },
1956
+
1957
+ "checkpoint.enabled": {
1958
+ type: "boolean",
1959
+ default: false,
1960
+ ui: {
1961
+ tab: "tools",
1962
+ label: "Checkpoint/Rewind",
1963
+ description: "Enable the checkpoint and rewind tools for context checkpointing",
1964
+ },
1965
+ },
1966
+
1967
+ // Fetching and browser
1968
+ "fetch.enabled": {
1969
+ type: "boolean",
1970
+ default: true,
1971
+ ui: { tab: "tools", label: "Read URLs", description: "Allow the read tool to fetch and process URLs" },
1972
+ },
1973
+
1974
+ "github.enabled": {
1975
+ type: "boolean",
1976
+ default: false,
1977
+ ui: {
1978
+ tab: "tools",
1979
+ label: "GitHub CLI",
1980
+ description:
1981
+ "Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)",
1982
+ },
1983
+ },
1984
+
1985
+ "github.cache.enabled": {
1986
+ type: "boolean",
1987
+ default: true,
1988
+ ui: {
1989
+ tab: "tools",
1990
+ label: "GitHub view cache",
1991
+ description: "Cache rendered issue/PR view output in ~/.gjc/cache/github-cache.db so repeated reads are free",
1992
+ },
1993
+ },
1994
+
1995
+ "github.cache.softTtlSec": {
1996
+ type: "number",
1997
+ default: 300,
1998
+ ui: {
1999
+ tab: "tools",
2000
+ label: "GitHub cache soft TTL (seconds)",
2001
+ description: "Within this window, cached issue/PR view rows are returned directly. Default 5 minutes.",
2002
+ },
2003
+ },
2004
+
2005
+ "github.cache.hardTtlSec": {
2006
+ type: "number",
2007
+ default: 604800,
2008
+ ui: {
2009
+ tab: "tools",
2010
+ label: "GitHub cache hard TTL (seconds)",
2011
+ description:
2012
+ "Past soft TTL but within hard TTL, the tool returns the cached row and refreshes it in the background. Past hard TTL, the row is dropped. Default 7 days.",
2013
+ },
2014
+ },
2015
+
2016
+ "web_search.enabled": {
2017
+ type: "boolean",
2018
+ default: true,
2019
+ ui: { tab: "tools", label: "Web Search", description: "Enable the web_search tool for web searching" },
2020
+ },
2021
+
2022
+ "browser.enabled": {
2023
+ type: "boolean",
2024
+ default: true,
2025
+ ui: {
2026
+ tab: "tools",
2027
+ label: "Browser",
2028
+ description: "Enable the browser tool (Ulixee Hero)",
2029
+ },
2030
+ },
2031
+
2032
+ "browser.headless": {
2033
+ type: "boolean",
2034
+ default: true,
2035
+ ui: {
2036
+ tab: "tools",
2037
+ label: "Headless Browser",
2038
+ description: "Launch browser in headless mode (disable to show browser UI)",
2039
+ },
2040
+ },
2041
+ "browser.screenshotDir": {
2042
+ type: "string",
2043
+ default: undefined,
2044
+ ui: {
2045
+ tab: "tools",
2046
+ label: "Screenshot directory",
2047
+ description:
2048
+ "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",
2049
+ },
2050
+ },
2051
+
2052
+ // Tool execution
2053
+ "tools.intentTracing": {
2054
+ type: "boolean",
2055
+ default: true,
2056
+ ui: {
2057
+ tab: "tools",
2058
+ label: "Intent Tracing",
2059
+ description: "Ask the agent to describe the intent of each tool call before executing it",
2060
+ },
2061
+ },
2062
+
2063
+ "tools.maxTimeout": {
2064
+ type: "number",
2065
+ default: 0,
2066
+ ui: {
2067
+ tab: "tools",
2068
+ label: "Max Tool Timeout",
2069
+ description: "Maximum timeout in seconds the agent can set for any tool (0 = no limit)",
2070
+ options: [
2071
+ { value: "0", label: "No limit" },
2072
+ { value: "30", label: "30 seconds" },
2073
+ { value: "60", label: "60 seconds" },
2074
+ { value: "120", label: "120 seconds" },
2075
+ { value: "300", label: "5 minutes" },
2076
+ { value: "600", label: "10 minutes" },
2077
+ ],
2078
+ },
2079
+ },
2080
+
2081
+ // Async jobs
2082
+ "async.enabled": {
2083
+ type: "boolean",
2084
+ default: false,
2085
+ ui: {
2086
+ tab: "tools",
2087
+ label: "Async Execution",
2088
+ description: "Enable async bash commands and background task execution",
2089
+ },
2090
+ },
2091
+
2092
+ "async.maxJobs": {
2093
+ type: "number",
2094
+ default: 100,
2095
+ },
2096
+
2097
+ "async.pollWaitDuration": {
2098
+ type: "enum",
2099
+ values: ["5s", "10s", "30s", "1m", "5m"] as const,
2100
+ default: "30s",
2101
+ ui: {
2102
+ tab: "tools",
2103
+ label: "Poll Wait Duration",
2104
+ description: "How long the poll tool waits for background job updates before returning the current state",
2105
+ options: [
2106
+ { value: "5s", label: "5 seconds" },
2107
+ { value: "10s", label: "10 seconds" },
2108
+ { value: "30s", label: "30 seconds", description: "Default" },
2109
+ { value: "1m", label: "1 minute" },
2110
+ { value: "5m", label: "5 minutes" },
2111
+ ],
2112
+ },
2113
+ },
2114
+
2115
+ "bash.autoBackground.enabled": {
2116
+ type: "boolean",
2117
+ default: false,
2118
+ ui: {
2119
+ tab: "tools",
2120
+ label: "Bash Auto-Background",
2121
+ description: "Automatically background long-running bash commands and deliver the result later",
2122
+ },
2123
+ },
2124
+
2125
+ "bash.autoBackground.thresholdMs": {
2126
+ type: "number",
2127
+ default: 60_000,
2128
+ },
2129
+
2130
+ // Tool Discovery
2131
+ "tools.discoveryMode": {
2132
+ type: "enum",
2133
+ values: ["off", "all"] as const,
2134
+ default: "off",
2135
+ ui: {
2136
+ tab: "tools",
2137
+ label: "Tool Discovery",
2138
+ description: "Hide non-essential built-in tools behind a search tool to save tokens.",
2139
+ },
2140
+ },
2141
+
2142
+ "tools.essentialOverride": {
2143
+ type: "array",
2144
+ default: [] as string[],
2145
+ ui: {
2146
+ tab: "tools",
2147
+ label: "Essential Tools Override",
2148
+ description:
2149
+ "Override the always-loaded built-in tools (default: read, bash, edit). Leave empty to use defaults.",
2150
+ },
2151
+ },
2152
+
2153
+ // MCP
2154
+ "mcp.enableProjectConfig": {
2155
+ type: "boolean",
2156
+ default: false,
2157
+ },
2158
+
2159
+ "mcp.discoveryMode": {
2160
+ type: "boolean",
2161
+ default: false,
2162
+ },
2163
+
2164
+ "mcp.discoveryDefaultServers": {
2165
+ type: "array",
2166
+ default: [] as string[],
2167
+ },
2168
+
2169
+ "mcp.notifications": {
2170
+ type: "boolean",
2171
+ default: false,
2172
+ },
2173
+
2174
+ "mcp.notificationDebounceMs": {
2175
+ type: "number",
2176
+ default: 500,
2177
+ },
2178
+
2179
+ // ────────────────────────────────────────────────────────────────────────
2180
+ // Tasks
2181
+ // ────────────────────────────────────────────────────────────────────────
2182
+
2183
+ // Plan mode
2184
+ "plan.enabled": {
2185
+ type: "boolean",
2186
+ default: true,
2187
+ ui: {
2188
+ tab: "tasks",
2189
+ label: "Plan Mode",
2190
+ description: "Enable plan mode for read-only exploration and planning before execution",
2191
+ },
2192
+ },
2193
+
2194
+ "goal.enabled": {
2195
+ type: "boolean",
2196
+ default: true,
2197
+ ui: {
2198
+ tab: "tasks",
2199
+ label: "Goal Mode",
2200
+ description: "Enable per-session goal mode and the hidden goal tool",
2201
+ },
2202
+ },
2203
+
2204
+ "goal.statusInFooter": {
2205
+ type: "boolean",
2206
+ default: true,
2207
+ ui: {
2208
+ tab: "tasks",
2209
+ label: "Goal Status In Footer",
2210
+ description: "Show token budget alongside the goal indicator in the status line",
2211
+ },
2212
+ },
2213
+
2214
+ "goal.continuationModes": {
2215
+ type: "array",
2216
+ default: ["interactive"],
2217
+ ui: {
2218
+ tab: "tasks",
2219
+ label: "Goal Continuation Modes",
2220
+ description: "Run modes where active goals may auto-continue between turns",
2221
+ },
2222
+ },
2223
+
2224
+ // Delegation
2225
+ "task.isolation.mode": {
2226
+ type: "enum",
2227
+ values: [
2228
+ "none",
2229
+ "auto",
2230
+ "apfs",
2231
+ "btrfs",
2232
+ "zfs",
2233
+ "reflink",
2234
+ "overlayfs",
2235
+ "projfs",
2236
+ "block-clone",
2237
+ "rcopy",
2238
+ ] as const,
2239
+ default: "none",
2240
+ ui: {
2241
+ tab: "tasks",
2242
+ label: "Isolation Mode",
2243
+ description:
2244
+ 'Isolation backend for subagents. "auto" lets the native PAL pick the best available backend (CoW-aware filesystems, then overlayfs/ProjFS, then a git worktree / recursive-copy fallback).',
2245
+ options: [
2246
+ { value: "none", label: "None", description: "No isolation" },
2247
+ { value: "auto", label: "Auto", description: "Let the PAL pick the best available backend" },
2248
+ { value: "apfs", label: "APFS", description: "macOS clonefile reflink (APFS)" },
2249
+ { value: "btrfs", label: "btrfs", description: "btrfs subvolume snapshot" },
2250
+ { value: "zfs", label: "ZFS", description: "ZFS snapshot + clone" },
2251
+ { value: "reflink", label: "Reflink", description: "Linux FICLONE per-file reflink" },
2252
+ {
2253
+ value: "overlayfs",
2254
+ label: "Overlayfs",
2255
+ description: "Linux kernel overlay (or fuse-overlayfs fallback)",
2256
+ },
2257
+ { value: "projfs", label: "ProjFS", description: "Windows Projected File System" },
2258
+ {
2259
+ value: "block-clone",
2260
+ label: "Block clone",
2261
+ description: "Windows FSCTL_DUPLICATE_EXTENTS_TO_FILE (NTFS/ReFS)",
2262
+ },
2263
+ {
2264
+ value: "rcopy",
2265
+ label: "Recursive copy",
2266
+ description: "git worktree if available, otherwise recursive copy",
2267
+ },
2268
+ ],
2269
+ },
2270
+ },
2271
+
2272
+ "task.isolation.merge": {
2273
+ type: "enum",
2274
+ values: ["patch", "branch"] as const,
2275
+ default: "patch",
2276
+ ui: {
2277
+ tab: "tasks",
2278
+ label: "Isolation Merge Strategy",
2279
+ description: "How isolated task changes are integrated (patch apply or branch merge)",
2280
+ options: [
2281
+ { value: "patch", label: "Patch", description: "Combine diffs and git apply" },
2282
+ { value: "branch", label: "Branch", description: "Commit per task, merge with --no-ff" },
2283
+ ],
2284
+ },
2285
+ },
2286
+
2287
+ "task.isolation.commits": {
2288
+ type: "enum",
2289
+ values: ["generic", "ai"] as const,
2290
+ default: "generic",
2291
+ ui: {
2292
+ tab: "tasks",
2293
+ label: "Isolation Commit Style",
2294
+ description: "Commit message style for nested repo changes (generic or AI-generated)",
2295
+ options: [
2296
+ { value: "generic", label: "Generic", description: "Static commit message" },
2297
+ { value: "ai", label: "AI", description: "AI-generated commit message from diff" },
2298
+ ],
2299
+ },
2300
+ },
2301
+
2302
+ "task.eager": {
2303
+ type: "boolean",
2304
+ default: false,
2305
+ ui: {
2306
+ tab: "tasks",
2307
+ label: "Prefer Task Delegation",
2308
+ description: "Encourage the agent to delegate work to subagents unless changes are trivial",
2309
+ },
2310
+ },
2311
+
2312
+ "task.simple": {
2313
+ type: "enum",
2314
+ values: TASK_SIMPLE_MODES,
2315
+ default: "default",
2316
+ ui: {
2317
+ tab: "tasks",
2318
+ label: "Task Input Mode",
2319
+ description: "How much shared structure the task tool accepts (default, schema-free, or independent)",
2320
+ options: [
2321
+ {
2322
+ value: "default",
2323
+ label: "Default",
2324
+ description: "Shared context and custom task schema are available",
2325
+ },
2326
+ {
2327
+ value: "schema-free",
2328
+ label: "Schema-free",
2329
+ description: "Shared context stays available, but custom task schema is disabled",
2330
+ },
2331
+ {
2332
+ value: "independent",
2333
+ label: "Independent",
2334
+ description: "No shared context or custom task schema; each task must stand alone",
2335
+ },
2336
+ ],
2337
+ },
2338
+ },
2339
+
2340
+ "task.maxConcurrency": {
2341
+ type: "number",
2342
+ default: 32,
2343
+ ui: {
2344
+ tab: "tasks",
2345
+ label: "Max Concurrent Tasks",
2346
+ description: "Concurrent limit for subagents",
2347
+ options: [
2348
+ { value: "0", label: "Unlimited" },
2349
+ { value: "1", label: "1 task" },
2350
+ { value: "2", label: "2 tasks" },
2351
+ { value: "4", label: "4 tasks" },
2352
+ { value: "8", label: "8 tasks" },
2353
+ { value: "16", label: "16 tasks" },
2354
+ { value: "32", label: "32 tasks" },
2355
+ { value: "64", label: "64 tasks" },
2356
+ ],
2357
+ },
2358
+ },
2359
+
2360
+ "task.enableLsp": {
2361
+ type: "boolean",
2362
+ default: false,
2363
+ ui: {
2364
+ tab: "tasks",
2365
+ label: "LSP in Subagents",
2366
+ description:
2367
+ "Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.",
2368
+ },
2369
+ },
2370
+
2371
+ "task.maxRecursionDepth": {
2372
+ type: "number",
2373
+ default: 2,
2374
+ ui: {
2375
+ tab: "tasks",
2376
+ label: "Max Task Recursion",
2377
+ description: "How many levels deep subagents can spawn their own subagents",
2378
+ options: [
2379
+ { value: "-1", label: "Unlimited" },
2380
+ { value: "0", label: "None" },
2381
+ { value: "1", label: "Single" },
2382
+ { value: "2", label: "Double" },
2383
+ { value: "3", label: "Triple" },
2384
+ ],
2385
+ },
2386
+ },
2387
+
2388
+ "task.maxRuntimeMs": {
2389
+ type: "number",
2390
+ default: 0,
2391
+ ui: {
2392
+ tab: "tasks",
2393
+ label: "Max Subagent Runtime",
2394
+ description:
2395
+ "Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.",
2396
+ options: [
2397
+ { value: "0", label: "Unlimited", description: "Default" },
2398
+ { value: "300000", label: "5 minutes" },
2399
+ { value: "900000", label: "15 minutes" },
2400
+ { value: "1800000", label: "30 minutes" },
2401
+ { value: "3600000", label: "1 hour" },
2402
+ ],
2403
+ },
2404
+ },
2405
+
2406
+ "task.disabledAgents": {
2407
+ type: "array",
2408
+ default: [] as string[],
2409
+ },
2410
+
2411
+ "task.agentModelOverrides": {
2412
+ type: "record",
2413
+ default: {} as Record<string, string>,
2414
+ },
2415
+
2416
+ "tasks.todoClearDelay": {
2417
+ type: "number",
2418
+ default: 60,
2419
+ ui: {
2420
+ tab: "tasks",
2421
+ label: "Todo auto-clear delay",
2422
+ description: "How long to wait before removing completed/abandoned tasks from the list",
2423
+ options: [
2424
+ { value: "0", label: "Instant" },
2425
+ { value: "60", label: "1 minute", description: "Default" },
2426
+ { value: "300", label: "5 minutes" },
2427
+ { value: "900", label: "15 minutes" },
2428
+ { value: "1800", label: "30 minutes" },
2429
+ { value: "3600", label: "1 hour" },
2430
+ { value: "-1", label: "Never" },
2431
+ ],
2432
+ },
2433
+ },
2434
+
2435
+ // Skills
2436
+ "skills.enabled": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enabled },
2437
+
2438
+ "skills.enableSkillCommands": {
2439
+ type: "boolean",
2440
+ default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enableSkillCommands,
2441
+ },
2442
+
2443
+ "skills.enableCodexUser": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enableCodexUser },
2444
+
2445
+ "skills.enableClaudeUser": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enableClaudeUser },
2446
+
2447
+ "skills.enableClaudeProject": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enableClaudeProject },
2448
+
2449
+ "skills.enablePiUser": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enablePiUser },
2450
+
2451
+ "skills.enablePiProject": { type: "boolean", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.enablePiProject },
2452
+
2453
+ "skills.customDirectories": { type: "array", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.customDirectories },
2454
+
2455
+ "skills.ignoredSkills": { type: "array", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.ignoredSkills },
2456
+
2457
+ "skills.includeSkills": { type: "array", default: DEFAULT_SKILL_DISCOVERY_SETTINGS.includeSkills },
2458
+
2459
+ // Commands
2460
+ "commands.enableClaudeUser": {
2461
+ type: "boolean",
2462
+ default: false,
2463
+ },
2464
+
2465
+ "commands.enableClaudeProject": {
2466
+ type: "boolean",
2467
+ default: false,
2468
+ },
2469
+
2470
+ "commands.enableOpencodeUser": {
2471
+ type: "boolean",
2472
+ default: false,
2473
+ },
2474
+
2475
+ "commands.enableOpencodeProject": {
2476
+ type: "boolean",
2477
+ default: false,
2478
+ },
2479
+
2480
+ // ────────────────────────────────────────────────────────────────────────
2481
+ // Providers
2482
+ // ────────────────────────────────────────────────────────────────────────
2483
+
2484
+ // Secret handling
2485
+ "secrets.enabled": {
2486
+ type: "boolean",
2487
+ default: false,
2488
+ ui: { tab: "providers", label: "Hide Secrets", description: "Obfuscate secrets before sending to AI providers" },
2489
+ },
2490
+
2491
+ // Provider selection
2492
+ "providers.webSearch": {
2493
+ type: "enum",
2494
+ values: [
2495
+ "auto",
2496
+ "exa",
2497
+ "brave",
2498
+ "jina",
2499
+ "kimi",
2500
+ "zai",
2501
+ "perplexity",
2502
+ "anthropic",
2503
+ "gemini",
2504
+ "codex",
2505
+ "tavily",
2506
+ "kagi",
2507
+ "synthetic",
2508
+ "parallel",
2509
+ "searxng",
2510
+ ] as const,
2511
+ default: "auto",
2512
+ ui: {
2513
+ tab: "providers",
2514
+ label: "Web Search Provider",
2515
+ description: "Provider for web search tool",
2516
+ options: [
2517
+ {
2518
+ value: "auto",
2519
+ label: "Auto",
2520
+ description: "Preferred web-search provider",
2521
+ },
2522
+ { value: "exa", label: "Exa", description: "Uses Exa API when EXA_API_KEY is set" },
2523
+ { value: "brave", label: "Brave", description: "Requires BRAVE_API_KEY" },
2524
+ { value: "jina", label: "Jina", description: "Requires JINA_API_KEY" },
2525
+ { value: "kimi", label: "Kimi", description: "Requires MOONSHOT_SEARCH_API_KEY or MOONSHOT_API_KEY" },
2526
+ {
2527
+ value: "perplexity",
2528
+ label: "Perplexity",
2529
+ description: "Requires PERPLEXITY_COOKIES or PERPLEXITY_API_KEY",
2530
+ },
2531
+ {
2532
+ value: "anthropic",
2533
+ label: "Anthropic",
2534
+ description: "Claude's native web_search tool (uses Anthropic OAuth or ANTHROPIC_API_KEY)",
2535
+ },
2536
+ {
2537
+ value: "codex",
2538
+ label: "OpenAI",
2539
+ description: "OpenAI's native web_search (uses ChatGPT OAuth via /login openai-codex)",
2540
+ },
2541
+ {
2542
+ value: "gemini",
2543
+ label: "Gemini",
2544
+ description: "Google Search grounding via Gemini (uses google-gemini-cli or google-antigravity OAuth)",
2545
+ },
2546
+ { value: "zai", label: "Z.AI", description: "Calls Z.AI webSearchPrime MCP" },
2547
+ { value: "tavily", label: "Tavily", description: "Requires TAVILY_API_KEY" },
2548
+ { value: "kagi", label: "Kagi", description: "Requires KAGI_API_KEY and Kagi Search API beta access" },
2549
+ { value: "synthetic", label: "Synthetic", description: "Requires SYNTHETIC_API_KEY" },
2550
+ { value: "parallel", label: "Parallel", description: "Requires PARALLEL_API_KEY" },
2551
+ { value: "searxng", label: "SearXNG", description: "Requires SEARXNG_ENDPOINT or searxng.endpoint" },
2552
+ ],
2553
+ },
2554
+ },
2555
+ "providers.image": {
2556
+ type: "enum",
2557
+ values: ["auto", "openai", "gemini", "openrouter"] as const,
2558
+ default: "auto",
2559
+ ui: {
2560
+ tab: "providers",
2561
+ label: "Image Provider",
2562
+ description: "Provider for image generation tool",
2563
+ options: [
2564
+ {
2565
+ value: "auto",
2566
+ label: "Auto",
2567
+ description: "Priority: GPT model image tool > Antigravity > OpenRouter > Gemini",
2568
+ },
2569
+ { value: "openai", label: "OpenAI", description: "Uses the active GPT Responses/Codex model" },
2570
+ { value: "gemini", label: "Gemini", description: "Requires GEMINI_API_KEY" },
2571
+ { value: "openrouter", label: "OpenRouter", description: "Requires OPENROUTER_API_KEY" },
2572
+ ],
2573
+ },
2574
+ },
2575
+
2576
+ "providers.kimiApiFormat": {
2577
+ type: "enum",
2578
+ values: ["openai", "anthropic"] as const,
2579
+ default: "anthropic",
2580
+ ui: {
2581
+ tab: "providers",
2582
+ label: "Kimi API Format",
2583
+ description: "API format for Kimi Code provider",
2584
+ options: [
2585
+ { value: "openai", label: "OpenAI", description: "api.kimi.com" },
2586
+ { value: "anthropic", label: "Anthropic", description: "api.moonshot.ai" },
2587
+ ],
2588
+ },
2589
+ },
2590
+
2591
+ "providers.openaiWebsockets": {
2592
+ type: "enum",
2593
+ values: ["auto", "off", "on"] as const,
2594
+ default: "auto",
2595
+ ui: {
2596
+ tab: "providers",
2597
+ label: "OpenAI WebSockets",
2598
+ description: "Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",
2599
+ options: [
2600
+ { value: "auto", label: "Auto", description: "Use model/provider default websocket behavior" },
2601
+ { value: "off", label: "Off", description: "Disable websockets for OpenAI Codex models" },
2602
+ { value: "on", label: "On", description: "Force websockets for OpenAI Codex models" },
2603
+ ],
2604
+ },
2605
+ },
2606
+
2607
+ "providers.parallelFetch": {
2608
+ type: "boolean",
2609
+ default: true,
2610
+ ui: {
2611
+ tab: "providers",
2612
+ label: "Parallel Fetch",
2613
+ description: "Use Parallel extract API for URL fetching when credentials are available",
2614
+ },
2615
+ },
2616
+ "provider.appendOnlyContext": {
2617
+ type: "enum",
2618
+ values: ["auto", "on", "off"] as const,
2619
+ default: "auto",
2620
+ ui: {
2621
+ tab: "providers",
2622
+ label: "Append-Only Context",
2623
+ description:
2624
+ "Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Anthropic) hit at maximum rate. Auto enables for DeepSeek.",
2625
+ options: [
2626
+ { value: "auto", label: "Auto", description: "Enable for DeepSeek (recommended)" },
2627
+ { value: "on", label: "On", description: "Always enable append-only context" },
2628
+ { value: "off", label: "Off", description: "Disable append-only context" },
2629
+ ],
2630
+ },
2631
+ },
2632
+
2633
+ // Exa
2634
+ "exa.enabled": {
2635
+ type: "boolean",
2636
+ default: true,
2637
+ ui: { tab: "providers", label: "Exa", description: "Master toggle for all Exa search tools" },
2638
+ },
2639
+
2640
+ "exa.enableSearch": {
2641
+ type: "boolean",
2642
+ default: true,
2643
+ ui: { tab: "providers", label: "Exa Search", description: "Basic search, deep search, code search, crawl" },
2644
+ },
2645
+
2646
+ "exa.enableResearcher": {
2647
+ type: "boolean",
2648
+ default: false,
2649
+ ui: { tab: "providers", label: "Exa Researcher", description: "AI-powered deep research tasks" },
2650
+ },
2651
+
2652
+ "exa.enableWebsets": {
2653
+ type: "boolean",
2654
+ default: false,
2655
+ ui: { tab: "providers", label: "Exa Websets", description: "Webset management and enrichment tools" },
2656
+ },
2657
+
2658
+ // SearXNG
2659
+ "searxng.endpoint": {
2660
+ type: "string",
2661
+ default: undefined,
2662
+ ui: {
2663
+ tab: "providers",
2664
+ label: "SearXNG Endpoint",
2665
+ description: "Self-hosted search base URL",
2666
+ },
2667
+ },
2668
+
2669
+ "searxng.token": {
2670
+ type: "string",
2671
+ default: undefined,
2672
+ },
2673
+
2674
+ "searxng.basicUsername": {
2675
+ type: "string",
2676
+ default: undefined,
2677
+ },
2678
+
2679
+ "searxng.basicPassword": {
2680
+ type: "string",
2681
+ default: undefined,
2682
+ },
2683
+
2684
+ "searxng.categories": {
2685
+ type: "string",
2686
+ default: undefined,
2687
+ },
2688
+
2689
+ "searxng.language": {
2690
+ type: "string",
2691
+ default: undefined,
2692
+ },
2693
+
2694
+ "commit.mapReduceEnabled": { type: "boolean", default: true },
2695
+
2696
+ "commit.mapReduceMinFiles": { type: "number", default: 4 },
2697
+
2698
+ "commit.mapReduceMaxFileTokens": { type: "number", default: 50000 },
2699
+
2700
+ "commit.mapReduceTimeoutMs": { type: "number", default: 120000 },
2701
+
2702
+ "commit.mapReduceMaxConcurrency": { type: "number", default: 5 },
2703
+
2704
+ "commit.changelogMaxDiffChars": { type: "number", default: 120000 },
2705
+
2706
+ "thinkingBudgets.minimal": { type: "number", default: 1024 },
2707
+
2708
+ "thinkingBudgets.low": { type: "number", default: 2048 },
2709
+
2710
+ "thinkingBudgets.medium": { type: "number", default: 8192 },
2711
+
2712
+ "thinkingBudgets.high": { type: "number", default: 16384 },
2713
+
2714
+ "thinkingBudgets.xhigh": { type: "number", default: 32768 },
2715
+ } as const;
2716
+
2717
+ // ═══════════════════════════════════════════════════════════════════════════
2718
+ // Type Inference
2719
+ // ═══════════════════════════════════════════════════════════════════════════
2720
+
2721
+ type Schema = typeof SETTINGS_SCHEMA;
2722
+
2723
+ /** All valid setting paths */
2724
+ export type SettingPath = keyof Schema;
2725
+
2726
+ /** Infer the value type for a setting path */
2727
+ export type SettingValue<P extends SettingPath> = Schema[P] extends { type: "boolean" }
2728
+ ? boolean
2729
+ : Schema[P] extends { type: "string" }
2730
+ ? string | undefined
2731
+ : Schema[P] extends { type: "number" }
2732
+ ? number
2733
+ : Schema[P] extends { type: "enum"; values: infer V }
2734
+ ? V extends readonly string[]
2735
+ ? V[number]
2736
+ : never
2737
+ : Schema[P] extends { type: "array"; default: infer D }
2738
+ ? D
2739
+ : Schema[P] extends { type: "record"; default: infer D }
2740
+ ? D
2741
+ : never;
2742
+
2743
+ /** Get the default value for a setting path */
2744
+ export function getDefault<P extends SettingPath>(path: P): SettingValue<P> {
2745
+ return SETTINGS_SCHEMA[path].default as SettingValue<P>;
2746
+ }
2747
+
2748
+ /** Check if a path has UI metadata (should appear in settings panel) */
2749
+ export function hasUi(path: SettingPath): boolean {
2750
+ return "ui" in SETTINGS_SCHEMA[path];
2751
+ }
2752
+
2753
+ /** Get UI metadata for a path (undefined if no UI) */
2754
+ export function getUi(path: SettingPath): AnyUiMetadata | undefined {
2755
+ const def = SETTINGS_SCHEMA[path];
2756
+ return "ui" in def ? (def.ui as AnyUiMetadata) : undefined;
2757
+ }
2758
+
2759
+ /** Get all paths for a specific tab */
2760
+ export function getPathsForTab(tab: SettingTab): SettingPath[] {
2761
+ return (Object.keys(SETTINGS_SCHEMA) as SettingPath[]).filter(path => {
2762
+ const ui = getUi(path);
2763
+ return ui?.tab === tab;
2764
+ });
2765
+ }
2766
+
2767
+ /** Get the type of a setting */
2768
+ export function getType(path: SettingPath): SettingDef["type"] {
2769
+ return SETTINGS_SCHEMA[path].type;
2770
+ }
2771
+
2772
+ /** Get enum values for an enum setting */
2773
+ export function getEnumValues(path: SettingPath): readonly string[] | undefined {
2774
+ const def = SETTINGS_SCHEMA[path];
2775
+ return "values" in def ? (def.values as readonly string[]) : undefined;
2776
+ }
2777
+
2778
+ // ═══════════════════════════════════════════════════════════════════════════
2779
+ // Derived Types from Schema
2780
+ // ═══════════════════════════════════════════════════════════════════════════
2781
+
2782
+ /** Status line preset - derived from schema */
2783
+ export type StatusLinePreset = SettingValue<"statusLine.preset">;
2784
+
2785
+ /** Status line separator style - derived from schema */
2786
+ export type StatusLineSeparatorStyle = SettingValue<"statusLine.separator">;
2787
+
2788
+ /** Tree selector filter mode - derived from schema */
2789
+ export type TreeFilterMode = SettingValue<"treeFilterMode">;
2790
+
2791
+ // ═══════════════════════════════════════════════════════════════════════════
2792
+ // Typed Group Definitions
2793
+ // ═══════════════════════════════════════════════════════════════════════════
2794
+
2795
+ export interface CompactionSettings {
2796
+ enabled: boolean;
2797
+ strategy: "context-full" | "handoff" | "off";
2798
+ thresholdPercent: number;
2799
+ thresholdTokens: number;
2800
+ reserveTokens: number;
2801
+ keepRecentTokens: number;
2802
+ handoffSaveToDisk: boolean;
2803
+ autoContinue: boolean;
2804
+ remoteEnabled: boolean;
2805
+ remoteEndpoint: string | undefined;
2806
+ idleEnabled: boolean;
2807
+ idleThresholdTokens: number;
2808
+ idleTimeoutSeconds: number;
2809
+ }
2810
+
2811
+ export interface ContextPromotionSettings {
2812
+ enabled: boolean;
2813
+ }
2814
+ export interface RetrySettings {
2815
+ enabled: boolean;
2816
+ maxRetries: number;
2817
+ baseDelayMs: number;
2818
+ maxDelayMs: number;
2819
+ }
2820
+
2821
+ export interface MemoriesSettings {
2822
+ enabled: boolean;
2823
+ maxRolloutsPerStartup: number;
2824
+ maxRolloutAgeDays: number;
2825
+ minRolloutIdleHours: number;
2826
+ threadScanLimit: number;
2827
+ maxRawMemoriesForGlobal: number;
2828
+ stage1Concurrency: number;
2829
+ stage1LeaseSeconds: number;
2830
+ stage1RetryDelaySeconds: number;
2831
+ phase2LeaseSeconds: number;
2832
+ phase2RetryDelaySeconds: number;
2833
+ phase2HeartbeatSeconds: number;
2834
+ rolloutPayloadPercent: number;
2835
+ fallbackTokenLimit: number;
2836
+ summaryInjectionTokenLimit: number;
2837
+ }
2838
+
2839
+ export interface TodoCompletionSettings {
2840
+ enabled: boolean;
2841
+ maxReminders: number;
2842
+ }
2843
+
2844
+ export interface BranchSummarySettings {
2845
+ enabled: boolean;
2846
+ reserveTokens: number;
2847
+ }
2848
+
2849
+ export interface SkillsSettings extends SkillDiscoverySettings {
2850
+ disabledExtensions?: string[];
2851
+ }
2852
+
2853
+ export interface CommitSettings {
2854
+ mapReduceEnabled: boolean;
2855
+ mapReduceMinFiles: number;
2856
+ mapReduceMaxFileTokens: number;
2857
+ mapReduceTimeoutMs: number;
2858
+ mapReduceMaxConcurrency: number;
2859
+ changelogMaxDiffChars: number;
2860
+ }
2861
+
2862
+ export interface TtsrSettings {
2863
+ enabled: boolean;
2864
+ contextMode: "discard" | "keep";
2865
+ interruptMode: "never" | "prose-only" | "tool-only" | "always";
2866
+ repeatMode: "once" | "after-gap";
2867
+ repeatGap: number;
2868
+ }
2869
+
2870
+ export interface ExaSettings {
2871
+ enabled: boolean;
2872
+ enableSearch: boolean;
2873
+ enableResearcher: boolean;
2874
+ enableWebsets: boolean;
2875
+ }
2876
+
2877
+ export interface StatusLineSettings {
2878
+ preset: StatusLinePreset;
2879
+ separator: StatusLineSeparatorStyle;
2880
+ showHookStatus: boolean;
2881
+ showSkillHud: boolean;
2882
+ leftSegments: StatusLineSegmentId[];
2883
+ rightSegments: StatusLineSegmentId[];
2884
+ segmentOptions: Record<string, unknown>;
2885
+ }
2886
+
2887
+ export interface ThinkingBudgetsSettings {
2888
+ minimal: number;
2889
+ low: number;
2890
+ medium: number;
2891
+ high: number;
2892
+ xhigh: number;
2893
+ }
2894
+
2895
+ export interface SttSettings {
2896
+ enabled: boolean;
2897
+ language: string | undefined;
2898
+ modelName: string;
2899
+ whisperPath: string | undefined;
2900
+ modelPath: string | undefined;
2901
+ }
2902
+
2903
+ export interface BashInterceptorRule {
2904
+ pattern: string;
2905
+ flags?: string;
2906
+ tool: string;
2907
+ message: string;
2908
+ allowSubcommands?: string[];
2909
+ }
2910
+
2911
+ export interface ShellMinimizerSettings {
2912
+ enabled: boolean;
2913
+ settingsPath: string | undefined;
2914
+ only: string[];
2915
+ except: string[];
2916
+ maxCaptureBytes: number;
2917
+ }
2918
+
2919
+ /** Map group prefix -> typed settings interface */
2920
+ export interface GroupTypeMap {
2921
+ compaction: CompactionSettings;
2922
+ contextPromotion: ContextPromotionSettings;
2923
+ retry: RetrySettings;
2924
+ memories: MemoriesSettings;
2925
+ branchSummary: BranchSummarySettings;
2926
+ skills: SkillsSettings;
2927
+ commit: CommitSettings;
2928
+ ttsr: TtsrSettings;
2929
+ exa: ExaSettings;
2930
+ statusLine: StatusLineSettings;
2931
+ thinkingBudgets: ThinkingBudgetsSettings;
2932
+ stt: SttSettings;
2933
+ modelRoles: Record<string, string>;
2934
+ modelTags: ModelTagsSettings;
2935
+ cycleOrder: string[];
2936
+ shellMinimizer: ShellMinimizerSettings;
2937
+ }
2938
+
2939
+ export type GroupPrefix = keyof GroupTypeMap;