@phuetz/code-buddy 1.0.0 → 1.2.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 (312) hide show
  1. package/README.md +160 -164
  2. package/dist/agent/autonomous/agentic-coding-contract.d.ts +6 -6
  3. package/dist/agent/codebuddy-agent.d.ts +1 -1
  4. package/dist/agent/codebuddy-agent.js +101 -13
  5. package/dist/agent/execution/agent-executor.js +122 -12
  6. package/dist/agent/execution/tool-dependency-graph.js +7 -0
  7. package/dist/agent/execution/tool-hooks.d.ts +6 -0
  8. package/dist/agent/execution/tool-hooks.js +13 -5
  9. package/dist/agent/execution/tool-selection-strategy.d.ts +11 -2
  10. package/dist/agent/execution/tool-selection-strategy.js +67 -10
  11. package/dist/agent/extended-thinking.d.ts +8 -0
  12. package/dist/agent/extended-thinking.js +27 -0
  13. package/dist/agent/hermes-browser-backends.js +151 -11
  14. package/dist/agent/hermes-claw-migrate.d.ts +59 -0
  15. package/dist/agent/hermes-claw-migrate.js +427 -26
  16. package/dist/agent/hermes-parity-manifest.js +78 -71
  17. package/dist/agent/hermes-runtime-lifecycle.d.ts +67 -0
  18. package/dist/agent/hermes-runtime-lifecycle.js +468 -0
  19. package/dist/agent/lesson-auto-proposer.js +10 -0
  20. package/dist/agent/middleware/index.d.ts +1 -0
  21. package/dist/agent/middleware/index.js +1 -0
  22. package/dist/agent/middleware/session-duration.d.ts +36 -0
  23. package/dist/agent/middleware/session-duration.js +78 -0
  24. package/dist/agent/middleware/visual-validation-middleware.d.ts +17 -0
  25. package/dist/agent/middleware/visual-validation-middleware.js +67 -0
  26. package/dist/agent/model-benchmark.d.ts +77 -0
  27. package/dist/agent/model-benchmark.js +309 -0
  28. package/dist/agent/model-tier.d.ts +14 -0
  29. package/dist/agent/model-tier.js +71 -0
  30. package/dist/agent/multi-agent/agents/orchestrator-agent.js +17 -6
  31. package/dist/agent/multi-agent/multi-agent-system.js +3 -1
  32. package/dist/agent/multi-agent/session-fleet-bridge.d.ts +2 -0
  33. package/dist/agent/multi-agent/session-fleet-bridge.js +9 -1
  34. package/dist/agent/multi-agent/session-tools.js +22 -5
  35. package/dist/agent/reasoning/mcts.js +20 -6
  36. package/dist/agent/session-end-flush.d.ts +71 -0
  37. package/dist/agent/session-end-flush.js +233 -0
  38. package/dist/agent/streaming/streaming-handler.d.ts +7 -0
  39. package/dist/agent/streaming/streaming-handler.js +8 -1
  40. package/dist/agent/tool-executor.js +1 -0
  41. package/dist/agent/tool-handler.d.ts +5 -0
  42. package/dist/agent/tool-handler.js +130 -4
  43. package/dist/browser-automation/browser-operator-executor.js +15 -0
  44. package/dist/browser-automation/browser-use-runner.d.ts +96 -0
  45. package/dist/browser-automation/browser-use-runner.js +492 -0
  46. package/dist/browser-automation/camofox-runner.d.ts +107 -0
  47. package/dist/browser-automation/camofox-runner.js +287 -0
  48. package/dist/channels/dingtalk/index.js +3 -0
  49. package/dist/channels/discord/client.d.ts +9 -0
  50. package/dist/channels/discord/client.js +12 -0
  51. package/dist/channels/feishu/index.d.ts +167 -1
  52. package/dist/channels/feishu/index.js +432 -7
  53. package/dist/channels/gateway-lifecycle.d.ts +132 -0
  54. package/dist/channels/gateway-lifecycle.js +219 -0
  55. package/dist/channels/google-chat/index.d.ts +5 -1
  56. package/dist/channels/google-chat/index.js +5 -1
  57. package/dist/channels/imessage/index.d.ts +14 -0
  58. package/dist/channels/imessage/index.js +64 -17
  59. package/dist/channels/index.d.ts +4 -0
  60. package/dist/channels/index.js +4 -0
  61. package/dist/channels/irc/index.d.ts +73 -3
  62. package/dist/channels/irc/index.js +446 -11
  63. package/dist/channels/line/index.js +3 -0
  64. package/dist/channels/mattermost/index.d.ts +51 -4
  65. package/dist/channels/mattermost/index.js +303 -20
  66. package/dist/channels/nextcloud-talk/index.d.ts +89 -8
  67. package/dist/channels/nextcloud-talk/index.js +367 -16
  68. package/dist/channels/nostr/index.d.ts +121 -1
  69. package/dist/channels/nostr/index.js +396 -8
  70. package/dist/channels/ntfy/index.js +3 -0
  71. package/dist/channels/qq/index.js +3 -0
  72. package/dist/channels/slash-parity.d.ts +117 -0
  73. package/dist/channels/slash-parity.js +185 -0
  74. package/dist/channels/synology-chat/index.js +3 -0
  75. package/dist/channels/teams/index.d.ts +3 -0
  76. package/dist/channels/teams/index.js +3 -0
  77. package/dist/channels/telegram/client.d.ts +9 -0
  78. package/dist/channels/telegram/client.js +12 -0
  79. package/dist/channels/twilio-voice/index.js +3 -0
  80. package/dist/channels/webchat/index.d.ts +7 -1
  81. package/dist/channels/webchat/index.js +7 -1
  82. package/dist/channels/wecom/index.js +3 -0
  83. package/dist/channels/weixin/index.js +3 -0
  84. package/dist/channels/zalo/index.js +3 -0
  85. package/dist/cli/config-loader.js +1 -1
  86. package/dist/codebuddy/client.d.ts +30 -1
  87. package/dist/codebuddy/client.js +167 -20
  88. package/dist/codebuddy/providers/provider-chatgpt-responses.d.ts +5 -0
  89. package/dist/codebuddy/providers/provider-chatgpt-responses.js +1 -0
  90. package/dist/codebuddy/providers/provider-gemini-native.js +1 -1
  91. package/dist/codebuddy/providers/provider-openai-compat.d.ts +5 -0
  92. package/dist/codebuddy/providers/provider-openai-compat.js +82 -2
  93. package/dist/codebuddy/tool-definitions/computer-control-tools.js +32 -2
  94. package/dist/codebuddy/tool-definitions/core-tools.js +3 -3
  95. package/dist/codebuddy/tool-definitions/index.d.ts +2 -1
  96. package/dist/codebuddy/tool-definitions/index.js +2 -1
  97. package/dist/codebuddy/tool-definitions/multimodal-tools.d.ts +1 -0
  98. package/dist/codebuddy/tool-definitions/multimodal-tools.js +44 -1
  99. package/dist/codebuddy/tool-definitions/windows-tools.d.ts +2 -0
  100. package/dist/codebuddy/tool-definitions/windows-tools.js +34 -0
  101. package/dist/codebuddy/tools.d.ts +1 -1
  102. package/dist/codebuddy/tools.js +27 -24
  103. package/dist/commands/cli/hermes-commands.js +108 -0
  104. package/dist/commands/cli/native-engine-commands.js +107 -3
  105. package/dist/commands/cli/utility-commands.js +45 -0
  106. package/dist/commands/enhanced-command-handler.js +5 -0
  107. package/dist/commands/goal-cli.d.ts +71 -0
  108. package/dist/commands/goal-cli.js +280 -0
  109. package/dist/commands/handlers/goal-handler.d.ts +34 -0
  110. package/dist/commands/handlers/goal-handler.js +155 -0
  111. package/dist/commands/handlers/index.d.ts +1 -0
  112. package/dist/commands/handlers/index.js +2 -0
  113. package/dist/commands/handlers/infra-handlers.js +36 -0
  114. package/dist/commands/handlers/memory-handlers.js +96 -1
  115. package/dist/commands/headless-slash.d.ts +2 -0
  116. package/dist/commands/headless-slash.js +12 -0
  117. package/dist/commands/llm-provider-resolution.d.ts +5 -3
  118. package/dist/commands/llm-provider-resolution.js +87 -33
  119. package/dist/commands/ollama.d.ts +25 -0
  120. package/dist/commands/ollama.js +100 -0
  121. package/dist/commands/provider.d.ts +5 -0
  122. package/dist/commands/provider.js +106 -55
  123. package/dist/commands/slash/builtin-commands.js +20 -0
  124. package/dist/commands/spec-next.js +2 -1
  125. package/dist/commands/spec-plan.js +5 -16
  126. package/dist/commands/tunnel.d.ts +2 -0
  127. package/dist/commands/tunnel.js +48 -0
  128. package/dist/config/config-resolver.d.ts +2 -1
  129. package/dist/config/config-resolver.js +54 -41
  130. package/dist/config/constants.d.ts +28 -0
  131. package/dist/config/constants.js +7 -0
  132. package/dist/config/env-schema.js +770 -0
  133. package/dist/config/feature-flags.js +7 -0
  134. package/dist/config/model-tools.js +4 -4
  135. package/dist/config/toml-config.d.ts +16 -0
  136. package/dist/config/toml-config.js +3 -0
  137. package/dist/context/context-manager-v2.d.ts +39 -0
  138. package/dist/context/context-manager-v2.js +91 -0
  139. package/dist/daemon/agent-task-executor.js +12 -1
  140. package/dist/daemon/autonomous-daemon.d.ts +1 -1
  141. package/dist/daemon/autonomous-daemon.js +5 -3
  142. package/dist/daemon/autonomous-loop.d.ts +21 -1
  143. package/dist/daemon/autonomous-loop.js +69 -0
  144. package/dist/daemon/colab-goal.d.ts +38 -0
  145. package/dist/daemon/colab-goal.js +81 -0
  146. package/dist/daemon/cron-agent-bridge.d.ts +12 -3
  147. package/dist/daemon/cron-agent-bridge.js +25 -9
  148. package/dist/desktop/codebuddy-engine-adapter.d.ts +32 -0
  149. package/dist/desktop/codebuddy-engine-adapter.js +257 -80
  150. package/dist/desktop/engine-adapter.d.ts +14 -0
  151. package/dist/desktop-automation/automation-manager.js +16 -0
  152. package/dist/desktop-automation/omniparser-runner.d.ts +63 -0
  153. package/dist/desktop-automation/omniparser-runner.js +115 -0
  154. package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
  155. package/dist/desktop-automation/smart-snapshot.js +72 -5
  156. package/dist/doctor/index.js +40 -23
  157. package/dist/events/types.d.ts +11 -0
  158. package/dist/fleet/colab-store.d.ts +21 -0
  159. package/dist/fleet/colab-store.js +28 -0
  160. package/dist/fleet/peer-session-bridge.d.ts +1 -1
  161. package/dist/fleet/peer-session-bridge.js +243 -2
  162. package/dist/fleet/peer-session-store.d.ts +3 -0
  163. package/dist/fleet/peer-tool-bridge.js +14 -0
  164. package/dist/fleet/privacy-lint.d.ts +8 -0
  165. package/dist/fleet/privacy-lint.js +22 -0
  166. package/dist/goals/goal-decomposer.d.ts +27 -0
  167. package/dist/goals/goal-decomposer.js +293 -0
  168. package/dist/goals/goal-judge-client.d.ts +15 -0
  169. package/dist/goals/goal-judge-client.js +45 -0
  170. package/dist/goals/goal-judge.d.ts +38 -0
  171. package/dist/goals/goal-judge.js +158 -0
  172. package/dist/goals/goal-loop.d.ts +37 -0
  173. package/dist/goals/goal-loop.js +101 -0
  174. package/dist/goals/goal-manager.d.ts +77 -0
  175. package/dist/goals/goal-manager.js +289 -0
  176. package/dist/goals/goal-state.d.ts +99 -0
  177. package/dist/goals/goal-state.js +315 -0
  178. package/dist/goals/goal-store.d.ts +28 -0
  179. package/dist/goals/goal-store.js +87 -0
  180. package/dist/goals/index.d.ts +5 -0
  181. package/dist/goals/index.js +6 -0
  182. package/dist/hooks/use-input-handler.js +36 -1
  183. package/dist/hooks/user-hooks.js +17 -3
  184. package/dist/index.js +506 -25
  185. package/dist/input/text-to-speech.d.ts +2 -6
  186. package/dist/input/text-to-speech.js +2 -27
  187. package/dist/integrations/screenpipe/screenpipe-client.d.ts +10 -0
  188. package/dist/integrations/screenpipe/screenpipe-client.js +12 -2
  189. package/dist/integrations/tailscale.d.ts +13 -0
  190. package/dist/integrations/tailscale.js +87 -34
  191. package/dist/knowledge/workspace-indexer.js +53 -9
  192. package/dist/mcp/client.js +1 -0
  193. package/dist/mcp/mcp-desktop-tools.d.ts +23 -0
  194. package/dist/mcp/mcp-desktop-tools.js +158 -0
  195. package/dist/mcp/mcp-server.js +2 -0
  196. package/dist/memory/enhanced-memory.d.ts +10 -0
  197. package/dist/memory/enhanced-memory.js +33 -2
  198. package/dist/memory/index.d.ts +3 -1
  199. package/dist/memory/index.js +4 -1
  200. package/dist/memory/memory-auto-proposer.d.ts +23 -0
  201. package/dist/memory/memory-auto-proposer.js +308 -0
  202. package/dist/memory/memory-candidate-queue.d.ts +92 -0
  203. package/dist/memory/memory-candidate-queue.js +261 -0
  204. package/dist/memory/persistent-memory.d.ts +45 -2
  205. package/dist/memory/persistent-memory.js +236 -40
  206. package/dist/ml/bayesian-qualifier.d.ts +1 -1
  207. package/dist/ml/bayesian-qualifier.js +35 -2
  208. package/dist/observability/run-store.d.ts +1 -1
  209. package/dist/openclaw/gateway-bridge.js +5 -0
  210. package/dist/plugins/marketplace.d.ts +1 -0
  211. package/dist/plugins/marketplace.js +7 -0
  212. package/dist/prompts/execution-discipline.d.ts +14 -0
  213. package/dist/prompts/execution-discipline.js +29 -0
  214. package/dist/prompts/variation-injector.js +9 -2
  215. package/dist/protocols/acp/acp-agentic-runner.d.ts +7 -6
  216. package/dist/protocols/acp/acp-agentic-runner.js +115 -18
  217. package/dist/protocols/acp/acp-session-store.d.ts +23 -0
  218. package/dist/protocols/acp/acp-session-store.js +77 -0
  219. package/dist/protocols/acp/acp-stdio-server.d.ts +7 -0
  220. package/dist/protocols/acp/acp-stdio-server.js +71 -16
  221. package/dist/providers/active-llm-registry.d.ts +37 -0
  222. package/dist/providers/active-llm-registry.js +186 -0
  223. package/dist/providers/auxiliary-provider.d.ts +25 -0
  224. package/dist/providers/auxiliary-provider.js +192 -0
  225. package/dist/providers/codex-oauth.d.ts +1 -1
  226. package/dist/providers/codex-oauth.js +27 -4
  227. package/dist/providers/index.d.ts +3 -0
  228. package/dist/providers/index.js +4 -0
  229. package/dist/providers/provider-catalog.d.ts +70 -0
  230. package/dist/providers/provider-catalog.js +738 -0
  231. package/dist/providers/provider-fallback.d.ts +35 -0
  232. package/dist/providers/provider-fallback.js +171 -0
  233. package/dist/providers/xai-oauth.d.ts +128 -0
  234. package/dist/providers/xai-oauth.js +735 -0
  235. package/dist/scheduler/cron-scheduler.d.ts +15 -3
  236. package/dist/scheduler/cron-scheduler.js +53 -7
  237. package/dist/scheduler/script-runner.d.ts +2 -0
  238. package/dist/scheduler/script-runner.js +19 -4
  239. package/dist/scheduler/watchdog-handlers.js +7 -20
  240. package/dist/search/usearch-index.js +7 -2
  241. package/dist/security/tool-policy/tool-groups.js +2 -0
  242. package/dist/server/index.js +17 -2
  243. package/dist/server/routes/mobile.d.ts +12 -4
  244. package/dist/server/routes/mobile.js +116 -1
  245. package/dist/server/tls-config.d.ts +35 -0
  246. package/dist/server/tls-config.js +142 -0
  247. package/dist/server/tunnel-manager.d.ts +20 -0
  248. package/dist/server/tunnel-manager.js +58 -0
  249. package/dist/server/websocket/fleet-bridge.d.ts +13 -1
  250. package/dist/server/websocket/fleet-bridge.js +16 -0
  251. package/dist/services/prompt-builder.d.ts +1 -0
  252. package/dist/services/prompt-builder.js +49 -8
  253. package/dist/shared/engine-types.d.ts +15 -1
  254. package/dist/sidecar/sidecar-bridge.d.ts +1 -0
  255. package/dist/sidecar/sidecar-bridge.js +21 -10
  256. package/dist/spec/spec-store.js +8 -1
  257. package/dist/talk-mode/providers/audioreader-tts.d.ts +1 -1
  258. package/dist/talk-mode/providers/audioreader-tts.js +8 -8
  259. package/dist/templates/project-scaffolding.js +3 -2
  260. package/dist/themes/theme-schema.d.ts +10 -10
  261. package/dist/tools/application-profiles.js +38 -0
  262. package/dist/tools/bash/bash-tool.d.ts +1 -0
  263. package/dist/tools/bash/bash-tool.js +16 -2
  264. package/dist/tools/bash/command-validator.js +3 -0
  265. package/dist/tools/bash/rtk-rewrite.d.ts +16 -0
  266. package/dist/tools/bash/rtk-rewrite.js +100 -0
  267. package/dist/tools/bash/streaming-executor.js +14 -1
  268. package/dist/tools/computer-control-tool.d.ts +16 -1
  269. package/dist/tools/computer-control-tool.js +317 -5
  270. package/dist/tools/document-generator.d.ts +14 -0
  271. package/dist/tools/document-generator.js +79 -0
  272. package/dist/tools/execute-code-rpc-invoker.d.ts +26 -2
  273. package/dist/tools/execute-code-rpc-invoker.js +46 -5
  274. package/dist/tools/metadata.js +28 -0
  275. package/dist/tools/office-macro-tool.d.ts +10 -0
  276. package/dist/tools/office-macro-tool.js +93 -0
  277. package/dist/tools/registry/index.d.ts +2 -1
  278. package/dist/tools/registry/index.js +2 -1
  279. package/dist/tools/registry/memory-tools.d.ts +20 -0
  280. package/dist/tools/registry/memory-tools.js +225 -3
  281. package/dist/tools/registry/multimodal-tools.js +2 -2
  282. package/dist/tools/registry/vision-tools.d.ts +33 -0
  283. package/dist/tools/registry/vision-tools.js +308 -6
  284. package/dist/tools/registry/windows-tools.d.ts +2 -0
  285. package/dist/tools/registry/windows-tools.js +47 -0
  286. package/dist/tools/route-peer-tool.js +14 -0
  287. package/dist/tools/screenshot-tool.js +14 -2
  288. package/dist/tools/text-to-speech-tool.d.ts +1 -1
  289. package/dist/tools/text-to-speech-tool.js +2 -12
  290. package/dist/tools/tool-selector.js +3 -59
  291. package/dist/utils/config-validation/schema.d.ts +40 -7
  292. package/dist/utils/config-validation/schema.js +130 -1
  293. package/dist/utils/cost-tracker.js +21 -1
  294. package/dist/utils/disk-guard.d.ts +180 -0
  295. package/dist/utils/disk-guard.js +404 -0
  296. package/dist/utils/interactive-setup.js +35 -2
  297. package/dist/utils/model-utils.js +11 -2
  298. package/dist/utils/output-sanitizer.js +11 -0
  299. package/dist/utils/provider-detector.d.ts +8 -7
  300. package/dist/utils/provider-detector.js +19 -77
  301. package/dist/utils/settings-manager.d.ts +7 -0
  302. package/dist/utils/token-display.d.ts +3 -3
  303. package/dist/utils/token-display.js +22 -4
  304. package/dist/wizard/onboarding.d.ts +39 -0
  305. package/dist/wizard/onboarding.js +433 -21
  306. package/dist/wizard/provider-onboarding.d.ts +8 -23
  307. package/dist/wizard/provider-onboarding.js +39 -158
  308. package/package.json +4 -2
  309. package/dist/plugins/provider-onboarding.d.ts +0 -23
  310. package/dist/plugins/provider-onboarding.js +0 -116
  311. package/dist/utils/kokoro-tts.d.ts +0 -8
  312. package/dist/utils/kokoro-tts.js +0 -67
