@cjhyy/code-shell-core 0.5.0-rc.0

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 (484) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/dist/agent/coordinator.d.ts +49 -0
  4. package/dist/agent/coordinator.js +77 -0
  5. package/dist/arena/arena.d.ts +43 -0
  6. package/dist/arena/arena.js +334 -0
  7. package/dist/arena/context/context-tools.d.ts +16 -0
  8. package/dist/arena/context/context-tools.js +231 -0
  9. package/dist/arena/detect-mode.d.ts +20 -0
  10. package/dist/arena/detect-mode.js +78 -0
  11. package/dist/arena/digest-builder.d.ts +25 -0
  12. package/dist/arena/digest-builder.js +120 -0
  13. package/dist/arena/index.d.ts +29 -0
  14. package/dist/arena/index.js +29 -0
  15. package/dist/arena/iterate/convergence.d.ts +25 -0
  16. package/dist/arena/iterate/convergence.js +103 -0
  17. package/dist/arena/iterate/formats/index.d.ts +22 -0
  18. package/dist/arena/iterate/formats/index.js +283 -0
  19. package/dist/arena/iterate/index.d.ts +11 -0
  20. package/dist/arena/iterate/index.js +9 -0
  21. package/dist/arena/iterate/iterative-arena.d.ts +23 -0
  22. package/dist/arena/iterate/iterative-arena.js +237 -0
  23. package/dist/arena/iterate/parse.d.ts +42 -0
  24. package/dist/arena/iterate/parse.js +123 -0
  25. package/dist/arena/iterate/phases/argue.d.ts +22 -0
  26. package/dist/arena/iterate/phases/argue.js +159 -0
  27. package/dist/arena/iterate/phases/revise.d.ts +16 -0
  28. package/dist/arena/iterate/phases/revise.js +62 -0
  29. package/dist/arena/iterate/phases/tournament.d.ts +34 -0
  30. package/dist/arena/iterate/phases/tournament.js +113 -0
  31. package/dist/arena/iterate/tools/web-tools.d.ts +13 -0
  32. package/dist/arena/iterate/tools/web-tools.js +54 -0
  33. package/dist/arena/iterate/types.d.ts +152 -0
  34. package/dist/arena/iterate/types.js +8 -0
  35. package/dist/arena/ledger.d.ts +47 -0
  36. package/dist/arena/ledger.js +151 -0
  37. package/dist/arena/lenses/architecture.d.ts +5 -0
  38. package/dist/arena/lenses/architecture.js +22 -0
  39. package/dist/arena/lenses/engineering.d.ts +5 -0
  40. package/dist/arena/lenses/engineering.js +22 -0
  41. package/dist/arena/lenses/general.d.ts +5 -0
  42. package/dist/arena/lenses/general.js +20 -0
  43. package/dist/arena/lenses/index.d.ts +16 -0
  44. package/dist/arena/lenses/index.js +47 -0
  45. package/dist/arena/lenses/product.d.ts +5 -0
  46. package/dist/arena/lenses/product.js +22 -0
  47. package/dist/arena/model-presets.d.ts +23 -0
  48. package/dist/arena/model-presets.js +44 -0
  49. package/dist/arena/phases/adjudication.d.ts +24 -0
  50. package/dist/arena/phases/adjudication.js +144 -0
  51. package/dist/arena/phases/build-consensus.d.ts +29 -0
  52. package/dist/arena/phases/build-consensus.js +86 -0
  53. package/dist/arena/phases/claim-registry.d.ts +26 -0
  54. package/dist/arena/phases/claim-registry.js +60 -0
  55. package/dist/arena/phases/cross-review.d.ts +45 -0
  56. package/dist/arena/phases/cross-review.js +224 -0
  57. package/dist/arena/phases/debate-rounds.d.ts +27 -0
  58. package/dist/arena/phases/debate-rounds.js +162 -0
  59. package/dist/arena/phases/participant-research.d.ts +38 -0
  60. package/dist/arena/phases/participant-research.js +317 -0
  61. package/dist/arena/phases/planning-detail-expansion.d.ts +38 -0
  62. package/dist/arena/phases/planning-detail-expansion.js +121 -0
  63. package/dist/arena/planner.d.ts +27 -0
  64. package/dist/arena/planner.js +312 -0
  65. package/dist/arena/providers/docs.d.ts +6 -0
  66. package/dist/arena/providers/docs.js +108 -0
  67. package/dist/arena/providers/git.d.ts +8 -0
  68. package/dist/arena/providers/git.js +174 -0
  69. package/dist/arena/providers/index.d.ts +32 -0
  70. package/dist/arena/providers/index.js +132 -0
  71. package/dist/arena/providers/none.d.ts +7 -0
  72. package/dist/arena/providers/none.js +11 -0
  73. package/dist/arena/providers/repo.d.ts +6 -0
  74. package/dist/arena/providers/repo.js +255 -0
  75. package/dist/arena/render/session.d.ts +17 -0
  76. package/dist/arena/render/session.js +190 -0
  77. package/dist/arena/render/terminal.d.ts +34 -0
  78. package/dist/arena/render/terminal.js +286 -0
  79. package/dist/arena/strategies/discussion.d.ts +25 -0
  80. package/dist/arena/strategies/discussion.js +143 -0
  81. package/dist/arena/strategies/index.d.ts +15 -0
  82. package/dist/arena/strategies/index.js +28 -0
  83. package/dist/arena/strategies/language-wrapper.d.ts +17 -0
  84. package/dist/arena/strategies/language-wrapper.js +102 -0
  85. package/dist/arena/strategies/lens-wrapper.d.ts +16 -0
  86. package/dist/arena/strategies/lens-wrapper.js +236 -0
  87. package/dist/arena/strategies/planning.d.ts +30 -0
  88. package/dist/arena/strategies/planning.js +225 -0
  89. package/dist/arena/strategies/review.d.ts +26 -0
  90. package/dist/arena/strategies/review.js +168 -0
  91. package/dist/arena/strategies/utils.d.ts +39 -0
  92. package/dist/arena/strategies/utils.js +647 -0
  93. package/dist/arena/tools/selector.d.ts +17 -0
  94. package/dist/arena/tools/selector.js +61 -0
  95. package/dist/arena/transitions.d.ts +48 -0
  96. package/dist/arena/transitions.js +92 -0
  97. package/dist/arena/types.d.ts +508 -0
  98. package/dist/arena/types.js +27 -0
  99. package/dist/cli/agent-server-stdio.d.ts +32 -0
  100. package/dist/cli/agent-server-stdio.js +116 -0
  101. package/dist/colorizer.d.ts +23 -0
  102. package/dist/colorizer.js +12 -0
  103. package/dist/context/compaction.d.ts +116 -0
  104. package/dist/context/compaction.js +534 -0
  105. package/dist/context/manager.d.ts +145 -0
  106. package/dist/context/manager.js +423 -0
  107. package/dist/context/token-counter.d.ts +27 -0
  108. package/dist/context/token-counter.js +91 -0
  109. package/dist/context/tool-result-storage.d.ts +96 -0
  110. package/dist/context/tool-result-storage.js +296 -0
  111. package/dist/cost-tracker.d.ts +64 -0
  112. package/dist/cost-tracker.js +314 -0
  113. package/dist/cron/scheduler.d.ts +34 -0
  114. package/dist/cron/scheduler.js +115 -0
  115. package/dist/data/deepseek-models.json +46 -0
  116. package/dist/data/gemini-models.json +67 -0
  117. package/dist/data/openai-models.json +175 -0
  118. package/dist/data/openrouter-models.d.ts +35 -0
  119. package/dist/data/openrouter-models.js +36 -0
  120. package/dist/data/openrouter-models.json +4626 -0
  121. package/dist/data/openrouter-sync.d.ts +16 -0
  122. package/dist/data/openrouter-sync.js +53 -0
  123. package/dist/data/static-catalogs.d.ts +25 -0
  124. package/dist/data/static-catalogs.js +26 -0
  125. package/dist/data/zai-models.json +56 -0
  126. package/dist/engine/cost-store.d.ts +22 -0
  127. package/dist/engine/cost-store.js +15 -0
  128. package/dist/engine/engine.d.ts +295 -0
  129. package/dist/engine/engine.js +1467 -0
  130. package/dist/engine/model-facade.d.ts +24 -0
  131. package/dist/engine/model-facade.js +194 -0
  132. package/dist/engine/parse-task.d.ts +59 -0
  133. package/dist/engine/parse-task.js +135 -0
  134. package/dist/engine/patch-orphaned-tools.d.ts +52 -0
  135. package/dist/engine/patch-orphaned-tools.js +95 -0
  136. package/dist/engine/query.d.ts +50 -0
  137. package/dist/engine/query.js +107 -0
  138. package/dist/engine/runtime.d.ts +50 -0
  139. package/dist/engine/runtime.js +59 -0
  140. package/dist/engine/streaming-tool-queue.d.ts +34 -0
  141. package/dist/engine/streaming-tool-queue.js +61 -0
  142. package/dist/engine/token-budget.d.ts +22 -0
  143. package/dist/engine/token-budget.js +40 -0
  144. package/dist/engine/tool-summary.d.ts +13 -0
  145. package/dist/engine/tool-summary.js +35 -0
  146. package/dist/engine/turn-loop.d.ts +122 -0
  147. package/dist/engine/turn-loop.js +602 -0
  148. package/dist/engine/turn-state.d.ts +20 -0
  149. package/dist/engine/turn-state.js +17 -0
  150. package/dist/exceptions.d.ts +61 -0
  151. package/dist/exceptions.js +116 -0
  152. package/dist/git/utils.d.ts +35 -0
  153. package/dist/git/utils.js +98 -0
  154. package/dist/git/worktree.d.ts +36 -0
  155. package/dist/git/worktree.js +139 -0
  156. package/dist/hooks/events.d.ts +114 -0
  157. package/dist/hooks/events.js +4 -0
  158. package/dist/hooks/inject.d.ts +19 -0
  159. package/dist/hooks/inject.js +29 -0
  160. package/dist/hooks/registry.d.ts +15 -0
  161. package/dist/hooks/registry.js +84 -0
  162. package/dist/hooks/shell-runner.d.ts +45 -0
  163. package/dist/hooks/shell-runner.js +173 -0
  164. package/dist/index.d.ts +117 -0
  165. package/dist/index.js +145 -0
  166. package/dist/llm/api-key-sanitize.d.ts +22 -0
  167. package/dist/llm/api-key-sanitize.js +81 -0
  168. package/dist/llm/capabilities/index.d.ts +20 -0
  169. package/dist/llm/capabilities/index.js +39 -0
  170. package/dist/llm/capabilities/rules.d.ts +26 -0
  171. package/dist/llm/capabilities/rules.js +215 -0
  172. package/dist/llm/capabilities/types.d.ts +114 -0
  173. package/dist/llm/capabilities/types.js +24 -0
  174. package/dist/llm/client-base.d.ts +29 -0
  175. package/dist/llm/client-base.js +137 -0
  176. package/dist/llm/client-factory.d.ts +10 -0
  177. package/dist/llm/client-factory.js +29 -0
  178. package/dist/llm/model-cache.d.ts +21 -0
  179. package/dist/llm/model-cache.js +46 -0
  180. package/dist/llm/model-fetcher.d.ts +29 -0
  181. package/dist/llm/model-fetcher.js +282 -0
  182. package/dist/llm/model-pool.d.ts +95 -0
  183. package/dist/llm/model-pool.js +246 -0
  184. package/dist/llm/provider-catalog.d.ts +32 -0
  185. package/dist/llm/provider-catalog.js +50 -0
  186. package/dist/llm/provider-kinds.d.ts +21 -0
  187. package/dist/llm/provider-kinds.js +132 -0
  188. package/dist/llm/providers/anthropic.d.ts +19 -0
  189. package/dist/llm/providers/anthropic.js +267 -0
  190. package/dist/llm/providers/openai.d.ts +64 -0
  191. package/dist/llm/providers/openai.js +606 -0
  192. package/dist/llm/retry.d.ts +12 -0
  193. package/dist/llm/retry.js +17 -0
  194. package/dist/llm/stream-watchdog.d.ts +42 -0
  195. package/dist/llm/stream-watchdog.js +70 -0
  196. package/dist/llm/token-counter.d.ts +17 -0
  197. package/dist/llm/token-counter.js +36 -0
  198. package/dist/llm/types.d.ts +37 -0
  199. package/dist/llm/types.js +4 -0
  200. package/dist/logging/logger.d.ts +109 -0
  201. package/dist/logging/logger.js +390 -0
  202. package/dist/logging/sanitize-messages.d.ts +42 -0
  203. package/dist/logging/sanitize-messages.js +150 -0
  204. package/dist/logging/session-recorder.d.ts +90 -0
  205. package/dist/logging/session-recorder.js +304 -0
  206. package/dist/lsp/client.d.ts +41 -0
  207. package/dist/lsp/client.js +166 -0
  208. package/dist/lsp/manager.d.ts +40 -0
  209. package/dist/lsp/manager.js +124 -0
  210. package/dist/lsp/servers.d.ts +16 -0
  211. package/dist/lsp/servers.js +60 -0
  212. package/dist/migrate-models.d.ts +45 -0
  213. package/dist/migrate-models.js +179 -0
  214. package/dist/onboarding.d.ts +189 -0
  215. package/dist/onboarding.js +625 -0
  216. package/dist/plugins/gitOps.d.ts +32 -0
  217. package/dist/plugins/gitOps.js +62 -0
  218. package/dist/plugins/installedPlugins.d.ts +15 -0
  219. package/dist/plugins/installedPlugins.js +56 -0
  220. package/dist/plugins/knownMarketplaces.d.ts +10 -0
  221. package/dist/plugins/knownMarketplaces.js +46 -0
  222. package/dist/plugins/loadPluginHooks.d.ts +52 -0
  223. package/dist/plugins/loadPluginHooks.js +162 -0
  224. package/dist/plugins/marketplaceManager.d.ts +49 -0
  225. package/dist/plugins/marketplaceManager.js +142 -0
  226. package/dist/plugins/parseMarketplaceInput.d.ts +16 -0
  227. package/dist/plugins/parseMarketplaceInput.js +73 -0
  228. package/dist/plugins/pluginCommandHook.d.ts +54 -0
  229. package/dist/plugins/pluginCommandHook.js +180 -0
  230. package/dist/plugins/pluginCommandsLoader.d.ts +25 -0
  231. package/dist/plugins/pluginCommandsLoader.js +114 -0
  232. package/dist/plugins/pluginInstaller.d.ts +36 -0
  233. package/dist/plugins/pluginInstaller.js +228 -0
  234. package/dist/plugins/schemas.d.ts +9 -0
  235. package/dist/plugins/schemas.js +136 -0
  236. package/dist/plugins/types.d.ts +75 -0
  237. package/dist/plugins/types.js +7 -0
  238. package/dist/plugins/varRewrite.d.ts +42 -0
  239. package/dist/plugins/varRewrite.js +129 -0
  240. package/dist/preset/index.d.ts +60 -0
  241. package/dist/preset/index.js +159 -0
  242. package/dist/product/define.d.ts +60 -0
  243. package/dist/product/define.js +123 -0
  244. package/dist/product/index.d.ts +5 -0
  245. package/dist/product/index.js +4 -0
  246. package/dist/product/types.d.ts +111 -0
  247. package/dist/product/types.js +21 -0
  248. package/dist/prompt/composer.d.ts +49 -0
  249. package/dist/prompt/composer.js +168 -0
  250. package/dist/prompt/instruction-scanner.d.ts +54 -0
  251. package/dist/prompt/instruction-scanner.js +187 -0
  252. package/dist/prompt/section-cache.d.ts +15 -0
  253. package/dist/prompt/section-cache.js +31 -0
  254. package/dist/prompt/section-loader.d.ts +26 -0
  255. package/dist/prompt/section-loader.js +53 -0
  256. package/dist/prompt/sections/base.md +35 -0
  257. package/dist/prompt/sections/coding.md +31 -0
  258. package/dist/prompt/sections/orchestration.md +16 -0
  259. package/dist/prompt/sections/tone.md +9 -0
  260. package/dist/protocol/chat-session-manager.d.ts +33 -0
  261. package/dist/protocol/chat-session-manager.js +65 -0
  262. package/dist/protocol/chat-session.d.ts +49 -0
  263. package/dist/protocol/chat-session.js +86 -0
  264. package/dist/protocol/client.d.ts +104 -0
  265. package/dist/protocol/client.js +260 -0
  266. package/dist/protocol/factories.d.ts +93 -0
  267. package/dist/protocol/factories.js +64 -0
  268. package/dist/protocol/helpers.d.ts +42 -0
  269. package/dist/protocol/helpers.js +55 -0
  270. package/dist/protocol/index.d.ts +4 -0
  271. package/dist/protocol/index.js +4 -0
  272. package/dist/protocol/server.d.ts +80 -0
  273. package/dist/protocol/server.js +855 -0
  274. package/dist/protocol/transport.d.ts +37 -0
  275. package/dist/protocol/transport.js +85 -0
  276. package/dist/protocol/types.d.ts +221 -0
  277. package/dist/protocol/types.js +61 -0
  278. package/dist/remote/bridge.d.ts +37 -0
  279. package/dist/remote/bridge.js +103 -0
  280. package/dist/run/ArtifactTracker.d.ts +38 -0
  281. package/dist/run/ArtifactTracker.js +132 -0
  282. package/dist/run/CheckpointWriter.d.ts +53 -0
  283. package/dist/run/CheckpointWriter.js +135 -0
  284. package/dist/run/EngineRunner.d.ts +72 -0
  285. package/dist/run/EngineRunner.js +119 -0
  286. package/dist/run/Evaluator.d.ts +56 -0
  287. package/dist/run/Evaluator.js +62 -0
  288. package/dist/run/FileRunStore.d.ts +39 -0
  289. package/dist/run/FileRunStore.js +176 -0
  290. package/dist/run/Heartbeat.d.ts +54 -0
  291. package/dist/run/Heartbeat.js +123 -0
  292. package/dist/run/RunApprovalBackend.d.ts +53 -0
  293. package/dist/run/RunApprovalBackend.js +85 -0
  294. package/dist/run/RunLock.d.ts +40 -0
  295. package/dist/run/RunLock.js +98 -0
  296. package/dist/run/RunManager.d.ts +82 -0
  297. package/dist/run/RunManager.js +587 -0
  298. package/dist/run/RunQueue.d.ts +27 -0
  299. package/dist/run/RunQueue.js +73 -0
  300. package/dist/run/RunStore.d.ts +25 -0
  301. package/dist/run/RunStore.js +9 -0
  302. package/dist/run/factory.d.ts +63 -0
  303. package/dist/run/factory.js +51 -0
  304. package/dist/run/index.d.ts +17 -0
  305. package/dist/run/index.js +23 -0
  306. package/dist/run/types.d.ts +136 -0
  307. package/dist/run/types.js +28 -0
  308. package/dist/runtime/safe-spawn.d.ts +118 -0
  309. package/dist/runtime/safe-spawn.js +268 -0
  310. package/dist/services/analytics.d.ts +29 -0
  311. package/dist/services/analytics.js +84 -0
  312. package/dist/services/auto-dream.d.ts +49 -0
  313. package/dist/services/auto-dream.js +124 -0
  314. package/dist/services/diagnostics.d.ts +41 -0
  315. package/dist/services/diagnostics.js +99 -0
  316. package/dist/services/extract-memories.d.ts +31 -0
  317. package/dist/services/extract-memories.js +71 -0
  318. package/dist/services/index.d.ts +11 -0
  319. package/dist/services/index.js +17 -0
  320. package/dist/services/memory-orchestrator.d.ts +60 -0
  321. package/dist/services/memory-orchestrator.js +133 -0
  322. package/dist/services/notifier.d.ts +25 -0
  323. package/dist/services/notifier.js +69 -0
  324. package/dist/services/oauth.d.ts +27 -0
  325. package/dist/services/oauth.js +153 -0
  326. package/dist/services/session-memory.d.ts +37 -0
  327. package/dist/services/session-memory.js +81 -0
  328. package/dist/session/file-history.d.ts +41 -0
  329. package/dist/session/file-history.js +115 -0
  330. package/dist/session/memory.d.ts +104 -0
  331. package/dist/session/memory.js +310 -0
  332. package/dist/session/session-manager.d.ts +41 -0
  333. package/dist/session/session-manager.js +261 -0
  334. package/dist/session/transcript.d.ts +39 -0
  335. package/dist/session/transcript.js +186 -0
  336. package/dist/settings/manager.d.ts +36 -0
  337. package/dist/settings/manager.js +187 -0
  338. package/dist/settings/schema.d.ts +1219 -0
  339. package/dist/settings/schema.js +246 -0
  340. package/dist/skills/frontmatter.d.ts +13 -0
  341. package/dist/skills/frontmatter.js +70 -0
  342. package/dist/skills/index.d.ts +7 -0
  343. package/dist/skills/index.js +6 -0
  344. package/dist/skills/scanner.d.ts +31 -0
  345. package/dist/skills/scanner.js +171 -0
  346. package/dist/state.d.ts +160 -0
  347. package/dist/state.js +267 -0
  348. package/dist/tool-system/builtin/agent-notifications.d.ts +84 -0
  349. package/dist/tool-system/builtin/agent-notifications.js +197 -0
  350. package/dist/tool-system/builtin/agent-registry.d.ts +67 -0
  351. package/dist/tool-system/builtin/agent-registry.js +126 -0
  352. package/dist/tool-system/builtin/agent-transcript-translator.d.ts +22 -0
  353. package/dist/tool-system/builtin/agent-transcript-translator.js +160 -0
  354. package/dist/tool-system/builtin/agent.d.ts +16 -0
  355. package/dist/tool-system/builtin/agent.js +364 -0
  356. package/dist/tool-system/builtin/apply-patch/applier.d.ts +26 -0
  357. package/dist/tool-system/builtin/apply-patch/applier.js +250 -0
  358. package/dist/tool-system/builtin/apply-patch/index.d.ts +20 -0
  359. package/dist/tool-system/builtin/apply-patch/index.js +101 -0
  360. package/dist/tool-system/builtin/apply-patch/parser.d.ts +17 -0
  361. package/dist/tool-system/builtin/apply-patch/parser.js +212 -0
  362. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +18 -0
  363. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +123 -0
  364. package/dist/tool-system/builtin/apply-patch/types.d.ts +49 -0
  365. package/dist/tool-system/builtin/apply-patch/types.js +13 -0
  366. package/dist/tool-system/builtin/arena.d.ts +31 -0
  367. package/dist/tool-system/builtin/arena.js +416 -0
  368. package/dist/tool-system/builtin/ask-user.d.ts +20 -0
  369. package/dist/tool-system/builtin/ask-user.js +99 -0
  370. package/dist/tool-system/builtin/bash.d.ts +21 -0
  371. package/dist/tool-system/builtin/bash.js +149 -0
  372. package/dist/tool-system/builtin/brief.d.ts +6 -0
  373. package/dist/tool-system/builtin/brief.js +41 -0
  374. package/dist/tool-system/builtin/config.d.ts +6 -0
  375. package/dist/tool-system/builtin/config.js +67 -0
  376. package/dist/tool-system/builtin/cron.d.ts +10 -0
  377. package/dist/tool-system/builtin/cron.js +61 -0
  378. package/dist/tool-system/builtin/edit.d.ts +6 -0
  379. package/dist/tool-system/builtin/edit.js +100 -0
  380. package/dist/tool-system/builtin/file-cache.d.ts +11 -0
  381. package/dist/tool-system/builtin/file-cache.js +39 -0
  382. package/dist/tool-system/builtin/glob.d.ts +7 -0
  383. package/dist/tool-system/builtin/glob.js +76 -0
  384. package/dist/tool-system/builtin/grep.d.ts +7 -0
  385. package/dist/tool-system/builtin/grep.js +150 -0
  386. package/dist/tool-system/builtin/index.d.ts +20 -0
  387. package/dist/tool-system/builtin/index.js +449 -0
  388. package/dist/tool-system/builtin/lsp.d.ts +6 -0
  389. package/dist/tool-system/builtin/lsp.js +141 -0
  390. package/dist/tool-system/builtin/mcp-tools.d.ts +10 -0
  391. package/dist/tool-system/builtin/mcp-tools.js +102 -0
  392. package/dist/tool-system/builtin/memory.d.ts +26 -0
  393. package/dist/tool-system/builtin/memory.js +226 -0
  394. package/dist/tool-system/builtin/notebook-edit.d.ts +6 -0
  395. package/dist/tool-system/builtin/notebook-edit.js +124 -0
  396. package/dist/tool-system/builtin/plan.d.ts +15 -0
  397. package/dist/tool-system/builtin/plan.js +55 -0
  398. package/dist/tool-system/builtin/powershell.d.ts +11 -0
  399. package/dist/tool-system/builtin/powershell.js +64 -0
  400. package/dist/tool-system/builtin/read.d.ts +6 -0
  401. package/dist/tool-system/builtin/read.js +70 -0
  402. package/dist/tool-system/builtin/remote-trigger.d.ts +6 -0
  403. package/dist/tool-system/builtin/remote-trigger.js +54 -0
  404. package/dist/tool-system/builtin/repl.d.ts +11 -0
  405. package/dist/tool-system/builtin/repl.js +82 -0
  406. package/dist/tool-system/builtin/send-message.d.ts +6 -0
  407. package/dist/tool-system/builtin/send-message.js +47 -0
  408. package/dist/tool-system/builtin/skill-prompt.d.ts +20 -0
  409. package/dist/tool-system/builtin/skill-prompt.js +52 -0
  410. package/dist/tool-system/builtin/skill.d.ts +9 -0
  411. package/dist/tool-system/builtin/skill.js +55 -0
  412. package/dist/tool-system/builtin/sleep.d.ts +6 -0
  413. package/dist/tool-system/builtin/sleep.js +33 -0
  414. package/dist/tool-system/builtin/task.d.ts +48 -0
  415. package/dist/tool-system/builtin/task.js +139 -0
  416. package/dist/tool-system/builtin/tool-search.d.ts +11 -0
  417. package/dist/tool-system/builtin/tool-search.js +90 -0
  418. package/dist/tool-system/builtin/web-fetch.d.ts +10 -0
  419. package/dist/tool-system/builtin/web-fetch.js +328 -0
  420. package/dist/tool-system/builtin/web-search.d.ts +25 -0
  421. package/dist/tool-system/builtin/web-search.js +174 -0
  422. package/dist/tool-system/builtin/worktree.d.ts +10 -0
  423. package/dist/tool-system/builtin/worktree.js +95 -0
  424. package/dist/tool-system/builtin/write.d.ts +6 -0
  425. package/dist/tool-system/builtin/write.js +36 -0
  426. package/dist/tool-system/context.d.ts +165 -0
  427. package/dist/tool-system/context.js +18 -0
  428. package/dist/tool-system/executor.d.ts +49 -0
  429. package/dist/tool-system/executor.js +495 -0
  430. package/dist/tool-system/investigation-guard.d.ts +46 -0
  431. package/dist/tool-system/investigation-guard.js +155 -0
  432. package/dist/tool-system/mcp-manager.d.ts +67 -0
  433. package/dist/tool-system/mcp-manager.js +249 -0
  434. package/dist/tool-system/permission.d.ts +111 -0
  435. package/dist/tool-system/permission.js +774 -0
  436. package/dist/tool-system/registry.d.ts +32 -0
  437. package/dist/tool-system/registry.js +131 -0
  438. package/dist/tool-system/sandbox/bwrap.d.ts +13 -0
  439. package/dist/tool-system/sandbox/bwrap.js +63 -0
  440. package/dist/tool-system/sandbox/index.d.ts +78 -0
  441. package/dist/tool-system/sandbox/index.js +222 -0
  442. package/dist/tool-system/sandbox/off.d.ts +2 -0
  443. package/dist/tool-system/sandbox/off.js +8 -0
  444. package/dist/tool-system/sandbox/seatbelt.d.ts +18 -0
  445. package/dist/tool-system/sandbox/seatbelt.js +109 -0
  446. package/dist/tool-system/task-guard.d.ts +29 -0
  447. package/dist/tool-system/task-guard.js +70 -0
  448. package/dist/tool-system/validation.d.ts +5 -0
  449. package/dist/tool-system/validation.js +39 -0
  450. package/dist/types.d.ts +376 -0
  451. package/dist/types.js +4 -0
  452. package/dist/updater.d.ts +65 -0
  453. package/dist/updater.js +405 -0
  454. package/dist/utils/debug.d.ts +41 -0
  455. package/dist/utils/debug.js +110 -0
  456. package/dist/utils/earlyInput.d.ts +43 -0
  457. package/dist/utils/earlyInput.js +166 -0
  458. package/dist/utils/env.d.ts +24 -0
  459. package/dist/utils/env.js +104 -0
  460. package/dist/utils/envUtils.d.ts +51 -0
  461. package/dist/utils/envUtils.js +135 -0
  462. package/dist/utils/execFileNoThrow.d.ts +39 -0
  463. package/dist/utils/execFileNoThrow.js +74 -0
  464. package/dist/utils/format.d.ts +44 -0
  465. package/dist/utils/format.js +236 -0
  466. package/dist/utils/intl.d.ts +22 -0
  467. package/dist/utils/intl.js +83 -0
  468. package/dist/utils/lockfile.d.ts +15 -0
  469. package/dist/utils/lockfile.js +30 -0
  470. package/dist/utils/memoize.d.ts +19 -0
  471. package/dist/utils/memoize.js +14 -0
  472. package/dist/utils/semver.d.ts +6 -0
  473. package/dist/utils/semver.js +13 -0
  474. package/dist/utils/sliceAnsi.d.ts +12 -0
  475. package/dist/utils/sliceAnsi.js +62 -0
  476. package/dist/utils/systemTheme.d.ts +40 -0
  477. package/dist/utils/systemTheme.js +108 -0
  478. package/dist/utils/task-sanitizer.d.ts +6 -0
  479. package/dist/utils/task-sanitizer.js +24 -0
  480. package/dist/utils/theme.d.ts +93 -0
  481. package/dist/utils/theme.js +544 -0
  482. package/dist/utils/toolDisplay.d.ts +31 -0
  483. package/dist/utils/toolDisplay.js +188 -0
  484. package/package.json +72 -0
@@ -0,0 +1,1219 @@
1
+ /**
2
+ * Settings schema with Zod validation.
3
+ */
4
+ import { z } from "zod";
5
+ export declare const SettingsSchema: z.ZodObject<{
6
+ agent: z.ZodDefault<z.ZodObject<{
7
+ preset: z.ZodDefault<z.ZodString>;
8
+ enabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
9
+ disabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
10
+ customSystemPrompt: z.ZodOptional<z.ZodString>;
11
+ appendSystemPrompt: z.ZodOptional<z.ZodString>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ preset: string;
14
+ enabledBuiltinTools: string[];
15
+ disabledBuiltinTools: string[];
16
+ customSystemPrompt?: string | undefined;
17
+ appendSystemPrompt?: string | undefined;
18
+ }, {
19
+ preset?: string | undefined;
20
+ enabledBuiltinTools?: string[] | undefined;
21
+ disabledBuiltinTools?: string[] | undefined;
22
+ customSystemPrompt?: string | undefined;
23
+ appendSystemPrompt?: string | undefined;
24
+ }>>;
25
+ /**
26
+ * Primary source of truth for the active model is settings.activeKey
27
+ * (points at models[].key). settings.model is a derived mirror of that
28
+ * entry kept in sync for legacy boot paths (cli/main.ts, repl.ts, etc.)
29
+ * which read provider/name/apiKey/baseUrl directly. Writers must update
30
+ * both — appendOnboardingResult does this in one shot.
31
+ */
32
+ activeKey: z.ZodOptional<z.ZodString>;
33
+ /**
34
+ * Toggle background auto-update. When true (default), code-shell checks
35
+ * npm for newer versions and — if the npm global prefix is writable —
36
+ * installs the update in the background on process exit so the next
37
+ * launch picks it up.
38
+ * Can also be disabled via env var `DISABLE_AUTOUPDATER=1`.
39
+ */
40
+ autoUpdates: z.ZodDefault<z.ZodBoolean>;
41
+ model: z.ZodDefault<z.ZodObject<{
42
+ provider: z.ZodDefault<z.ZodString>;
43
+ name: z.ZodDefault<z.ZodString>;
44
+ apiKey: z.ZodOptional<z.ZodString>;
45
+ baseUrl: z.ZodDefault<z.ZodString>;
46
+ temperature: z.ZodDefault<z.ZodNumber>;
47
+ maxTokens: z.ZodDefault<z.ZodNumber>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ provider: string;
50
+ name: string;
51
+ temperature: number;
52
+ baseUrl: string;
53
+ maxTokens: number;
54
+ apiKey?: string | undefined;
55
+ }, {
56
+ provider?: string | undefined;
57
+ name?: string | undefined;
58
+ temperature?: number | undefined;
59
+ baseUrl?: string | undefined;
60
+ apiKey?: string | undefined;
61
+ maxTokens?: number | undefined;
62
+ }>>;
63
+ providers: z.ZodDefault<z.ZodArray<z.ZodObject<{
64
+ key: z.ZodString;
65
+ label: z.ZodOptional<z.ZodString>;
66
+ kind: z.ZodEnum<["openai", "anthropic", "deepseek", "zai", "xai", "mistral", "groq", "google", "openrouter", "ollama", "custom"]>;
67
+ baseUrl: z.ZodString;
68
+ apiKey: z.ZodOptional<z.ZodString>;
69
+ protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
70
+ modelsPath: z.ZodOptional<z.ZodString>;
71
+ /**
72
+ * DeepSeek V4 thinking-mode default for this provider. "enabled"
73
+ * matches endpoint default; "disabled" makes V4 calls run in
74
+ * non-thinking mode (faster, cheaper). Ignored by every provider
75
+ * other than DeepSeek V4. Per-call overrides still win.
76
+ */
77
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
78
+ }, "strip", z.ZodTypeAny, {
79
+ key: string;
80
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
81
+ baseUrl: string;
82
+ thinking?: "enabled" | "disabled" | undefined;
83
+ label?: string | undefined;
84
+ apiKey?: string | undefined;
85
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
86
+ modelsPath?: string | undefined;
87
+ }, {
88
+ key: string;
89
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
90
+ baseUrl: string;
91
+ thinking?: "enabled" | "disabled" | undefined;
92
+ label?: string | undefined;
93
+ apiKey?: string | undefined;
94
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
95
+ modelsPath?: string | undefined;
96
+ }>, "many">>;
97
+ models: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
98
+ key: z.ZodString;
99
+ label: z.ZodOptional<z.ZodString>;
100
+ providerKey: z.ZodOptional<z.ZodString>;
101
+ model: z.ZodString;
102
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
103
+ maxContextTokens: z.ZodOptional<z.ZodNumber>;
104
+ /**
105
+ * Which LLM client to use ("openai" or "anthropic"). New name —
106
+ * the legacy field is `provider`, which we still accept and
107
+ * fold into `protocol` below so old configs keep working.
108
+ * NOT the brand/vendor — that's providerKey above.
109
+ */
110
+ protocol: z.ZodOptional<z.ZodString>;
111
+ provider: z.ZodOptional<z.ZodString>;
112
+ baseUrl: z.ZodOptional<z.ZodString>;
113
+ apiKey: z.ZodOptional<z.ZodString>;
114
+ /**
115
+ * Per-model thinking override. Wins over the provider-level
116
+ * setting (settings.providers[].thinking). Use this when
117
+ * different models under the same provider need different
118
+ * defaults — e.g. DeepSeek V4 Pro off (faster) but V4 Flash on.
119
+ */
120
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
121
+ }, "strip", z.ZodTypeAny, {
122
+ model: string;
123
+ key: string;
124
+ provider?: string | undefined;
125
+ thinking?: "enabled" | "disabled" | undefined;
126
+ label?: string | undefined;
127
+ baseUrl?: string | undefined;
128
+ apiKey?: string | undefined;
129
+ protocol?: string | undefined;
130
+ providerKey?: string | undefined;
131
+ maxOutputTokens?: number | undefined;
132
+ maxContextTokens?: number | undefined;
133
+ }, {
134
+ model: string;
135
+ key: string;
136
+ provider?: string | undefined;
137
+ thinking?: "enabled" | "disabled" | undefined;
138
+ label?: string | undefined;
139
+ baseUrl?: string | undefined;
140
+ apiKey?: string | undefined;
141
+ protocol?: string | undefined;
142
+ providerKey?: string | undefined;
143
+ maxOutputTokens?: number | undefined;
144
+ maxContextTokens?: number | undefined;
145
+ }>, {
146
+ protocol: string | undefined;
147
+ provider: string | undefined;
148
+ model: string;
149
+ key: string;
150
+ thinking?: "enabled" | "disabled" | undefined;
151
+ label?: string | undefined;
152
+ baseUrl?: string | undefined;
153
+ apiKey?: string | undefined;
154
+ providerKey?: string | undefined;
155
+ maxOutputTokens?: number | undefined;
156
+ maxContextTokens?: number | undefined;
157
+ }, {
158
+ model: string;
159
+ key: string;
160
+ provider?: string | undefined;
161
+ thinking?: "enabled" | "disabled" | undefined;
162
+ label?: string | undefined;
163
+ baseUrl?: string | undefined;
164
+ apiKey?: string | undefined;
165
+ protocol?: string | undefined;
166
+ providerKey?: string | undefined;
167
+ maxOutputTokens?: number | undefined;
168
+ maxContextTokens?: number | undefined;
169
+ }>, "many">>;
170
+ permissions: z.ZodDefault<z.ZodObject<{
171
+ defaultMode: z.ZodDefault<z.ZodEnum<["default", "acceptEdits", "dontAsk", "bypassPermissions", "auto", "plan"]>>;
172
+ rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
173
+ tool: z.ZodString;
174
+ argsPattern: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
175
+ decision: z.ZodEnum<["allow", "deny", "ask"]>;
176
+ reason: z.ZodOptional<z.ZodString>;
177
+ }, "strip", z.ZodTypeAny, {
178
+ tool: string;
179
+ decision: "allow" | "deny" | "ask";
180
+ reason?: string | undefined;
181
+ argsPattern?: Record<string, string> | undefined;
182
+ }, {
183
+ tool: string;
184
+ decision: "allow" | "deny" | "ask";
185
+ reason?: string | undefined;
186
+ argsPattern?: Record<string, string> | undefined;
187
+ }>, "many">>;
188
+ }, "strip", z.ZodTypeAny, {
189
+ defaultMode: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan";
190
+ rules: {
191
+ tool: string;
192
+ decision: "allow" | "deny" | "ask";
193
+ reason?: string | undefined;
194
+ argsPattern?: Record<string, string> | undefined;
195
+ }[];
196
+ }, {
197
+ defaultMode?: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan" | undefined;
198
+ rules?: {
199
+ tool: string;
200
+ decision: "allow" | "deny" | "ask";
201
+ reason?: string | undefined;
202
+ argsPattern?: Record<string, string> | undefined;
203
+ }[] | undefined;
204
+ }>>;
205
+ context: z.ZodDefault<z.ZodObject<{
206
+ maxTokens: z.ZodDefault<z.ZodNumber>;
207
+ compactAtRatio: z.ZodDefault<z.ZodNumber>;
208
+ summarizeAtRatio: z.ZodDefault<z.ZodNumber>;
209
+ }, "strip", z.ZodTypeAny, {
210
+ maxTokens: number;
211
+ compactAtRatio: number;
212
+ summarizeAtRatio: number;
213
+ }, {
214
+ maxTokens?: number | undefined;
215
+ compactAtRatio?: number | undefined;
216
+ summarizeAtRatio?: number | undefined;
217
+ }>>;
218
+ session: z.ZodDefault<z.ZodObject<{
219
+ storageDir: z.ZodOptional<z.ZodString>;
220
+ maxHistory: z.ZodDefault<z.ZodNumber>;
221
+ }, "strip", z.ZodTypeAny, {
222
+ maxHistory: number;
223
+ storageDir?: string | undefined;
224
+ }, {
225
+ storageDir?: string | undefined;
226
+ maxHistory?: number | undefined;
227
+ }>>;
228
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
229
+ name: z.ZodString;
230
+ command: z.ZodOptional<z.ZodString>;
231
+ args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
232
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
233
+ url: z.ZodOptional<z.ZodString>;
234
+ transport: z.ZodOptional<z.ZodEnum<["stdio", "sse", "streamable-http", "inprocess"]>>;
235
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
236
+ }, "strip", z.ZodTypeAny, {
237
+ name: string;
238
+ url?: string | undefined;
239
+ args?: string[] | undefined;
240
+ env?: Record<string, string> | undefined;
241
+ command?: string | undefined;
242
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
243
+ headers?: Record<string, string> | undefined;
244
+ }, {
245
+ name: string;
246
+ url?: string | undefined;
247
+ args?: string[] | undefined;
248
+ env?: Record<string, string> | undefined;
249
+ command?: string | undefined;
250
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
251
+ headers?: Record<string, string> | undefined;
252
+ }>>>;
253
+ /**
254
+ * Skill names hidden from the LLM. Names include the full
255
+ * "<plugin>:<skill>" prefix for plugin skills. Filtered at the
256
+ * scanner so PromptComposer's skills listing and the skill builtin
257
+ * tool both see the filtered set — see scanSkills(opts).
258
+ */
259
+ disabledSkills: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
260
+ instructions: z.ZodDefault<z.ZodObject<{
261
+ fileName: z.ZodDefault<z.ZodString>;
262
+ scanDirs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
263
+ compatFileNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
264
+ ignoreGitBoundary: z.ZodDefault<z.ZodBoolean>;
265
+ }, "strip", z.ZodTypeAny, {
266
+ fileName: string;
267
+ scanDirs: string[];
268
+ compatFileNames: string[];
269
+ ignoreGitBoundary: boolean;
270
+ }, {
271
+ fileName?: string | undefined;
272
+ scanDirs?: string[] | undefined;
273
+ compatFileNames?: string[] | undefined;
274
+ ignoreGitBoundary?: boolean | undefined;
275
+ }>>;
276
+ arena: z.ZodDefault<z.ZodObject<{
277
+ participants: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
278
+ name: z.ZodString;
279
+ model: z.ZodString;
280
+ provider: z.ZodOptional<z.ZodString>;
281
+ apiKey: z.ZodOptional<z.ZodString>;
282
+ baseUrl: z.ZodOptional<z.ZodString>;
283
+ }, "strip", z.ZodTypeAny, {
284
+ model: string;
285
+ name: string;
286
+ provider?: string | undefined;
287
+ baseUrl?: string | undefined;
288
+ apiKey?: string | undefined;
289
+ }, {
290
+ model: string;
291
+ name: string;
292
+ provider?: string | undefined;
293
+ baseUrl?: string | undefined;
294
+ apiKey?: string | undefined;
295
+ }>]>, "many">>;
296
+ }, "strip", z.ZodTypeAny, {
297
+ participants: (string | {
298
+ model: string;
299
+ name: string;
300
+ provider?: string | undefined;
301
+ baseUrl?: string | undefined;
302
+ apiKey?: string | undefined;
303
+ })[];
304
+ }, {
305
+ participants?: (string | {
306
+ model: string;
307
+ name: string;
308
+ provider?: string | undefined;
309
+ baseUrl?: string | undefined;
310
+ apiKey?: string | undefined;
311
+ })[] | undefined;
312
+ }>>;
313
+ search: z.ZodDefault<z.ZodObject<{
314
+ provider: z.ZodDefault<z.ZodEnum<["serper", "tavily", "searxng"]>>;
315
+ apiKey: z.ZodOptional<z.ZodString>;
316
+ baseUrl: z.ZodOptional<z.ZodString>;
317
+ /**
318
+ * Per-provider credentials bag. Lets the desktop UI keep
319
+ * Serper/Tavily/SearXNG configured simultaneously and flip the
320
+ * default without losing the others. `provider/apiKey/baseUrl`
321
+ * remain authoritative for the *active* provider so legacy
322
+ * readers keep working.
323
+ */
324
+ providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["serper", "tavily", "searxng"]>, z.ZodObject<{
325
+ apiKey: z.ZodOptional<z.ZodString>;
326
+ baseUrl: z.ZodOptional<z.ZodString>;
327
+ }, "strip", z.ZodTypeAny, {
328
+ baseUrl?: string | undefined;
329
+ apiKey?: string | undefined;
330
+ }, {
331
+ baseUrl?: string | undefined;
332
+ apiKey?: string | undefined;
333
+ }>>>;
334
+ }, "strip", z.ZodTypeAny, {
335
+ provider: "serper" | "tavily" | "searxng";
336
+ baseUrl?: string | undefined;
337
+ apiKey?: string | undefined;
338
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
339
+ baseUrl?: string | undefined;
340
+ apiKey?: string | undefined;
341
+ }>> | undefined;
342
+ }, {
343
+ provider?: "serper" | "tavily" | "searxng" | undefined;
344
+ baseUrl?: string | undefined;
345
+ apiKey?: string | undefined;
346
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
347
+ baseUrl?: string | undefined;
348
+ apiKey?: string | undefined;
349
+ }>> | undefined;
350
+ }>>;
351
+ output: z.ZodDefault<z.ZodObject<{
352
+ format: z.ZodDefault<z.ZodEnum<["text", "json", "jsonl", "stream-json"]>>;
353
+ }, "strip", z.ZodTypeAny, {
354
+ format: "text" | "json" | "jsonl" | "stream-json";
355
+ }, {
356
+ format?: "text" | "json" | "jsonl" | "stream-json" | undefined;
357
+ }>>;
358
+ /**
359
+ * OS-level sandbox for shell-tool execution. "auto" picks per platform:
360
+ * Seatbelt on macOS, bubblewrap on Linux when installed, otherwise off.
361
+ * Defaults are applied per Engine run depending on headless vs REPL —
362
+ * see Engine.run() and run.ts.
363
+ */
364
+ sandbox: z.ZodOptional<z.ZodObject<{
365
+ mode: z.ZodOptional<z.ZodEnum<["off", "auto", "seatbelt", "bwrap"]>>;
366
+ writableRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
367
+ deniedReads: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
368
+ network: z.ZodOptional<z.ZodEnum<["allow", "deny"]>>;
369
+ }, "strip", z.ZodTypeAny, {
370
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
371
+ writableRoots?: string[] | undefined;
372
+ deniedReads?: string[] | undefined;
373
+ network?: "allow" | "deny" | undefined;
374
+ }, {
375
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
376
+ writableRoots?: string[] | undefined;
377
+ deniedReads?: string[] | undefined;
378
+ network?: "allow" | "deny" | undefined;
379
+ }>>;
380
+ /**
381
+ * Shell-hook configuration. Each entry binds a HookEventName to a
382
+ * shell command; the command receives ctx JSON on stdin and returns
383
+ * a HookResult JSON on stdout (or exit 2 = deny with stderr as
384
+ * reason). See src/hooks/shell-runner.ts for the wire protocol.
385
+ *
386
+ * The event field is loose-typed here (z.string()) because adding
387
+ * new lifecycle events shouldn't force a schema bump; the runner
388
+ * silently ignores entries whose event isn't registered.
389
+ */
390
+ hooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
391
+ event: z.ZodString;
392
+ command: z.ZodString;
393
+ matcher: z.ZodOptional<z.ZodString>;
394
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
395
+ cwd: z.ZodOptional<z.ZodString>;
396
+ }, "strip", z.ZodTypeAny, {
397
+ command: string;
398
+ event: string;
399
+ cwd?: string | undefined;
400
+ matcher?: string | undefined;
401
+ timeout_ms?: number | undefined;
402
+ }, {
403
+ command: string;
404
+ event: string;
405
+ cwd?: string | undefined;
406
+ matcher?: string | undefined;
407
+ timeout_ms?: number | undefined;
408
+ }>, "many">>;
409
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
410
+ agent: z.ZodDefault<z.ZodObject<{
411
+ preset: z.ZodDefault<z.ZodString>;
412
+ enabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
413
+ disabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
414
+ customSystemPrompt: z.ZodOptional<z.ZodString>;
415
+ appendSystemPrompt: z.ZodOptional<z.ZodString>;
416
+ }, "strip", z.ZodTypeAny, {
417
+ preset: string;
418
+ enabledBuiltinTools: string[];
419
+ disabledBuiltinTools: string[];
420
+ customSystemPrompt?: string | undefined;
421
+ appendSystemPrompt?: string | undefined;
422
+ }, {
423
+ preset?: string | undefined;
424
+ enabledBuiltinTools?: string[] | undefined;
425
+ disabledBuiltinTools?: string[] | undefined;
426
+ customSystemPrompt?: string | undefined;
427
+ appendSystemPrompt?: string | undefined;
428
+ }>>;
429
+ /**
430
+ * Primary source of truth for the active model is settings.activeKey
431
+ * (points at models[].key). settings.model is a derived mirror of that
432
+ * entry kept in sync for legacy boot paths (cli/main.ts, repl.ts, etc.)
433
+ * which read provider/name/apiKey/baseUrl directly. Writers must update
434
+ * both — appendOnboardingResult does this in one shot.
435
+ */
436
+ activeKey: z.ZodOptional<z.ZodString>;
437
+ /**
438
+ * Toggle background auto-update. When true (default), code-shell checks
439
+ * npm for newer versions and — if the npm global prefix is writable —
440
+ * installs the update in the background on process exit so the next
441
+ * launch picks it up.
442
+ * Can also be disabled via env var `DISABLE_AUTOUPDATER=1`.
443
+ */
444
+ autoUpdates: z.ZodDefault<z.ZodBoolean>;
445
+ model: z.ZodDefault<z.ZodObject<{
446
+ provider: z.ZodDefault<z.ZodString>;
447
+ name: z.ZodDefault<z.ZodString>;
448
+ apiKey: z.ZodOptional<z.ZodString>;
449
+ baseUrl: z.ZodDefault<z.ZodString>;
450
+ temperature: z.ZodDefault<z.ZodNumber>;
451
+ maxTokens: z.ZodDefault<z.ZodNumber>;
452
+ }, "strip", z.ZodTypeAny, {
453
+ provider: string;
454
+ name: string;
455
+ temperature: number;
456
+ baseUrl: string;
457
+ maxTokens: number;
458
+ apiKey?: string | undefined;
459
+ }, {
460
+ provider?: string | undefined;
461
+ name?: string | undefined;
462
+ temperature?: number | undefined;
463
+ baseUrl?: string | undefined;
464
+ apiKey?: string | undefined;
465
+ maxTokens?: number | undefined;
466
+ }>>;
467
+ providers: z.ZodDefault<z.ZodArray<z.ZodObject<{
468
+ key: z.ZodString;
469
+ label: z.ZodOptional<z.ZodString>;
470
+ kind: z.ZodEnum<["openai", "anthropic", "deepseek", "zai", "xai", "mistral", "groq", "google", "openrouter", "ollama", "custom"]>;
471
+ baseUrl: z.ZodString;
472
+ apiKey: z.ZodOptional<z.ZodString>;
473
+ protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
474
+ modelsPath: z.ZodOptional<z.ZodString>;
475
+ /**
476
+ * DeepSeek V4 thinking-mode default for this provider. "enabled"
477
+ * matches endpoint default; "disabled" makes V4 calls run in
478
+ * non-thinking mode (faster, cheaper). Ignored by every provider
479
+ * other than DeepSeek V4. Per-call overrides still win.
480
+ */
481
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
482
+ }, "strip", z.ZodTypeAny, {
483
+ key: string;
484
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
485
+ baseUrl: string;
486
+ thinking?: "enabled" | "disabled" | undefined;
487
+ label?: string | undefined;
488
+ apiKey?: string | undefined;
489
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
490
+ modelsPath?: string | undefined;
491
+ }, {
492
+ key: string;
493
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
494
+ baseUrl: string;
495
+ thinking?: "enabled" | "disabled" | undefined;
496
+ label?: string | undefined;
497
+ apiKey?: string | undefined;
498
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
499
+ modelsPath?: string | undefined;
500
+ }>, "many">>;
501
+ models: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
502
+ key: z.ZodString;
503
+ label: z.ZodOptional<z.ZodString>;
504
+ providerKey: z.ZodOptional<z.ZodString>;
505
+ model: z.ZodString;
506
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
507
+ maxContextTokens: z.ZodOptional<z.ZodNumber>;
508
+ /**
509
+ * Which LLM client to use ("openai" or "anthropic"). New name —
510
+ * the legacy field is `provider`, which we still accept and
511
+ * fold into `protocol` below so old configs keep working.
512
+ * NOT the brand/vendor — that's providerKey above.
513
+ */
514
+ protocol: z.ZodOptional<z.ZodString>;
515
+ provider: z.ZodOptional<z.ZodString>;
516
+ baseUrl: z.ZodOptional<z.ZodString>;
517
+ apiKey: z.ZodOptional<z.ZodString>;
518
+ /**
519
+ * Per-model thinking override. Wins over the provider-level
520
+ * setting (settings.providers[].thinking). Use this when
521
+ * different models under the same provider need different
522
+ * defaults — e.g. DeepSeek V4 Pro off (faster) but V4 Flash on.
523
+ */
524
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
525
+ }, "strip", z.ZodTypeAny, {
526
+ model: string;
527
+ key: string;
528
+ provider?: string | undefined;
529
+ thinking?: "enabled" | "disabled" | undefined;
530
+ label?: string | undefined;
531
+ baseUrl?: string | undefined;
532
+ apiKey?: string | undefined;
533
+ protocol?: string | undefined;
534
+ providerKey?: string | undefined;
535
+ maxOutputTokens?: number | undefined;
536
+ maxContextTokens?: number | undefined;
537
+ }, {
538
+ model: string;
539
+ key: string;
540
+ provider?: string | undefined;
541
+ thinking?: "enabled" | "disabled" | undefined;
542
+ label?: string | undefined;
543
+ baseUrl?: string | undefined;
544
+ apiKey?: string | undefined;
545
+ protocol?: string | undefined;
546
+ providerKey?: string | undefined;
547
+ maxOutputTokens?: number | undefined;
548
+ maxContextTokens?: number | undefined;
549
+ }>, {
550
+ protocol: string | undefined;
551
+ provider: string | undefined;
552
+ model: string;
553
+ key: string;
554
+ thinking?: "enabled" | "disabled" | undefined;
555
+ label?: string | undefined;
556
+ baseUrl?: string | undefined;
557
+ apiKey?: string | undefined;
558
+ providerKey?: string | undefined;
559
+ maxOutputTokens?: number | undefined;
560
+ maxContextTokens?: number | undefined;
561
+ }, {
562
+ model: string;
563
+ key: string;
564
+ provider?: string | undefined;
565
+ thinking?: "enabled" | "disabled" | undefined;
566
+ label?: string | undefined;
567
+ baseUrl?: string | undefined;
568
+ apiKey?: string | undefined;
569
+ protocol?: string | undefined;
570
+ providerKey?: string | undefined;
571
+ maxOutputTokens?: number | undefined;
572
+ maxContextTokens?: number | undefined;
573
+ }>, "many">>;
574
+ permissions: z.ZodDefault<z.ZodObject<{
575
+ defaultMode: z.ZodDefault<z.ZodEnum<["default", "acceptEdits", "dontAsk", "bypassPermissions", "auto", "plan"]>>;
576
+ rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
577
+ tool: z.ZodString;
578
+ argsPattern: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
579
+ decision: z.ZodEnum<["allow", "deny", "ask"]>;
580
+ reason: z.ZodOptional<z.ZodString>;
581
+ }, "strip", z.ZodTypeAny, {
582
+ tool: string;
583
+ decision: "allow" | "deny" | "ask";
584
+ reason?: string | undefined;
585
+ argsPattern?: Record<string, string> | undefined;
586
+ }, {
587
+ tool: string;
588
+ decision: "allow" | "deny" | "ask";
589
+ reason?: string | undefined;
590
+ argsPattern?: Record<string, string> | undefined;
591
+ }>, "many">>;
592
+ }, "strip", z.ZodTypeAny, {
593
+ defaultMode: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan";
594
+ rules: {
595
+ tool: string;
596
+ decision: "allow" | "deny" | "ask";
597
+ reason?: string | undefined;
598
+ argsPattern?: Record<string, string> | undefined;
599
+ }[];
600
+ }, {
601
+ defaultMode?: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan" | undefined;
602
+ rules?: {
603
+ tool: string;
604
+ decision: "allow" | "deny" | "ask";
605
+ reason?: string | undefined;
606
+ argsPattern?: Record<string, string> | undefined;
607
+ }[] | undefined;
608
+ }>>;
609
+ context: z.ZodDefault<z.ZodObject<{
610
+ maxTokens: z.ZodDefault<z.ZodNumber>;
611
+ compactAtRatio: z.ZodDefault<z.ZodNumber>;
612
+ summarizeAtRatio: z.ZodDefault<z.ZodNumber>;
613
+ }, "strip", z.ZodTypeAny, {
614
+ maxTokens: number;
615
+ compactAtRatio: number;
616
+ summarizeAtRatio: number;
617
+ }, {
618
+ maxTokens?: number | undefined;
619
+ compactAtRatio?: number | undefined;
620
+ summarizeAtRatio?: number | undefined;
621
+ }>>;
622
+ session: z.ZodDefault<z.ZodObject<{
623
+ storageDir: z.ZodOptional<z.ZodString>;
624
+ maxHistory: z.ZodDefault<z.ZodNumber>;
625
+ }, "strip", z.ZodTypeAny, {
626
+ maxHistory: number;
627
+ storageDir?: string | undefined;
628
+ }, {
629
+ storageDir?: string | undefined;
630
+ maxHistory?: number | undefined;
631
+ }>>;
632
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
633
+ name: z.ZodString;
634
+ command: z.ZodOptional<z.ZodString>;
635
+ args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
636
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
637
+ url: z.ZodOptional<z.ZodString>;
638
+ transport: z.ZodOptional<z.ZodEnum<["stdio", "sse", "streamable-http", "inprocess"]>>;
639
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
640
+ }, "strip", z.ZodTypeAny, {
641
+ name: string;
642
+ url?: string | undefined;
643
+ args?: string[] | undefined;
644
+ env?: Record<string, string> | undefined;
645
+ command?: string | undefined;
646
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
647
+ headers?: Record<string, string> | undefined;
648
+ }, {
649
+ name: string;
650
+ url?: string | undefined;
651
+ args?: string[] | undefined;
652
+ env?: Record<string, string> | undefined;
653
+ command?: string | undefined;
654
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
655
+ headers?: Record<string, string> | undefined;
656
+ }>>>;
657
+ /**
658
+ * Skill names hidden from the LLM. Names include the full
659
+ * "<plugin>:<skill>" prefix for plugin skills. Filtered at the
660
+ * scanner so PromptComposer's skills listing and the skill builtin
661
+ * tool both see the filtered set — see scanSkills(opts).
662
+ */
663
+ disabledSkills: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
664
+ instructions: z.ZodDefault<z.ZodObject<{
665
+ fileName: z.ZodDefault<z.ZodString>;
666
+ scanDirs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
667
+ compatFileNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
668
+ ignoreGitBoundary: z.ZodDefault<z.ZodBoolean>;
669
+ }, "strip", z.ZodTypeAny, {
670
+ fileName: string;
671
+ scanDirs: string[];
672
+ compatFileNames: string[];
673
+ ignoreGitBoundary: boolean;
674
+ }, {
675
+ fileName?: string | undefined;
676
+ scanDirs?: string[] | undefined;
677
+ compatFileNames?: string[] | undefined;
678
+ ignoreGitBoundary?: boolean | undefined;
679
+ }>>;
680
+ arena: z.ZodDefault<z.ZodObject<{
681
+ participants: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
682
+ name: z.ZodString;
683
+ model: z.ZodString;
684
+ provider: z.ZodOptional<z.ZodString>;
685
+ apiKey: z.ZodOptional<z.ZodString>;
686
+ baseUrl: z.ZodOptional<z.ZodString>;
687
+ }, "strip", z.ZodTypeAny, {
688
+ model: string;
689
+ name: string;
690
+ provider?: string | undefined;
691
+ baseUrl?: string | undefined;
692
+ apiKey?: string | undefined;
693
+ }, {
694
+ model: string;
695
+ name: string;
696
+ provider?: string | undefined;
697
+ baseUrl?: string | undefined;
698
+ apiKey?: string | undefined;
699
+ }>]>, "many">>;
700
+ }, "strip", z.ZodTypeAny, {
701
+ participants: (string | {
702
+ model: string;
703
+ name: string;
704
+ provider?: string | undefined;
705
+ baseUrl?: string | undefined;
706
+ apiKey?: string | undefined;
707
+ })[];
708
+ }, {
709
+ participants?: (string | {
710
+ model: string;
711
+ name: string;
712
+ provider?: string | undefined;
713
+ baseUrl?: string | undefined;
714
+ apiKey?: string | undefined;
715
+ })[] | undefined;
716
+ }>>;
717
+ search: z.ZodDefault<z.ZodObject<{
718
+ provider: z.ZodDefault<z.ZodEnum<["serper", "tavily", "searxng"]>>;
719
+ apiKey: z.ZodOptional<z.ZodString>;
720
+ baseUrl: z.ZodOptional<z.ZodString>;
721
+ /**
722
+ * Per-provider credentials bag. Lets the desktop UI keep
723
+ * Serper/Tavily/SearXNG configured simultaneously and flip the
724
+ * default without losing the others. `provider/apiKey/baseUrl`
725
+ * remain authoritative for the *active* provider so legacy
726
+ * readers keep working.
727
+ */
728
+ providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["serper", "tavily", "searxng"]>, z.ZodObject<{
729
+ apiKey: z.ZodOptional<z.ZodString>;
730
+ baseUrl: z.ZodOptional<z.ZodString>;
731
+ }, "strip", z.ZodTypeAny, {
732
+ baseUrl?: string | undefined;
733
+ apiKey?: string | undefined;
734
+ }, {
735
+ baseUrl?: string | undefined;
736
+ apiKey?: string | undefined;
737
+ }>>>;
738
+ }, "strip", z.ZodTypeAny, {
739
+ provider: "serper" | "tavily" | "searxng";
740
+ baseUrl?: string | undefined;
741
+ apiKey?: string | undefined;
742
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
743
+ baseUrl?: string | undefined;
744
+ apiKey?: string | undefined;
745
+ }>> | undefined;
746
+ }, {
747
+ provider?: "serper" | "tavily" | "searxng" | undefined;
748
+ baseUrl?: string | undefined;
749
+ apiKey?: string | undefined;
750
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
751
+ baseUrl?: string | undefined;
752
+ apiKey?: string | undefined;
753
+ }>> | undefined;
754
+ }>>;
755
+ output: z.ZodDefault<z.ZodObject<{
756
+ format: z.ZodDefault<z.ZodEnum<["text", "json", "jsonl", "stream-json"]>>;
757
+ }, "strip", z.ZodTypeAny, {
758
+ format: "text" | "json" | "jsonl" | "stream-json";
759
+ }, {
760
+ format?: "text" | "json" | "jsonl" | "stream-json" | undefined;
761
+ }>>;
762
+ /**
763
+ * OS-level sandbox for shell-tool execution. "auto" picks per platform:
764
+ * Seatbelt on macOS, bubblewrap on Linux when installed, otherwise off.
765
+ * Defaults are applied per Engine run depending on headless vs REPL —
766
+ * see Engine.run() and run.ts.
767
+ */
768
+ sandbox: z.ZodOptional<z.ZodObject<{
769
+ mode: z.ZodOptional<z.ZodEnum<["off", "auto", "seatbelt", "bwrap"]>>;
770
+ writableRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
771
+ deniedReads: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
772
+ network: z.ZodOptional<z.ZodEnum<["allow", "deny"]>>;
773
+ }, "strip", z.ZodTypeAny, {
774
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
775
+ writableRoots?: string[] | undefined;
776
+ deniedReads?: string[] | undefined;
777
+ network?: "allow" | "deny" | undefined;
778
+ }, {
779
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
780
+ writableRoots?: string[] | undefined;
781
+ deniedReads?: string[] | undefined;
782
+ network?: "allow" | "deny" | undefined;
783
+ }>>;
784
+ /**
785
+ * Shell-hook configuration. Each entry binds a HookEventName to a
786
+ * shell command; the command receives ctx JSON on stdin and returns
787
+ * a HookResult JSON on stdout (or exit 2 = deny with stderr as
788
+ * reason). See src/hooks/shell-runner.ts for the wire protocol.
789
+ *
790
+ * The event field is loose-typed here (z.string()) because adding
791
+ * new lifecycle events shouldn't force a schema bump; the runner
792
+ * silently ignores entries whose event isn't registered.
793
+ */
794
+ hooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
795
+ event: z.ZodString;
796
+ command: z.ZodString;
797
+ matcher: z.ZodOptional<z.ZodString>;
798
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
799
+ cwd: z.ZodOptional<z.ZodString>;
800
+ }, "strip", z.ZodTypeAny, {
801
+ command: string;
802
+ event: string;
803
+ cwd?: string | undefined;
804
+ matcher?: string | undefined;
805
+ timeout_ms?: number | undefined;
806
+ }, {
807
+ command: string;
808
+ event: string;
809
+ cwd?: string | undefined;
810
+ matcher?: string | undefined;
811
+ timeout_ms?: number | undefined;
812
+ }>, "many">>;
813
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
814
+ agent: z.ZodDefault<z.ZodObject<{
815
+ preset: z.ZodDefault<z.ZodString>;
816
+ enabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
817
+ disabledBuiltinTools: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
818
+ customSystemPrompt: z.ZodOptional<z.ZodString>;
819
+ appendSystemPrompt: z.ZodOptional<z.ZodString>;
820
+ }, "strip", z.ZodTypeAny, {
821
+ preset: string;
822
+ enabledBuiltinTools: string[];
823
+ disabledBuiltinTools: string[];
824
+ customSystemPrompt?: string | undefined;
825
+ appendSystemPrompt?: string | undefined;
826
+ }, {
827
+ preset?: string | undefined;
828
+ enabledBuiltinTools?: string[] | undefined;
829
+ disabledBuiltinTools?: string[] | undefined;
830
+ customSystemPrompt?: string | undefined;
831
+ appendSystemPrompt?: string | undefined;
832
+ }>>;
833
+ /**
834
+ * Primary source of truth for the active model is settings.activeKey
835
+ * (points at models[].key). settings.model is a derived mirror of that
836
+ * entry kept in sync for legacy boot paths (cli/main.ts, repl.ts, etc.)
837
+ * which read provider/name/apiKey/baseUrl directly. Writers must update
838
+ * both — appendOnboardingResult does this in one shot.
839
+ */
840
+ activeKey: z.ZodOptional<z.ZodString>;
841
+ /**
842
+ * Toggle background auto-update. When true (default), code-shell checks
843
+ * npm for newer versions and — if the npm global prefix is writable —
844
+ * installs the update in the background on process exit so the next
845
+ * launch picks it up.
846
+ * Can also be disabled via env var `DISABLE_AUTOUPDATER=1`.
847
+ */
848
+ autoUpdates: z.ZodDefault<z.ZodBoolean>;
849
+ model: z.ZodDefault<z.ZodObject<{
850
+ provider: z.ZodDefault<z.ZodString>;
851
+ name: z.ZodDefault<z.ZodString>;
852
+ apiKey: z.ZodOptional<z.ZodString>;
853
+ baseUrl: z.ZodDefault<z.ZodString>;
854
+ temperature: z.ZodDefault<z.ZodNumber>;
855
+ maxTokens: z.ZodDefault<z.ZodNumber>;
856
+ }, "strip", z.ZodTypeAny, {
857
+ provider: string;
858
+ name: string;
859
+ temperature: number;
860
+ baseUrl: string;
861
+ maxTokens: number;
862
+ apiKey?: string | undefined;
863
+ }, {
864
+ provider?: string | undefined;
865
+ name?: string | undefined;
866
+ temperature?: number | undefined;
867
+ baseUrl?: string | undefined;
868
+ apiKey?: string | undefined;
869
+ maxTokens?: number | undefined;
870
+ }>>;
871
+ providers: z.ZodDefault<z.ZodArray<z.ZodObject<{
872
+ key: z.ZodString;
873
+ label: z.ZodOptional<z.ZodString>;
874
+ kind: z.ZodEnum<["openai", "anthropic", "deepseek", "zai", "xai", "mistral", "groq", "google", "openrouter", "ollama", "custom"]>;
875
+ baseUrl: z.ZodString;
876
+ apiKey: z.ZodOptional<z.ZodString>;
877
+ protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
878
+ modelsPath: z.ZodOptional<z.ZodString>;
879
+ /**
880
+ * DeepSeek V4 thinking-mode default for this provider. "enabled"
881
+ * matches endpoint default; "disabled" makes V4 calls run in
882
+ * non-thinking mode (faster, cheaper). Ignored by every provider
883
+ * other than DeepSeek V4. Per-call overrides still win.
884
+ */
885
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
886
+ }, "strip", z.ZodTypeAny, {
887
+ key: string;
888
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
889
+ baseUrl: string;
890
+ thinking?: "enabled" | "disabled" | undefined;
891
+ label?: string | undefined;
892
+ apiKey?: string | undefined;
893
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
894
+ modelsPath?: string | undefined;
895
+ }, {
896
+ key: string;
897
+ kind: "anthropic" | "openai" | "deepseek" | "zai" | "xai" | "mistral" | "groq" | "google" | "openrouter" | "ollama" | "custom";
898
+ baseUrl: string;
899
+ thinking?: "enabled" | "disabled" | undefined;
900
+ label?: string | undefined;
901
+ apiKey?: string | undefined;
902
+ protocol?: "openai-compat" | "anthropic-style" | undefined;
903
+ modelsPath?: string | undefined;
904
+ }>, "many">>;
905
+ models: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
906
+ key: z.ZodString;
907
+ label: z.ZodOptional<z.ZodString>;
908
+ providerKey: z.ZodOptional<z.ZodString>;
909
+ model: z.ZodString;
910
+ maxOutputTokens: z.ZodOptional<z.ZodNumber>;
911
+ maxContextTokens: z.ZodOptional<z.ZodNumber>;
912
+ /**
913
+ * Which LLM client to use ("openai" or "anthropic"). New name —
914
+ * the legacy field is `provider`, which we still accept and
915
+ * fold into `protocol` below so old configs keep working.
916
+ * NOT the brand/vendor — that's providerKey above.
917
+ */
918
+ protocol: z.ZodOptional<z.ZodString>;
919
+ provider: z.ZodOptional<z.ZodString>;
920
+ baseUrl: z.ZodOptional<z.ZodString>;
921
+ apiKey: z.ZodOptional<z.ZodString>;
922
+ /**
923
+ * Per-model thinking override. Wins over the provider-level
924
+ * setting (settings.providers[].thinking). Use this when
925
+ * different models under the same provider need different
926
+ * defaults — e.g. DeepSeek V4 Pro off (faster) but V4 Flash on.
927
+ */
928
+ thinking: z.ZodOptional<z.ZodEnum<["enabled", "disabled"]>>;
929
+ }, "strip", z.ZodTypeAny, {
930
+ model: string;
931
+ key: string;
932
+ provider?: string | undefined;
933
+ thinking?: "enabled" | "disabled" | undefined;
934
+ label?: string | undefined;
935
+ baseUrl?: string | undefined;
936
+ apiKey?: string | undefined;
937
+ protocol?: string | undefined;
938
+ providerKey?: string | undefined;
939
+ maxOutputTokens?: number | undefined;
940
+ maxContextTokens?: number | undefined;
941
+ }, {
942
+ model: string;
943
+ key: string;
944
+ provider?: string | undefined;
945
+ thinking?: "enabled" | "disabled" | undefined;
946
+ label?: string | undefined;
947
+ baseUrl?: string | undefined;
948
+ apiKey?: string | undefined;
949
+ protocol?: string | undefined;
950
+ providerKey?: string | undefined;
951
+ maxOutputTokens?: number | undefined;
952
+ maxContextTokens?: number | undefined;
953
+ }>, {
954
+ protocol: string | undefined;
955
+ provider: string | undefined;
956
+ model: string;
957
+ key: string;
958
+ thinking?: "enabled" | "disabled" | undefined;
959
+ label?: string | undefined;
960
+ baseUrl?: string | undefined;
961
+ apiKey?: string | undefined;
962
+ providerKey?: string | undefined;
963
+ maxOutputTokens?: number | undefined;
964
+ maxContextTokens?: number | undefined;
965
+ }, {
966
+ model: string;
967
+ key: string;
968
+ provider?: string | undefined;
969
+ thinking?: "enabled" | "disabled" | undefined;
970
+ label?: string | undefined;
971
+ baseUrl?: string | undefined;
972
+ apiKey?: string | undefined;
973
+ protocol?: string | undefined;
974
+ providerKey?: string | undefined;
975
+ maxOutputTokens?: number | undefined;
976
+ maxContextTokens?: number | undefined;
977
+ }>, "many">>;
978
+ permissions: z.ZodDefault<z.ZodObject<{
979
+ defaultMode: z.ZodDefault<z.ZodEnum<["default", "acceptEdits", "dontAsk", "bypassPermissions", "auto", "plan"]>>;
980
+ rules: z.ZodDefault<z.ZodArray<z.ZodObject<{
981
+ tool: z.ZodString;
982
+ argsPattern: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
983
+ decision: z.ZodEnum<["allow", "deny", "ask"]>;
984
+ reason: z.ZodOptional<z.ZodString>;
985
+ }, "strip", z.ZodTypeAny, {
986
+ tool: string;
987
+ decision: "allow" | "deny" | "ask";
988
+ reason?: string | undefined;
989
+ argsPattern?: Record<string, string> | undefined;
990
+ }, {
991
+ tool: string;
992
+ decision: "allow" | "deny" | "ask";
993
+ reason?: string | undefined;
994
+ argsPattern?: Record<string, string> | undefined;
995
+ }>, "many">>;
996
+ }, "strip", z.ZodTypeAny, {
997
+ defaultMode: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan";
998
+ rules: {
999
+ tool: string;
1000
+ decision: "allow" | "deny" | "ask";
1001
+ reason?: string | undefined;
1002
+ argsPattern?: Record<string, string> | undefined;
1003
+ }[];
1004
+ }, {
1005
+ defaultMode?: "default" | "acceptEdits" | "dontAsk" | "bypassPermissions" | "auto" | "plan" | undefined;
1006
+ rules?: {
1007
+ tool: string;
1008
+ decision: "allow" | "deny" | "ask";
1009
+ reason?: string | undefined;
1010
+ argsPattern?: Record<string, string> | undefined;
1011
+ }[] | undefined;
1012
+ }>>;
1013
+ context: z.ZodDefault<z.ZodObject<{
1014
+ maxTokens: z.ZodDefault<z.ZodNumber>;
1015
+ compactAtRatio: z.ZodDefault<z.ZodNumber>;
1016
+ summarizeAtRatio: z.ZodDefault<z.ZodNumber>;
1017
+ }, "strip", z.ZodTypeAny, {
1018
+ maxTokens: number;
1019
+ compactAtRatio: number;
1020
+ summarizeAtRatio: number;
1021
+ }, {
1022
+ maxTokens?: number | undefined;
1023
+ compactAtRatio?: number | undefined;
1024
+ summarizeAtRatio?: number | undefined;
1025
+ }>>;
1026
+ session: z.ZodDefault<z.ZodObject<{
1027
+ storageDir: z.ZodOptional<z.ZodString>;
1028
+ maxHistory: z.ZodDefault<z.ZodNumber>;
1029
+ }, "strip", z.ZodTypeAny, {
1030
+ maxHistory: number;
1031
+ storageDir?: string | undefined;
1032
+ }, {
1033
+ storageDir?: string | undefined;
1034
+ maxHistory?: number | undefined;
1035
+ }>>;
1036
+ mcpServers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
1037
+ name: z.ZodString;
1038
+ command: z.ZodOptional<z.ZodString>;
1039
+ args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1040
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1041
+ url: z.ZodOptional<z.ZodString>;
1042
+ transport: z.ZodOptional<z.ZodEnum<["stdio", "sse", "streamable-http", "inprocess"]>>;
1043
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1044
+ }, "strip", z.ZodTypeAny, {
1045
+ name: string;
1046
+ url?: string | undefined;
1047
+ args?: string[] | undefined;
1048
+ env?: Record<string, string> | undefined;
1049
+ command?: string | undefined;
1050
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
1051
+ headers?: Record<string, string> | undefined;
1052
+ }, {
1053
+ name: string;
1054
+ url?: string | undefined;
1055
+ args?: string[] | undefined;
1056
+ env?: Record<string, string> | undefined;
1057
+ command?: string | undefined;
1058
+ transport?: "stdio" | "sse" | "streamable-http" | "inprocess" | undefined;
1059
+ headers?: Record<string, string> | undefined;
1060
+ }>>>;
1061
+ /**
1062
+ * Skill names hidden from the LLM. Names include the full
1063
+ * "<plugin>:<skill>" prefix for plugin skills. Filtered at the
1064
+ * scanner so PromptComposer's skills listing and the skill builtin
1065
+ * tool both see the filtered set — see scanSkills(opts).
1066
+ */
1067
+ disabledSkills: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1068
+ instructions: z.ZodDefault<z.ZodObject<{
1069
+ fileName: z.ZodDefault<z.ZodString>;
1070
+ scanDirs: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1071
+ compatFileNames: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
1072
+ ignoreGitBoundary: z.ZodDefault<z.ZodBoolean>;
1073
+ }, "strip", z.ZodTypeAny, {
1074
+ fileName: string;
1075
+ scanDirs: string[];
1076
+ compatFileNames: string[];
1077
+ ignoreGitBoundary: boolean;
1078
+ }, {
1079
+ fileName?: string | undefined;
1080
+ scanDirs?: string[] | undefined;
1081
+ compatFileNames?: string[] | undefined;
1082
+ ignoreGitBoundary?: boolean | undefined;
1083
+ }>>;
1084
+ arena: z.ZodDefault<z.ZodObject<{
1085
+ participants: z.ZodDefault<z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodObject<{
1086
+ name: z.ZodString;
1087
+ model: z.ZodString;
1088
+ provider: z.ZodOptional<z.ZodString>;
1089
+ apiKey: z.ZodOptional<z.ZodString>;
1090
+ baseUrl: z.ZodOptional<z.ZodString>;
1091
+ }, "strip", z.ZodTypeAny, {
1092
+ model: string;
1093
+ name: string;
1094
+ provider?: string | undefined;
1095
+ baseUrl?: string | undefined;
1096
+ apiKey?: string | undefined;
1097
+ }, {
1098
+ model: string;
1099
+ name: string;
1100
+ provider?: string | undefined;
1101
+ baseUrl?: string | undefined;
1102
+ apiKey?: string | undefined;
1103
+ }>]>, "many">>;
1104
+ }, "strip", z.ZodTypeAny, {
1105
+ participants: (string | {
1106
+ model: string;
1107
+ name: string;
1108
+ provider?: string | undefined;
1109
+ baseUrl?: string | undefined;
1110
+ apiKey?: string | undefined;
1111
+ })[];
1112
+ }, {
1113
+ participants?: (string | {
1114
+ model: string;
1115
+ name: string;
1116
+ provider?: string | undefined;
1117
+ baseUrl?: string | undefined;
1118
+ apiKey?: string | undefined;
1119
+ })[] | undefined;
1120
+ }>>;
1121
+ search: z.ZodDefault<z.ZodObject<{
1122
+ provider: z.ZodDefault<z.ZodEnum<["serper", "tavily", "searxng"]>>;
1123
+ apiKey: z.ZodOptional<z.ZodString>;
1124
+ baseUrl: z.ZodOptional<z.ZodString>;
1125
+ /**
1126
+ * Per-provider credentials bag. Lets the desktop UI keep
1127
+ * Serper/Tavily/SearXNG configured simultaneously and flip the
1128
+ * default without losing the others. `provider/apiKey/baseUrl`
1129
+ * remain authoritative for the *active* provider so legacy
1130
+ * readers keep working.
1131
+ */
1132
+ providers: z.ZodOptional<z.ZodRecord<z.ZodEnum<["serper", "tavily", "searxng"]>, z.ZodObject<{
1133
+ apiKey: z.ZodOptional<z.ZodString>;
1134
+ baseUrl: z.ZodOptional<z.ZodString>;
1135
+ }, "strip", z.ZodTypeAny, {
1136
+ baseUrl?: string | undefined;
1137
+ apiKey?: string | undefined;
1138
+ }, {
1139
+ baseUrl?: string | undefined;
1140
+ apiKey?: string | undefined;
1141
+ }>>>;
1142
+ }, "strip", z.ZodTypeAny, {
1143
+ provider: "serper" | "tavily" | "searxng";
1144
+ baseUrl?: string | undefined;
1145
+ apiKey?: string | undefined;
1146
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
1147
+ baseUrl?: string | undefined;
1148
+ apiKey?: string | undefined;
1149
+ }>> | undefined;
1150
+ }, {
1151
+ provider?: "serper" | "tavily" | "searxng" | undefined;
1152
+ baseUrl?: string | undefined;
1153
+ apiKey?: string | undefined;
1154
+ providers?: Partial<Record<"serper" | "tavily" | "searxng", {
1155
+ baseUrl?: string | undefined;
1156
+ apiKey?: string | undefined;
1157
+ }>> | undefined;
1158
+ }>>;
1159
+ output: z.ZodDefault<z.ZodObject<{
1160
+ format: z.ZodDefault<z.ZodEnum<["text", "json", "jsonl", "stream-json"]>>;
1161
+ }, "strip", z.ZodTypeAny, {
1162
+ format: "text" | "json" | "jsonl" | "stream-json";
1163
+ }, {
1164
+ format?: "text" | "json" | "jsonl" | "stream-json" | undefined;
1165
+ }>>;
1166
+ /**
1167
+ * OS-level sandbox for shell-tool execution. "auto" picks per platform:
1168
+ * Seatbelt on macOS, bubblewrap on Linux when installed, otherwise off.
1169
+ * Defaults are applied per Engine run depending on headless vs REPL —
1170
+ * see Engine.run() and run.ts.
1171
+ */
1172
+ sandbox: z.ZodOptional<z.ZodObject<{
1173
+ mode: z.ZodOptional<z.ZodEnum<["off", "auto", "seatbelt", "bwrap"]>>;
1174
+ writableRoots: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1175
+ deniedReads: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1176
+ network: z.ZodOptional<z.ZodEnum<["allow", "deny"]>>;
1177
+ }, "strip", z.ZodTypeAny, {
1178
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
1179
+ writableRoots?: string[] | undefined;
1180
+ deniedReads?: string[] | undefined;
1181
+ network?: "allow" | "deny" | undefined;
1182
+ }, {
1183
+ mode?: "auto" | "seatbelt" | "bwrap" | "off" | undefined;
1184
+ writableRoots?: string[] | undefined;
1185
+ deniedReads?: string[] | undefined;
1186
+ network?: "allow" | "deny" | undefined;
1187
+ }>>;
1188
+ /**
1189
+ * Shell-hook configuration. Each entry binds a HookEventName to a
1190
+ * shell command; the command receives ctx JSON on stdin and returns
1191
+ * a HookResult JSON on stdout (or exit 2 = deny with stderr as
1192
+ * reason). See src/hooks/shell-runner.ts for the wire protocol.
1193
+ *
1194
+ * The event field is loose-typed here (z.string()) because adding
1195
+ * new lifecycle events shouldn't force a schema bump; the runner
1196
+ * silently ignores entries whose event isn't registered.
1197
+ */
1198
+ hooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1199
+ event: z.ZodString;
1200
+ command: z.ZodString;
1201
+ matcher: z.ZodOptional<z.ZodString>;
1202
+ timeout_ms: z.ZodOptional<z.ZodNumber>;
1203
+ cwd: z.ZodOptional<z.ZodString>;
1204
+ }, "strip", z.ZodTypeAny, {
1205
+ command: string;
1206
+ event: string;
1207
+ cwd?: string | undefined;
1208
+ matcher?: string | undefined;
1209
+ timeout_ms?: number | undefined;
1210
+ }, {
1211
+ command: string;
1212
+ event: string;
1213
+ cwd?: string | undefined;
1214
+ matcher?: string | undefined;
1215
+ timeout_ms?: number | undefined;
1216
+ }>, "many">>;
1217
+ }, z.ZodTypeAny, "passthrough">>;
1218
+ export type ValidatedSettings = z.infer<typeof SettingsSchema>;
1219
+ export declare function validateSettings(raw: unknown): ValidatedSettings;