@@ -4,6 +4,24 @@
4
4
  * Central registry of all environment variables used by Code Buddy.
5
5
  * Provides validation, documentation, and a CLI summary.
6
6
  */
7
+ function providerStringEnv(name, description, options = {}) {
8
+ return {
9
+ name,
10
+ type: 'string',
11
+ description,
12
+ category: 'provider',
13
+ ...options,
14
+ };
15
+ }
16
+ function providerNumberEnv(name, description, options = {}) {
17
+ return {
18
+ name,
19
+ type: 'number',
20
+ description,
21
+ category: 'provider',
22
+ ...options,
23
+ };
24
+ }
7
25
  /**
8
26
  * Complete schema of all environment variables used across the codebase.
9
27
  */
@@ -69,6 +87,149 @@ export const ENV_SCHEMA = [
69
87
  category: 'core',
70
88
  min: 1000,
71
89
  },
90
+ {
91
+ name: 'CODEBUDDY_MIN_FREE_MB',
92
+ type: 'number',
93
+ default: '500',
94
+ description: 'disk-guard: min free space (MB) before a guarded write/launch is refused',
95
+ category: 'core',
96
+ min: 0,
97
+ max: 1000000,
98
+ },
99
+ {
100
+ name: 'CODEBUDDY_DISK_QUOTA_MB',
101
+ type: 'number',
102
+ default: '0',
103
+ description: 'disk-guard: per-session byte budget (MB); 0 = unlimited',
104
+ category: 'core',
105
+ min: 0,
106
+ max: 100000000,
107
+ },
108
+ {
109
+ name: 'CODEBUDDY_TEMP_MAX_AGE_MS',
110
+ type: 'number',
111
+ default: '0',
112
+ description: 'disk-guard: orphan-sweep age cutoff (ms); 0 = presence-based',
113
+ category: 'core',
114
+ min: 0,
115
+ },
116
+ {
117
+ name: 'CODEBUDDY_LOG_MAX_MB',
118
+ type: 'number',
119
+ default: '10',
120
+ description: 'disk-guard: append-log rotation size (MB)',
121
+ category: 'core',
122
+ min: 1,
123
+ max: 100000,
124
+ },
125
+ {
126
+ name: 'CODEBUDDY_LOG_MAX_FILES',
127
+ type: 'number',
128
+ default: '5',
129
+ description: 'disk-guard: append-log retention count',
130
+ category: 'core',
131
+ min: 1,
132
+ max: 1000,
133
+ },
134
+ {
135
+ name: 'CODEBUDDY_GOAL_MAX_TURNS',
136
+ type: 'number',
137
+ description: 'Turn budget for /goal auto-continue loops (default 20)',
138
+ category: 'core',
139
+ min: 1,
140
+ max: 1000,
141
+ },
142
+ {
143
+ name: 'CODEBUDDY_GOAL_JUDGE_MODEL',
144
+ type: 'string',
145
+ description: 'Model used by the /goal judge (default: current session model)',
146
+ category: 'core',
147
+ },
148
+ {
149
+ name: 'CODEBUDDY_RTK',
150
+ type: 'boolean',
151
+ default: 'false',
152
+ description: 'Enable RTK shell command rewriting for token-optimized command output',
153
+ category: 'core',
154
+ },
155
+ {
156
+ name: 'CODEBUDDY_RTK_REWRITE',
157
+ type: 'boolean',
158
+ default: 'false',
159
+ description: 'Alias flag for enabling RTK shell command rewriting',
160
+ category: 'core',
161
+ },
162
+ {
163
+ name: 'CODEBUDDY_RTK_TIMEOUT_MS',
164
+ type: 'number',
165
+ default: '1000',
166
+ description: 'Timeout for rtk rewrite calls before falling back to the original command',
167
+ category: 'core',
168
+ min: 50,
169
+ max: 10000,
170
+ },
171
+ {
172
+ name: 'CODEBUDDY_FALLBACK_PROVIDERS',
173
+ type: 'string',
174
+ description: 'Comma-separated provider[:model] fallbacks tried when the primary LLM chat call fails',
175
+ category: 'core',
176
+ },
177
+ {
178
+ name: 'CODEBUDDY_FALLBACK_PROVIDER',
179
+ type: 'string',
180
+ description: 'Single fallback provider id or alias, optionally paired with CODEBUDDY_FALLBACK_MODEL',
181
+ category: 'core',
182
+ },
183
+ {
184
+ name: 'CODEBUDDY_FALLBACK_MODEL',
185
+ type: 'string',
186
+ description: 'Fallback model used with CODEBUDDY_FALLBACK_PROVIDER',
187
+ category: 'core',
188
+ },
189
+ {
190
+ name: 'CODEBUDDY_MEMORY_ENFORCE_LIMITS',
191
+ type: 'boolean',
192
+ default: 'true',
193
+ description: 'Reject persistent-memory writes that exceed Hermes-style character budgets',
194
+ category: 'core',
195
+ },
196
+ {
197
+ name: 'CODEBUDDY_MEMORY_PROJECT_CHAR_LIMIT',
198
+ type: 'number',
199
+ default: '2200',
200
+ description: 'Character budget for project persistent memory',
201
+ category: 'core',
202
+ min: 1,
203
+ },
204
+ {
205
+ name: 'CODEBUDDY_MEMORY_USER_CHAR_LIMIT',
206
+ type: 'number',
207
+ default: '1375',
208
+ description: 'Character budget for user persistent memory',
209
+ category: 'core',
210
+ min: 1,
211
+ },
212
+ {
213
+ name: 'CODEBUDDY_MEMORY_SECURITY_SCAN',
214
+ type: 'boolean',
215
+ default: 'true',
216
+ description: 'Reject prompt-injection, exfiltration, private-key, and invisible-Unicode memory writes',
217
+ category: 'core',
218
+ },
219
+ {
220
+ name: 'CODEBUDDY_MEMORY_REJECT_DUPLICATES',
221
+ type: 'boolean',
222
+ default: 'true',
223
+ description: 'Return success without writing when a persistent memory entry is an exact duplicate',
224
+ category: 'core',
225
+ },
226
+ {
227
+ name: 'CODEBUDDY_MEMORY_AUTO_PROPOSE',
228
+ type: 'boolean',
229
+ default: 'true',
230
+ description: 'At session end, enqueue review-gated long-term memory candidates from the transcript',
231
+ category: 'core',
232
+ },
72
233
  {
73
234
  name: 'GROK_FORCE_TOOLS',
74
235
  type: 'boolean',
@@ -123,6 +284,19 @@ export const ENV_SCHEMA = [
123
284
  sensitive: true,
124
285
  category: 'provider',
125
286
  },
287
+ {
288
+ name: 'CODEBUDDY_PROVIDER',
289
+ type: 'string',
290
+ description: 'Force the runtime provider id (for example chatgpt, ollama, openrouter, groq)',
291
+ category: 'provider',
292
+ },
293
+ {
294
+ name: 'CHATGPT_MODEL',
295
+ type: 'string',
296
+ default: 'gpt-5.5',
297
+ description: 'Default model for ChatGPT OAuth / Codex Responses backend',
298
+ category: 'provider',
299
+ },
126
300
  {
127
301
  name: 'OPENAI_API_KEY',
128
302
  type: 'string',
@@ -179,6 +353,602 @@ export const ENV_SCHEMA = [
179
353
  description: 'Default Gemini model',
180
354
  category: 'provider',
181
355
  },
356
+ {
357
+ name: 'OLLAMA_HOST',
358
+ type: 'string',
359
+ default: 'http://localhost:11434',
360
+ description: 'Ollama host; normalized to /v1 for OpenAI-compatible calls',
361
+ category: 'provider',
362
+ },
363
+ {
364
+ name: 'OLLAMA_MODEL',
365
+ type: 'string',
366
+ default: 'qwen2.5-coder:7b',
367
+ description: 'Default Ollama model',
368
+ category: 'provider',
369
+ },
370
+ {
371
+ name: 'LMSTUDIO_HOST',
372
+ type: 'string',
373
+ default: 'http://localhost:1234',
374
+ description: 'LM Studio local server host; normalized to /v1',
375
+ category: 'provider',
376
+ },
377
+ {
378
+ name: 'LM_STUDIO_HOST',
379
+ type: 'string',
380
+ default: 'http://localhost:1234',
381
+ description: 'Alias for LMSTUDIO_HOST',
382
+ category: 'provider',
383
+ },
384
+ {
385
+ name: 'LMSTUDIO_MODEL',
386
+ type: 'string',
387
+ default: 'local-model',
388
+ description: 'Default LM Studio model',
389
+ category: 'provider',
390
+ },
391
+ {
392
+ name: 'MISTRAL_API_KEY',
393
+ type: 'string',
394
+ description: 'Mistral API key',
395
+ sensitive: true,
396
+ category: 'provider',
397
+ },
398
+ {
399
+ name: 'MISTRAL_MODEL',
400
+ type: 'string',
401
+ default: 'mistral-large-latest',
402
+ description: 'Default Mistral model',
403
+ category: 'provider',
404
+ },
405
+ {
406
+ name: 'GROQ_API_KEY',
407
+ type: 'string',
408
+ description: 'Groq API key',
409
+ sensitive: true,
410
+ category: 'provider',
411
+ },
412
+ {
413
+ name: 'GROQ_MODEL',
414
+ type: 'string',
415
+ default: 'llama-3.3-70b-versatile',
416
+ description: 'Default Groq model',
417
+ category: 'provider',
418
+ },
419
+ {
420
+ name: 'TOGETHER_API_KEY',
421
+ type: 'string',
422
+ description: 'Together AI API key',
423
+ sensitive: true,
424
+ category: 'provider',
425
+ },
426
+ {
427
+ name: 'TOGETHER_MODEL',
428
+ type: 'string',
429
+ default: 'meta-llama/Llama-3.3-70B-Instruct-Turbo',
430
+ description: 'Default Together AI model',
431
+ category: 'provider',
432
+ },
433
+ {
434
+ name: 'FIREWORKS_API_KEY',
435
+ type: 'string',
436
+ description: 'Fireworks AI API key',
437
+ sensitive: true,
438
+ category: 'provider',
439
+ },
440
+ {
441
+ name: 'FIREWORKS_MODEL',
442
+ type: 'string',
443
+ default: 'accounts/fireworks/models/llama-v3p1-70b-instruct',
444
+ description: 'Default Fireworks model',
445
+ category: 'provider',
446
+ },
447
+ {
448
+ name: 'OPENROUTER_MODEL',
449
+ type: 'string',
450
+ default: 'openai/gpt-4o',
451
+ description: 'Default OpenRouter model',
452
+ category: 'provider',
453
+ },
454
+ providerStringEnv('OPENROUTER_PROVIDER_SORT', 'OpenRouter provider ranking: price, throughput, or latency'),
455
+ providerStringEnv('OPENROUTER_PROVIDER_ONLY', 'Comma-separated OpenRouter sub-provider allowlist'),
456
+ providerStringEnv('OPENROUTER_PROVIDER_IGNORE', 'Comma-separated OpenRouter sub-provider denylist'),
457
+ providerStringEnv('OPENROUTER_PROVIDER_ORDER', 'Comma-separated OpenRouter sub-provider priority order'),
458
+ {
459
+ name: 'OPENROUTER_PROVIDER_REQUIRE_PARAMETERS',
460
+ type: 'boolean',
461
+ description: 'Require OpenRouter sub-providers to support every requested parameter',
462
+ category: 'provider',
463
+ },
464
+ providerStringEnv('OPENROUTER_PROVIDER_DATA_COLLECTION', 'OpenRouter data collection policy: allow or deny'),
465
+ {
466
+ name: 'OPENROUTER_PROVIDER_ALLOW_FALLBACKS',
467
+ type: 'boolean',
468
+ description: 'Allow OpenRouter to fall back to other sub-providers when routed providers fail',
469
+ category: 'provider',
470
+ },
471
+ providerStringEnv('CODEBUDDY_OPENROUTER_PROVIDER_SORT', 'Alias for OPENROUTER_PROVIDER_SORT'),
472
+ providerStringEnv('CODEBUDDY_OPENROUTER_PROVIDER_ONLY', 'Alias for OPENROUTER_PROVIDER_ONLY'),
473
+ providerStringEnv('CODEBUDDY_OPENROUTER_PROVIDER_IGNORE', 'Alias for OPENROUTER_PROVIDER_IGNORE'),
474
+ providerStringEnv('CODEBUDDY_OPENROUTER_PROVIDER_ORDER', 'Alias for OPENROUTER_PROVIDER_ORDER'),
475
+ {
476
+ name: 'CODEBUDDY_OPENROUTER_PROVIDER_REQUIRE_PARAMETERS',
477
+ type: 'boolean',
478
+ description: 'Alias for OPENROUTER_PROVIDER_REQUIRE_PARAMETERS',
479
+ category: 'provider',
480
+ },
481
+ providerStringEnv('CODEBUDDY_OPENROUTER_PROVIDER_DATA_COLLECTION', 'Alias for OPENROUTER_PROVIDER_DATA_COLLECTION'),
482
+ {
483
+ name: 'CODEBUDDY_OPENROUTER_PROVIDER_ALLOW_FALLBACKS',
484
+ type: 'boolean',
485
+ description: 'Alias for OPENROUTER_PROVIDER_ALLOW_FALLBACKS',
486
+ category: 'provider',
487
+ },
488
+ providerStringEnv('CODEBUDDY_AUXILIARY_PROVIDER', 'Default auxiliary-task provider: auto, main, or a runtime provider id/alias'),
489
+ providerStringEnv('CODEBUDDY_AUXILIARY_MODEL', 'Default auxiliary-task model override'),
490
+ providerStringEnv('CODEBUDDY_AUXILIARY_BASE_URL', 'Default auxiliary-task base URL override'),
491
+ providerStringEnv('CODEBUDDY_AUXILIARY_API_KEY', 'Default auxiliary-task API key override', { sensitive: true }),
492
+ providerNumberEnv('CODEBUDDY_AUXILIARY_TIMEOUT_MS', 'Default auxiliary-task timeout in milliseconds', { min: 1 }),
493
+ providerStringEnv('CODEBUDDY_AUXILIARY_EXTRA_BODY', 'Default auxiliary-task JSON request-body extras'),
494
+ providerStringEnv('CODEBUDDY_AUXILIARY_VISION_PROVIDER', 'Vision auxiliary provider override'),
495
+ providerStringEnv('CODEBUDDY_AUXILIARY_VISION_MODEL', 'Vision auxiliary model override'),
496
+ providerStringEnv('CODEBUDDY_AUXILIARY_VISION_BASE_URL', 'Vision auxiliary base URL override'),
497
+ providerStringEnv('CODEBUDDY_AUXILIARY_VISION_API_KEY', 'Vision auxiliary API key override', { sensitive: true }),
498
+ providerNumberEnv('CODEBUDDY_AUXILIARY_VISION_TIMEOUT_MS', 'Vision auxiliary timeout in milliseconds', { default: '120000', min: 1 }),
499
+ providerStringEnv('AUXILIARY_VISION_MODEL', 'Hermes-compatible vision auxiliary model override'),
500
+ providerStringEnv('CODEBUDDY_AUXILIARY_BROWSER_VISION_PROVIDER', 'Browser vision auxiliary provider override'),
501
+ providerStringEnv('CODEBUDDY_AUXILIARY_BROWSER_VISION_MODEL', 'Browser vision auxiliary model override'),
502
+ providerStringEnv('CODEBUDDY_AUXILIARY_WEB_EXTRACT_PROVIDER', 'Web extraction auxiliary provider override'),
503
+ providerStringEnv('CODEBUDDY_AUXILIARY_WEB_EXTRACT_MODEL', 'Web extraction auxiliary model override'),
504
+ providerNumberEnv('CODEBUDDY_AUXILIARY_WEB_EXTRACT_TIMEOUT_MS', 'Web extraction auxiliary timeout in milliseconds', { default: '360000', min: 1 }),
505
+ providerStringEnv('CODEBUDDY_AUXILIARY_APPROVAL_PROVIDER', 'Approval-classifier auxiliary provider override'),
506
+ providerStringEnv('CODEBUDDY_AUXILIARY_APPROVAL_MODEL', 'Approval-classifier auxiliary model override'),
507
+ providerStringEnv('CODEBUDDY_AUXILIARY_APPROVAL_API_KEY', 'Approval-classifier auxiliary API key override', { sensitive: true }),
508
+ providerNumberEnv('CODEBUDDY_AUXILIARY_APPROVAL_TIMEOUT_MS', 'Approval-classifier auxiliary timeout in milliseconds', { default: '30000', min: 1 }),
509
+ providerStringEnv('CODEBUDDY_AUXILIARY_COMPRESSION_PROVIDER', 'Context compression auxiliary provider override'),
510
+ providerStringEnv('CODEBUDDY_AUXILIARY_COMPRESSION_MODEL', 'Context compression auxiliary model override'),
511
+ providerStringEnv('CODEBUDDY_AUXILIARY_COMPRESSION_API_KEY', 'Context compression auxiliary API key override', { sensitive: true }),
512
+ providerStringEnv('CODEBUDDY_AUXILIARY_COMPRESSION_EXTRA_BODY', 'Context compression auxiliary JSON request-body extras'),
513
+ providerNumberEnv('CODEBUDDY_AUXILIARY_COMPRESSION_TIMEOUT_MS', 'Context compression auxiliary timeout in milliseconds', { default: '120000', min: 1 }),
514
+ providerStringEnv('CODEBUDDY_AUXILIARY_SKILLS_HUB_PROVIDER', 'Skills hub auxiliary provider override'),
515
+ providerStringEnv('CODEBUDDY_AUXILIARY_SKILLS_HUB_MODEL', 'Skills hub auxiliary model override'),
516
+ providerStringEnv('CODEBUDDY_AUXILIARY_MCP_PROVIDER', 'MCP dispatch auxiliary provider override'),
517
+ providerStringEnv('CODEBUDDY_AUXILIARY_MCP_MODEL', 'MCP dispatch auxiliary model override'),
518
+ providerStringEnv('CODEBUDDY_AUXILIARY_TRIAGE_SPECIFIER_PROVIDER', 'Triage specifier auxiliary provider override'),
519
+ providerStringEnv('CODEBUDDY_AUXILIARY_TRIAGE_SPECIFIER_MODEL', 'Triage specifier auxiliary model override'),
520
+ providerNumberEnv('CODEBUDDY_AUXILIARY_TRIAGE_SPECIFIER_TIMEOUT_MS', 'Triage specifier auxiliary timeout in milliseconds', { default: '120000', min: 1 }),
521
+ {
522
+ name: 'NOVITA_API_KEY',
523
+ type: 'string',
524
+ description: 'NovitaAI API key',
525
+ sensitive: true,
526
+ category: 'provider',
527
+ },
528
+ {
529
+ name: 'NOVITA_BASE_URL',
530
+ type: 'string',
531
+ default: 'https://api.novita.ai/openai/v1',
532
+ description: 'NovitaAI OpenAI-compatible endpoint',
533
+ category: 'provider',
534
+ },
535
+ {
536
+ name: 'NOVITA_MODEL',
537
+ type: 'string',
538
+ default: 'moonshotai/kimi-k2.5',
539
+ description: 'Default NovitaAI model',
540
+ category: 'provider',
541
+ },
542
+ {
543
+ name: 'GLM_API_KEY',
544
+ type: 'string',
545
+ description: 'z.ai / GLM API key',
546
+ sensitive: true,
547
+ category: 'provider',
548
+ },
549
+ {
550
+ name: 'ZAI_API_KEY',
551
+ type: 'string',
552
+ description: 'Alias API key for z.ai / GLM',
553
+ sensitive: true,
554
+ category: 'provider',
555
+ },
556
+ {
557
+ name: 'GLM_BASE_URL',
558
+ type: 'string',
559
+ default: 'https://api.z.ai/api/paas/v4',
560
+ description: 'z.ai / GLM OpenAI-compatible endpoint',
561
+ category: 'provider',
562
+ },
563
+ {
564
+ name: 'GLM_MODEL',
565
+ type: 'string',
566
+ default: 'glm-5',
567
+ description: 'Default z.ai / GLM model',
568
+ category: 'provider',
569
+ },
570
+ {
571
+ name: 'KIMI_API_KEY',
572
+ type: 'string',
573
+ description: 'Kimi / Moonshot API key',
574
+ sensitive: true,
575
+ category: 'provider',
576
+ },
577
+ {
578
+ name: 'KIMI_BASE_URL',
579
+ type: 'string',
580
+ default: 'https://api.moonshot.ai/v1',
581
+ description: 'Kimi / Moonshot OpenAI-compatible endpoint',
582
+ category: 'provider',
583
+ },
584
+ {
585
+ name: 'KIMI_MODEL',
586
+ type: 'string',
587
+ default: 'kimi-k2.5',
588
+ description: 'Default Kimi model',
589
+ category: 'provider',
590
+ },
591
+ {
592
+ name: 'KIMI_CN_API_KEY',
593
+ type: 'string',
594
+ description: 'Kimi China API key',
595
+ sensitive: true,
596
+ category: 'provider',
597
+ },
598
+ {
599
+ name: 'KIMI_CN_BASE_URL',
600
+ type: 'string',
601
+ default: 'https://api.moonshot.cn/v1',
602
+ description: 'Kimi China OpenAI-compatible endpoint',
603
+ category: 'provider',
604
+ },
605
+ {
606
+ name: 'ARCEEAI_API_KEY',
607
+ type: 'string',
608
+ description: 'Arcee AI API key',
609
+ sensitive: true,
610
+ category: 'provider',
611
+ },
612
+ {
613
+ name: 'ARCEEAI_BASE_URL',
614
+ type: 'string',
615
+ default: 'https://api.arcee.ai/api/v1',
616
+ description: 'Arcee AI OpenAI-compatible endpoint',
617
+ category: 'provider',
618
+ },
619
+ {
620
+ name: 'GMI_API_KEY',
621
+ type: 'string',
622
+ description: 'GMI Cloud API key',
623
+ sensitive: true,
624
+ category: 'provider',
625
+ },
626
+ {
627
+ name: 'GMI_BASE_URL',
628
+ type: 'string',
629
+ default: 'https://api.gmi-serving.com/v1',
630
+ description: 'GMI Cloud OpenAI-compatible endpoint',
631
+ category: 'provider',
632
+ },
633
+ {
634
+ name: 'MINIMAX_API_KEY',
635
+ type: 'string',
636
+ description: 'MiniMax API key',
637
+ sensitive: true,
638
+ category: 'provider',
639
+ },
640
+ {
641
+ name: 'MINIMAX_BASE_URL',
642
+ type: 'string',
643
+ default: 'https://api.minimax.io/v1',
644
+ description: 'MiniMax OpenAI-compatible endpoint',
645
+ category: 'provider',
646
+ },
647
+ {
648
+ name: 'MINIMAX_CN_API_KEY',
649
+ type: 'string',
650
+ description: 'MiniMax China API key',
651
+ sensitive: true,
652
+ category: 'provider',
653
+ },
654
+ {
655
+ name: 'MINIMAX_CN_BASE_URL',
656
+ type: 'string',
657
+ default: 'https://api.minimaxi.com/v1',
658
+ description: 'MiniMax China OpenAI-compatible endpoint',
659
+ category: 'provider',
660
+ },
661
+ {
662
+ name: 'DASHSCOPE_API_KEY',
663
+ type: 'string',
664
+ description: 'Alibaba Cloud DashScope API key',
665
+ sensitive: true,
666
+ category: 'provider',
667
+ },
668
+ {
669
+ name: 'DASHSCOPE_BASE_URL',
670
+ type: 'string',
671
+ default: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',
672
+ description: 'DashScope OpenAI-compatible endpoint',
673
+ category: 'provider',
674
+ },
675
+ {
676
+ name: 'ALIBABA_CODING_PLAN_API_KEY',
677
+ type: 'string',
678
+ description: 'Alibaba Coding Plan API key',
679
+ sensitive: true,
680
+ category: 'provider',
681
+ },
682
+ {
683
+ name: 'KILOCODE_API_KEY',
684
+ type: 'string',
685
+ description: 'Kilo Code Gateway API key',
686
+ sensitive: true,
687
+ category: 'provider',
688
+ },
689
+ {
690
+ name: 'KILOCODE_BASE_URL',
691
+ type: 'string',
692
+ default: 'https://api.kilo.ai/api/gateway',
693
+ description: 'Kilo Code Gateway endpoint',
694
+ category: 'provider',
695
+ },
696
+ {
697
+ name: 'XIAOMI_API_KEY',
698
+ type: 'string',
699
+ description: 'Xiaomi MiMo API key',
700
+ sensitive: true,
701
+ category: 'provider',
702
+ },
703
+ {
704
+ name: 'XIAOMI_BASE_URL',
705
+ type: 'string',
706
+ default: 'https://api.xiaomimimo.com/v1',
707
+ description: 'Xiaomi MiMo OpenAI-compatible endpoint',
708
+ category: 'provider',
709
+ },
710
+ {
711
+ name: 'TOKENHUB_API_KEY',
712
+ type: 'string',
713
+ description: 'Tencent TokenHub API key',
714
+ sensitive: true,
715
+ category: 'provider',
716
+ },
717
+ {
718
+ name: 'TOKENHUB_BASE_URL',
719
+ type: 'string',
720
+ default: 'https://tokenhub.tencentmaas.com/v1',
721
+ description: 'Tencent TokenHub OpenAI-compatible endpoint',
722
+ category: 'provider',
723
+ },
724
+ {
725
+ name: 'OPENCODE_ZEN_API_KEY',
726
+ type: 'string',
727
+ description: 'OpenCode Zen API key',
728
+ sensitive: true,
729
+ category: 'provider',
730
+ },
731
+ {
732
+ name: 'OPENCODE_GO_API_KEY',
733
+ type: 'string',
734
+ description: 'OpenCode Go API key',
735
+ sensitive: true,
736
+ category: 'provider',
737
+ },
738
+ {
739
+ name: 'DEEPSEEK_API_KEY',
740
+ type: 'string',
741
+ description: 'DeepSeek API key',
742
+ sensitive: true,
743
+ category: 'provider',
744
+ },
745
+ {
746
+ name: 'DEEPSEEK_BASE_URL',
747
+ type: 'string',
748
+ default: 'https://api.deepseek.com/v1',
749
+ description: 'DeepSeek OpenAI-compatible endpoint',
750
+ category: 'provider',
751
+ },
752
+ {
753
+ name: 'HF_TOKEN',
754
+ type: 'string',
755
+ description: 'Hugging Face token for the OpenAI-compatible inference router',
756
+ sensitive: true,
757
+ category: 'provider',
758
+ },
759
+ {
760
+ name: 'HF_BASE_URL',
761
+ type: 'string',
762
+ default: 'https://router.huggingface.co/v1',
763
+ description: 'Hugging Face inference router endpoint',
764
+ category: 'provider',
765
+ },
766
+ {
767
+ name: 'NVIDIA_API_KEY',
768
+ type: 'string',
769
+ description: 'NVIDIA NIM API key',
770
+ sensitive: true,
771
+ category: 'provider',
772
+ },
773
+ {
774
+ name: 'NVIDIA_BASE_URL',
775
+ type: 'string',
776
+ default: 'https://integrate.api.nvidia.com/v1',
777
+ description: 'NVIDIA NIM OpenAI-compatible endpoint',
778
+ category: 'provider',
779
+ },
780
+ {
781
+ name: 'OLLAMA_API_KEY',
782
+ type: 'string',
783
+ description: 'Ollama Cloud API key',
784
+ sensitive: true,
785
+ category: 'provider',
786
+ },
787
+ {
788
+ name: 'OLLAMA_CLOUD_BASE_URL',
789
+ type: 'string',
790
+ default: 'https://ollama.com/v1',
791
+ description: 'Ollama Cloud OpenAI-compatible endpoint',
792
+ category: 'provider',
793
+ },
794
+ {
795
+ name: 'STEPFUN_API_KEY',
796
+ type: 'string',
797
+ description: 'StepFun API key',
798
+ sensitive: true,
799
+ category: 'provider',
800
+ },
801
+ {
802
+ name: 'STEPFUN_BASE_URL',
803
+ type: 'string',
804
+ default: 'https://api.stepfun.ai/v1',
805
+ description: 'StepFun OpenAI-compatible endpoint',
806
+ category: 'provider',
807
+ },
808
+ {
809
+ name: 'VLLM_API_KEY',
810
+ type: 'string',
811
+ description: 'Optional vLLM API key',
812
+ sensitive: true,
813
+ category: 'provider',
814
+ },
815
+ {
816
+ name: 'VLLM_BASE_URL',
817
+ type: 'string',
818
+ default: 'http://localhost:8000',
819
+ description: 'vLLM OpenAI-compatible server base URL',
820
+ category: 'provider',
821
+ },
822
+ {
823
+ name: 'VLLM_MODEL',
824
+ type: 'string',
825
+ default: 'model',
826
+ description: 'Default vLLM served model id',
827
+ category: 'provider',
828
+ },
829
+ {
830
+ name: 'CODEBUDDY_BASE_URL',
831
+ type: 'string',
832
+ description: 'Custom OpenAI-compatible provider base URL',
833
+ category: 'provider',
834
+ },
835
+ {
836
+ name: 'CODEBUDDY_API_KEY',
837
+ type: 'string',
838
+ description: 'Custom OpenAI-compatible provider API key',
839
+ sensitive: true,
840
+ category: 'provider',
841
+ },
842
+ {
843
+ name: 'CUSTOM_PROVIDER_API_KEY',
844
+ type: 'string',
845
+ description: 'Alias API key for a custom OpenAI-compatible provider',
846
+ sensitive: true,
847
+ category: 'provider',
848
+ },
849
+ {
850
+ name: 'CUSTOM_PROVIDER_BASE_URL',
851
+ type: 'string',
852
+ description: 'Alias base URL for a custom OpenAI-compatible provider',
853
+ category: 'provider',
854
+ },
855
+ {
856
+ name: 'CUSTOM_PROVIDER_MODEL',
857
+ type: 'string',
858
+ description: 'Alias model id for a custom OpenAI-compatible provider',
859
+ category: 'provider',
860
+ },
861
+ {
862
+ name: 'CODEBUDDY_MODEL',
863
+ type: 'string',
864
+ description: 'Custom OpenAI-compatible provider model id',
865
+ category: 'provider',
866
+ },
867
+ providerStringEnv('CODEBUDDY_CHATGPT_OAUTH', 'Presence marker for ChatGPT OAuth credentials'),
868
+ providerStringEnv('LMSTUDIO_API_KEY', 'Optional LM Studio API key', { sensitive: true }),
869
+ providerStringEnv('LM_STUDIO_API_KEY', 'Alias for LMSTUDIO_API_KEY', { sensitive: true }),
870
+ providerStringEnv('LMSTUDIO_BASE_URL', 'Alias for LMSTUDIO_HOST'),
871
+ providerStringEnv('LM_STUDIO_BASE_URL', 'Alias for LM_STUDIO_HOST'),
872
+ providerStringEnv('LM_STUDIO_MODEL', 'Alias for LMSTUDIO_MODEL'),
873
+ providerStringEnv('XAI_BASE_URL', 'Alias for GROK_BASE_URL'),
874
+ providerStringEnv('XAI_MODEL', 'Alias for GROK_MODEL'),
875
+ providerStringEnv('GEMINI_BASE_URL', 'Custom Gemini API endpoint'),
876
+ providerStringEnv('GOOGLE_AI_BASE_URL', 'Alias for GEMINI_BASE_URL'),
877
+ providerStringEnv('GOOGLE_MODEL', 'Alias for GEMINI_MODEL'),
878
+ providerStringEnv('ANTHROPIC_BASE_URL', 'Custom Anthropic API endpoint'),
879
+ providerStringEnv('CLAUDE_MODEL', 'Alias for ANTHROPIC_MODEL'),
880
+ providerStringEnv('MISTRAL_BASE_URL', 'Custom Mistral OpenAI-compatible endpoint'),
881
+ providerStringEnv('GROQ_BASE_URL', 'Custom Groq OpenAI-compatible endpoint'),
882
+ providerStringEnv('TOGETHER_BASE_URL', 'Custom Together AI OpenAI-compatible endpoint'),
883
+ providerStringEnv('FIREWORKS_BASE_URL', 'Custom Fireworks AI OpenAI-compatible endpoint'),
884
+ providerStringEnv('OPENROUTER_BASE_URL', 'Custom OpenRouter endpoint'),
885
+ providerStringEnv('ZAI_BASE_URL', 'Alias for GLM_BASE_URL'),
886
+ providerStringEnv('ZAI_MODEL', 'Alias for GLM_MODEL'),
887
+ providerStringEnv('MOONSHOT_API_KEY', 'Alias API key for Kimi / Moonshot', { sensitive: true }),
888
+ providerStringEnv('MOONSHOT_BASE_URL', 'Alias for KIMI_BASE_URL'),
889
+ providerStringEnv('MOONSHOT_MODEL', 'Alias for KIMI_MODEL'),
890
+ providerStringEnv('KIMI_CN_MODEL', 'Default Kimi China model'),
891
+ providerStringEnv('ARCEE_API_KEY', 'Alias API key for Arcee AI', { sensitive: true }),
892
+ providerStringEnv('ARCEE_BASE_URL', 'Alias for ARCEEAI_BASE_URL'),
893
+ providerStringEnv('ARCEEAI_MODEL', 'Default Arcee AI model'),
894
+ providerStringEnv('ARCEE_MODEL', 'Alias for ARCEEAI_MODEL'),
895
+ providerStringEnv('GMI_MODEL', 'Default GMI Cloud model'),
896
+ providerStringEnv('MINIMAX_MODEL', 'Default MiniMax model'),
897
+ providerStringEnv('MINIMAX_CN_MODEL', 'Default MiniMax China model'),
898
+ providerStringEnv('ALIBABA_API_KEY', 'Alias API key for Alibaba / DashScope', { sensitive: true }),
899
+ providerStringEnv('ALIBABA_BASE_URL', 'Alias for DASHSCOPE_BASE_URL'),
900
+ providerStringEnv('DASHSCOPE_MODEL', 'Default DashScope model'),
901
+ providerStringEnv('ALIBABA_MODEL', 'Alias for DASHSCOPE_MODEL'),
902
+ providerStringEnv('ALIBABA_CODING_PLAN_BASE_URL', 'Custom Alibaba Coding Plan endpoint'),
903
+ providerStringEnv('DASHSCOPE_CODING_BASE_URL', 'Alias for ALIBABA_CODING_PLAN_BASE_URL'),
904
+ providerStringEnv('ALIBABA_CODING_PLAN_MODEL', 'Default Alibaba Coding Plan model'),
905
+ providerStringEnv('DASHSCOPE_CODING_MODEL', 'Alias for ALIBABA_CODING_PLAN_MODEL'),
906
+ providerStringEnv('KILO_API_KEY', 'Alias API key for Kilo Code Gateway', { sensitive: true }),
907
+ providerStringEnv('KILO_BASE_URL', 'Alias for KILOCODE_BASE_URL'),
908
+ providerStringEnv('KILOCODE_MODEL', 'Default Kilo Code Gateway model'),
909
+ providerStringEnv('KILO_MODEL', 'Alias for KILOCODE_MODEL'),
910
+ providerStringEnv('XIAOMI_MODEL', 'Default Xiaomi MiMo model'),
911
+ providerStringEnv('TENCENT_TOKENHUB_API_KEY', 'Alias API key for Tencent TokenHub', { sensitive: true }),
912
+ providerStringEnv('TENCENT_TOKENHUB_BASE_URL', 'Alias for TOKENHUB_BASE_URL'),
913
+ providerStringEnv('TOKENHUB_MODEL', 'Default Tencent TokenHub model'),
914
+ providerStringEnv('TENCENT_TOKENHUB_MODEL', 'Alias for TOKENHUB_MODEL'),
915
+ providerStringEnv('OPENCODE_API_KEY', 'Alias API key for OpenCode Zen', { sensitive: true }),
916
+ providerStringEnv('OPENCODE_ZEN_BASE_URL', 'Custom OpenCode Zen endpoint'),
917
+ providerStringEnv('OPENCODE_BASE_URL', 'Alias for OPENCODE_ZEN_BASE_URL'),
918
+ providerStringEnv('OPENCODE_ZEN_MODEL', 'Default OpenCode Zen model'),
919
+ providerStringEnv('OPENCODE_MODEL', 'Alias for OPENCODE_ZEN_MODEL'),
920
+ providerStringEnv('OPENCODE_GO_BASE_URL', 'Custom OpenCode Go endpoint'),
921
+ providerStringEnv('OPENCODE_GO_MODEL', 'Default OpenCode Go model'),
922
+ providerStringEnv('DEEPSEEK_MODEL', 'Default DeepSeek model'),
923
+ providerStringEnv('HUGGINGFACE_API_KEY', 'Alias API key for Hugging Face', { sensitive: true }),
924
+ providerStringEnv('HUGGINGFACE_BASE_URL', 'Alias for HF_BASE_URL'),
925
+ providerStringEnv('HF_MODEL', 'Default Hugging Face router model'),
926
+ providerStringEnv('HUGGINGFACE_MODEL', 'Alias for HF_MODEL'),
927
+ providerStringEnv('NVIDIA_NIM_BASE_URL', 'Alias for NVIDIA_BASE_URL'),
928
+ providerStringEnv('NVIDIA_MODEL', 'Default NVIDIA NIM model'),
929
+ providerStringEnv('NVIDIA_NIM_MODEL', 'Alias for NVIDIA_MODEL'),
930
+ providerStringEnv('OLLAMA_CLOUD_MODEL', 'Default Ollama Cloud model'),
931
+ providerStringEnv('STEP_API_KEY', 'Alias API key for StepFun', { sensitive: true }),
932
+ providerStringEnv('STEP_BASE_URL', 'Alias for STEPFUN_BASE_URL'),
933
+ providerStringEnv('STEPFUN_MODEL', 'Default StepFun model'),
934
+ providerStringEnv('STEP_MODEL', 'Alias for STEPFUN_MODEL'),
935
+ providerStringEnv('AZURE_OPENAI_ENDPOINT', 'Azure OpenAI resource endpoint'),
936
+ providerStringEnv('AZURE_OPENAI_API_KEY', 'Azure OpenAI API key', { sensitive: true }),
937
+ providerStringEnv('AZURE_OPENAI_AD_TOKEN', 'Azure OpenAI Azure AD bearer token', { sensitive: true }),
938
+ providerStringEnv('AZURE_OPENAI_API_VERSION', 'Azure OpenAI API version', { default: '2024-02-01' }),
939
+ providerStringEnv('AZURE_OPENAI_DEPLOYMENT', 'Azure OpenAI deployment name'),
940
+ providerStringEnv('AZURE_OPENAI_MODEL', 'Azure OpenAI model/deployment alias'),
941
+ providerStringEnv('AWS_BEDROCK_REGION', 'AWS Bedrock region'),
942
+ providerStringEnv('AWS_REGION', 'AWS region alias for Bedrock'),
943
+ providerStringEnv('AWS_ACCESS_KEY_ID', 'AWS access key id for Bedrock', { sensitive: true }),
944
+ providerStringEnv('AWS_SECRET_ACCESS_KEY', 'AWS secret access key for Bedrock', { sensitive: true }),
945
+ providerStringEnv('AWS_SESSION_TOKEN', 'AWS session token for Bedrock', { sensitive: true }),
946
+ providerStringEnv('AWS_BEDROCK_MODEL', 'AWS Bedrock model id'),
947
+ providerStringEnv('BEDROCK_MODEL', 'Alias for AWS_BEDROCK_MODEL'),
948
+ providerStringEnv('GITHUB_COPILOT_TOKEN', 'GitHub Copilot token', { sensitive: true }),
949
+ providerStringEnv('COPILOT_GITHUB_TOKEN', 'Alias GitHub Copilot token', { sensitive: true }),
950
+ providerStringEnv('GH_TOKEN', 'GitHub token fallback for Copilot', { sensitive: true }),
951
+ providerStringEnv('COPILOT_MODEL', 'GitHub Copilot model override'),
182
952
  {
183
953
  name: 'ELEVENLABS_API_KEY',
184
954
  type: 'string',