@phuetz/code-buddy 1.1.0 → 1.3.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 (381) hide show
  1. package/README.md +211 -163
  2. package/dist/agent/autonomous/agentic-coding-contract.d.ts +12 -12
  3. package/dist/agent/base-agent.d.ts +4 -0
  4. package/dist/agent/base-agent.js +6 -0
  5. package/dist/agent/codebuddy-agent.d.ts +1 -1
  6. package/dist/agent/codebuddy-agent.js +69 -14
  7. package/dist/agent/execution/agent-executor.js +122 -12
  8. package/dist/agent/execution/tool-dependency-graph.js +7 -0
  9. package/dist/agent/execution/tool-hooks.d.ts +6 -0
  10. package/dist/agent/execution/tool-hooks.js +13 -5
  11. package/dist/agent/execution/tool-selection-strategy.d.ts +11 -2
  12. package/dist/agent/execution/tool-selection-strategy.js +67 -10
  13. package/dist/agent/extended-thinking.d.ts +8 -0
  14. package/dist/agent/extended-thinking.js +27 -0
  15. package/dist/agent/facades/infrastructure-facade.d.ts +9 -2
  16. package/dist/agent/facades/infrastructure-facade.js +15 -6
  17. package/dist/agent/hermes-browser-backends.js +151 -11
  18. package/dist/agent/hermes-claw-migrate.d.ts +59 -0
  19. package/dist/agent/hermes-claw-migrate.js +427 -26
  20. package/dist/agent/hermes-parity-manifest.js +78 -71
  21. package/dist/agent/hermes-runtime-lifecycle.d.ts +67 -0
  22. package/dist/agent/hermes-runtime-lifecycle.js +468 -0
  23. package/dist/agent/middleware/index.d.ts +1 -0
  24. package/dist/agent/middleware/index.js +1 -0
  25. package/dist/agent/middleware/visual-validation-middleware.d.ts +17 -0
  26. package/dist/agent/middleware/visual-validation-middleware.js +67 -0
  27. package/dist/agent/model-benchmark.d.ts +77 -0
  28. package/dist/agent/model-benchmark.js +309 -0
  29. package/dist/agent/model-tier.d.ts +14 -0
  30. package/dist/agent/model-tier.js +71 -0
  31. package/dist/agent/multi-agent/agents/orchestrator-agent.js +17 -6
  32. package/dist/agent/multi-agent/multi-agent-system.js +3 -1
  33. package/dist/agent/multi-agent/session-fleet-bridge.d.ts +2 -0
  34. package/dist/agent/multi-agent/session-fleet-bridge.js +9 -1
  35. package/dist/agent/multi-agent/session-tools.js +22 -5
  36. package/dist/agent/reasoning/mcts.js +20 -6
  37. package/dist/agent/self-improvement/authored-artifact-gate.d.ts +18 -0
  38. package/dist/agent/self-improvement/authored-artifact-gate.js +42 -0
  39. package/dist/agent/self-improvement/authored-tool-runtime.d.ts +27 -0
  40. package/dist/agent/self-improvement/authored-tool-runtime.js +57 -0
  41. package/dist/agent/self-improvement/authored-tool-store.d.ts +24 -0
  42. package/dist/agent/self-improvement/authored-tool-store.js +57 -0
  43. package/dist/agent/self-improvement/llm-tool-proposer.d.ts +41 -0
  44. package/dist/agent/self-improvement/llm-tool-proposer.js +136 -0
  45. package/dist/agent/self-improvement/sandbox-scorer.d.ts +17 -0
  46. package/dist/agent/self-improvement/sandbox-scorer.js +43 -0
  47. package/dist/agent/self-improvement/self-knowledge.d.ts +8 -0
  48. package/dist/agent/self-improvement/self-knowledge.js +24 -0
  49. package/dist/agent/self-improvement/skill-benchmark.d.ts +9 -0
  50. package/dist/agent/self-improvement/skill-benchmark.js +22 -0
  51. package/dist/agent/self-improvement/skill-consolidator.d.ts +71 -0
  52. package/dist/agent/self-improvement/skill-consolidator.js +137 -0
  53. package/dist/agent/self-improvement/skill-engine.d.ts +42 -0
  54. package/dist/agent/self-improvement/skill-engine.js +87 -0
  55. package/dist/agent/self-improvement/skill-gate.d.ts +19 -0
  56. package/dist/agent/self-improvement/skill-gate.js +62 -0
  57. package/dist/agent/self-improvement/skill-mutator.d.ts +74 -0
  58. package/dist/agent/self-improvement/skill-mutator.js +223 -0
  59. package/dist/agent/self-improvement/skill-proposer.d.ts +40 -0
  60. package/dist/agent/self-improvement/skill-proposer.js +82 -0
  61. package/dist/agent/self-improvement/skill-types.d.ts +41 -0
  62. package/dist/agent/self-improvement/skill-types.js +13 -0
  63. package/dist/agent/self-improvement/tool-benchmark.d.ts +10 -0
  64. package/dist/agent/self-improvement/tool-benchmark.js +37 -0
  65. package/dist/agent/self-improvement/tool-engine.d.ts +54 -0
  66. package/dist/agent/self-improvement/tool-engine.js +101 -0
  67. package/dist/agent/self-improvement/tool-gate.d.ts +20 -0
  68. package/dist/agent/self-improvement/tool-gate.js +78 -0
  69. package/dist/agent/self-improvement/tool-proposer.d.ts +31 -0
  70. package/dist/agent/self-improvement/tool-proposer.js +34 -0
  71. package/dist/agent/self-improvement/tool-skill-mutator.d.ts +40 -0
  72. package/dist/agent/self-improvement/tool-skill-mutator.js +79 -0
  73. package/dist/agent/self-improvement/tool-types.d.ts +48 -0
  74. package/dist/agent/self-improvement/tool-types.js +9 -0
  75. package/dist/agent/self-improvement/types.d.ts +3 -1
  76. package/dist/agent/session-end-flush.d.ts +6 -1
  77. package/dist/agent/session-end-flush.js +20 -4
  78. package/dist/agent/streaming/streaming-handler.d.ts +7 -0
  79. package/dist/agent/streaming/streaming-handler.js +8 -1
  80. package/dist/agent/tool-executor.js +1 -0
  81. package/dist/agent/tool-handler.d.ts +5 -0
  82. package/dist/agent/tool-handler.js +133 -4
  83. package/dist/browser-automation/browser-operator-executor.js +15 -0
  84. package/dist/browser-automation/browser-use-runner.d.ts +96 -0
  85. package/dist/browser-automation/browser-use-runner.js +492 -0
  86. package/dist/browser-automation/camofox-runner.d.ts +107 -0
  87. package/dist/browser-automation/camofox-runner.js +287 -0
  88. package/dist/channels/dingtalk/index.js +3 -0
  89. package/dist/channels/discord/client.d.ts +9 -0
  90. package/dist/channels/discord/client.js +12 -0
  91. package/dist/channels/feishu/index.d.ts +167 -1
  92. package/dist/channels/feishu/index.js +432 -7
  93. package/dist/channels/gateway-lifecycle.d.ts +132 -0
  94. package/dist/channels/gateway-lifecycle.js +219 -0
  95. package/dist/channels/google-chat/index.d.ts +5 -1
  96. package/dist/channels/google-chat/index.js +5 -1
  97. package/dist/channels/imessage/index.d.ts +14 -0
  98. package/dist/channels/imessage/index.js +64 -17
  99. package/dist/channels/index.d.ts +4 -0
  100. package/dist/channels/index.js +4 -0
  101. package/dist/channels/irc/index.d.ts +73 -3
  102. package/dist/channels/irc/index.js +446 -11
  103. package/dist/channels/line/index.js +3 -0
  104. package/dist/channels/mattermost/index.d.ts +51 -4
  105. package/dist/channels/mattermost/index.js +303 -20
  106. package/dist/channels/nextcloud-talk/index.d.ts +89 -8
  107. package/dist/channels/nextcloud-talk/index.js +367 -16
  108. package/dist/channels/nostr/index.d.ts +121 -1
  109. package/dist/channels/nostr/index.js +396 -8
  110. package/dist/channels/ntfy/index.js +3 -0
  111. package/dist/channels/qq/index.js +3 -0
  112. package/dist/channels/slash-parity.d.ts +117 -0
  113. package/dist/channels/slash-parity.js +185 -0
  114. package/dist/channels/synology-chat/index.js +3 -0
  115. package/dist/channels/teams/index.d.ts +3 -0
  116. package/dist/channels/teams/index.js +3 -0
  117. package/dist/channels/telegram/client.d.ts +9 -0
  118. package/dist/channels/telegram/client.js +12 -0
  119. package/dist/channels/twilio-voice/index.js +3 -0
  120. package/dist/channels/webchat/index.d.ts +7 -1
  121. package/dist/channels/webchat/index.js +7 -1
  122. package/dist/channels/wecom/index.js +3 -0
  123. package/dist/channels/weixin/index.js +3 -0
  124. package/dist/channels/zalo/index.js +3 -0
  125. package/dist/cli/config-loader.js +1 -1
  126. package/dist/codebuddy/client.d.ts +30 -1
  127. package/dist/codebuddy/client.js +167 -20
  128. package/dist/codebuddy/providers/provider-chatgpt-responses.d.ts +5 -0
  129. package/dist/codebuddy/providers/provider-chatgpt-responses.js +7 -1
  130. package/dist/codebuddy/providers/provider-gemini-native.js +1 -1
  131. package/dist/codebuddy/providers/provider-openai-compat.d.ts +5 -0
  132. package/dist/codebuddy/providers/provider-openai-compat.js +82 -2
  133. package/dist/codebuddy/tool-definitions/computer-control-tools.js +32 -2
  134. package/dist/codebuddy/tool-definitions/core-tools.js +3 -3
  135. package/dist/codebuddy/tool-definitions/index.d.ts +2 -1
  136. package/dist/codebuddy/tool-definitions/index.js +2 -1
  137. package/dist/codebuddy/tool-definitions/multimodal-tools.d.ts +1 -0
  138. package/dist/codebuddy/tool-definitions/multimodal-tools.js +44 -1
  139. package/dist/codebuddy/tool-definitions/windows-tools.d.ts +2 -0
  140. package/dist/codebuddy/tool-definitions/windows-tools.js +34 -0
  141. package/dist/codebuddy/tools.d.ts +8 -1
  142. package/dist/codebuddy/tools.js +67 -24
  143. package/dist/commands/cli/hermes-commands.js +108 -0
  144. package/dist/commands/cli/improve-command.js +123 -0
  145. package/dist/commands/cli/native-engine-commands.js +102 -3
  146. package/dist/commands/cli/utility-commands.js +45 -0
  147. package/dist/commands/enhanced-command-handler.js +2 -2
  148. package/dist/commands/goal-cli.d.ts +30 -0
  149. package/dist/commands/goal-cli.js +210 -27
  150. package/dist/commands/handlers/goal-handler.d.ts +9 -2
  151. package/dist/commands/handlers/goal-handler.js +36 -9
  152. package/dist/commands/handlers/infra-handlers.js +36 -0
  153. package/dist/commands/handlers/memory-handlers.js +96 -1
  154. package/dist/commands/handlers/missing-handlers.d.ts +1 -1
  155. package/dist/commands/handlers/missing-handlers.js +26 -3
  156. package/dist/commands/headless-slash.d.ts +2 -0
  157. package/dist/commands/headless-slash.js +12 -0
  158. package/dist/commands/llm-provider-resolution.d.ts +5 -3
  159. package/dist/commands/llm-provider-resolution.js +87 -33
  160. package/dist/commands/ollama.d.ts +25 -0
  161. package/dist/commands/ollama.js +100 -0
  162. package/dist/commands/provider.d.ts +5 -0
  163. package/dist/commands/provider.js +106 -55
  164. package/dist/commands/skills-cli/index.js +123 -0
  165. package/dist/commands/slash/builtin-commands.js +1 -1
  166. package/dist/commands/spec-next.js +2 -1
  167. package/dist/commands/spec-plan.js +5 -16
  168. package/dist/commands/tunnel.d.ts +2 -0
  169. package/dist/commands/tunnel.js +48 -0
  170. package/dist/companion/percepts.js +11 -1
  171. package/dist/config/config-resolver.d.ts +2 -1
  172. package/dist/config/config-resolver.js +54 -41
  173. package/dist/config/constants.d.ts +28 -0
  174. package/dist/config/constants.js +7 -0
  175. package/dist/config/env-schema.js +756 -0
  176. package/dist/config/model-tools.js +4 -4
  177. package/dist/config/toml-config.d.ts +16 -0
  178. package/dist/config/toml-config.js +3 -0
  179. package/dist/context/bootstrap-loader.js +6 -23
  180. package/dist/context/context-manager-v2.js +1 -0
  181. package/dist/context/import-directive-parser.d.ts +4 -0
  182. package/dist/context/import-directive-parser.js +51 -6
  183. package/dist/context/instruction-excludes.d.ts +30 -1
  184. package/dist/context/instruction-excludes.js +71 -1
  185. package/dist/context/jit-context.d.ts +8 -10
  186. package/dist/context/jit-context.js +28 -106
  187. package/dist/context/project-context.d.ts +90 -0
  188. package/dist/context/project-context.js +295 -0
  189. package/dist/daemon/autonomous-daemon.d.ts +1 -1
  190. package/dist/daemon/autonomous-daemon.js +3 -3
  191. package/dist/daemon/autonomous-loop.d.ts +31 -1
  192. package/dist/daemon/autonomous-loop.js +91 -4
  193. package/dist/daemon/colab-goal.js +9 -1
  194. package/dist/daemon/cron-agent-bridge.d.ts +12 -3
  195. package/dist/daemon/cron-agent-bridge.js +25 -9
  196. package/dist/desktop/codebuddy-engine-adapter.d.ts +32 -0
  197. package/dist/desktop/codebuddy-engine-adapter.js +257 -80
  198. package/dist/desktop/engine-adapter.d.ts +14 -0
  199. package/dist/desktop-automation/automation-manager.js +16 -0
  200. package/dist/desktop-automation/omniparser-runner.d.ts +63 -0
  201. package/dist/desktop-automation/omniparser-runner.js +115 -0
  202. package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
  203. package/dist/desktop-automation/smart-snapshot.js +72 -5
  204. package/dist/doctor/index.js +40 -23
  205. package/dist/events/types.d.ts +11 -0
  206. package/dist/fleet/colab-store.js +14 -2
  207. package/dist/fleet/peer-session-bridge.js +50 -12
  208. package/dist/fleet/peer-tool-bridge.js +14 -0
  209. package/dist/goals/goal-decomposer.d.ts +27 -0
  210. package/dist/goals/goal-decomposer.js +293 -0
  211. package/dist/goals/goal-judge-client.d.ts +15 -0
  212. package/dist/goals/goal-judge-client.js +45 -0
  213. package/dist/goals/goal-judge.d.ts +2 -0
  214. package/dist/goals/goal-judge.js +35 -6
  215. package/dist/goals/goal-loop.d.ts +14 -0
  216. package/dist/goals/goal-loop.js +47 -2
  217. package/dist/goals/goal-manager.d.ts +6 -0
  218. package/dist/goals/goal-manager.js +67 -14
  219. package/dist/goals/goal-state.d.ts +13 -0
  220. package/dist/goals/goal-state.js +83 -13
  221. package/dist/goals/goal-store.d.ts +3 -0
  222. package/dist/goals/goal-store.js +31 -15
  223. package/dist/harness/contract.d.ts +28 -28
  224. package/dist/hooks/user-hooks.js +17 -3
  225. package/dist/identity/identity-manager.js +3 -2
  226. package/dist/index.js +481 -26
  227. package/dist/input/text-to-speech.d.ts +2 -6
  228. package/dist/input/text-to-speech.js +2 -27
  229. package/dist/integrations/screenpipe/screenpipe-client.d.ts +10 -0
  230. package/dist/integrations/screenpipe/screenpipe-client.js +12 -2
  231. package/dist/integrations/tailscale.d.ts +13 -0
  232. package/dist/integrations/tailscale.js +87 -34
  233. package/dist/knowledge/workspace-indexer.js +53 -9
  234. package/dist/mcp/client.js +1 -0
  235. package/dist/mcp/mcp-desktop-tools.d.ts +23 -0
  236. package/dist/mcp/mcp-desktop-tools.js +158 -0
  237. package/dist/mcp/mcp-resources.js +2 -3
  238. package/dist/mcp/mcp-server.js +2 -0
  239. package/dist/memory/enhanced-memory.d.ts +10 -0
  240. package/dist/memory/enhanced-memory.js +33 -2
  241. package/dist/memory/index.d.ts +3 -1
  242. package/dist/memory/index.js +4 -1
  243. package/dist/memory/memory-auto-proposer.d.ts +23 -0
  244. package/dist/memory/memory-auto-proposer.js +308 -0
  245. package/dist/memory/memory-candidate-queue.d.ts +92 -0
  246. package/dist/memory/memory-candidate-queue.js +261 -0
  247. package/dist/memory/persistent-memory.d.ts +45 -2
  248. package/dist/memory/persistent-memory.js +236 -40
  249. package/dist/ml/bayesian-qualifier.d.ts +1 -1
  250. package/dist/ml/bayesian-qualifier.js +35 -2
  251. package/dist/openclaw/gateway-bridge.js +5 -0
  252. package/dist/plugins/marketplace.d.ts +1 -0
  253. package/dist/plugins/marketplace.js +7 -0
  254. package/dist/prompts/execution-discipline.d.ts +14 -0
  255. package/dist/prompts/execution-discipline.js +29 -0
  256. package/dist/prompts/variation-injector.js +9 -2
  257. package/dist/protocols/acp/acp-agentic-runner.d.ts +7 -6
  258. package/dist/protocols/acp/acp-agentic-runner.js +115 -18
  259. package/dist/protocols/acp/acp-session-store.d.ts +23 -0
  260. package/dist/protocols/acp/acp-session-store.js +77 -0
  261. package/dist/protocols/acp/acp-stdio-server.d.ts +7 -0
  262. package/dist/protocols/acp/acp-stdio-server.js +71 -16
  263. package/dist/providers/active-llm-registry.d.ts +37 -0
  264. package/dist/providers/active-llm-registry.js +186 -0
  265. package/dist/providers/auxiliary-provider.d.ts +25 -0
  266. package/dist/providers/auxiliary-provider.js +192 -0
  267. package/dist/providers/codex-oauth.d.ts +1 -1
  268. package/dist/providers/codex-oauth.js +27 -4
  269. package/dist/providers/index.d.ts +3 -0
  270. package/dist/providers/index.js +4 -0
  271. package/dist/providers/provider-catalog.d.ts +70 -0
  272. package/dist/providers/provider-catalog.js +738 -0
  273. package/dist/providers/provider-fallback.d.ts +35 -0
  274. package/dist/providers/provider-fallback.js +171 -0
  275. package/dist/providers/xai-oauth.d.ts +128 -0
  276. package/dist/providers/xai-oauth.js +735 -0
  277. package/dist/scheduler/cron-scheduler.d.ts +15 -3
  278. package/dist/scheduler/cron-scheduler.js +53 -7
  279. package/dist/scheduler/script-runner.d.ts +2 -0
  280. package/dist/scheduler/script-runner.js +19 -4
  281. package/dist/scheduler/watchdog-handlers.js +7 -20
  282. package/dist/search/usearch-index.js +7 -2
  283. package/dist/security/tool-policy/tool-groups.js +2 -0
  284. package/dist/sensory/dreaming.d.ts +45 -0
  285. package/dist/sensory/dreaming.js +114 -0
  286. package/dist/sensory/heartbeat-scheduler.d.ts +38 -0
  287. package/dist/sensory/heartbeat-scheduler.js +72 -0
  288. package/dist/sensory/reactions.d.ts +24 -0
  289. package/dist/sensory/reactions.js +31 -0
  290. package/dist/sensory/screen-reaction.d.ts +23 -0
  291. package/dist/sensory/screen-reaction.js +59 -0
  292. package/dist/sensory/sensory-bridge.d.ts +23 -0
  293. package/dist/sensory/sensory-bridge.js +85 -0
  294. package/dist/sensory/sensory-memory.d.ts +20 -0
  295. package/dist/sensory/sensory-memory.js +39 -0
  296. package/dist/sensory/speech-reaction.d.ts +21 -0
  297. package/dist/sensory/speech-reaction.js +83 -0
  298. package/dist/sensory/vision-reaction.d.ts +31 -0
  299. package/dist/sensory/vision-reaction.js +74 -0
  300. package/dist/server/index.js +106 -2
  301. package/dist/server/routes/mobile.d.ts +12 -4
  302. package/dist/server/routes/mobile.js +116 -1
  303. package/dist/server/tls-config.d.ts +35 -0
  304. package/dist/server/tls-config.js +142 -0
  305. package/dist/server/tunnel-manager.d.ts +20 -0
  306. package/dist/server/tunnel-manager.js +58 -0
  307. package/dist/server/websocket/fleet-bridge.js +5 -0
  308. package/dist/services/prompt-builder.d.ts +11 -0
  309. package/dist/services/prompt-builder.js +124 -17
  310. package/dist/shared/engine-types.d.ts +15 -1
  311. package/dist/sidecar/sidecar-bridge.d.ts +1 -0
  312. package/dist/sidecar/sidecar-bridge.js +21 -10
  313. package/dist/skills/parser.js +3 -0
  314. package/dist/skills/skill-importer.d.ts +58 -0
  315. package/dist/skills/skill-importer.js +261 -0
  316. package/dist/skills/skill-sources.d.ts +20 -0
  317. package/dist/skills/skill-sources.js +102 -0
  318. package/dist/skills/types.d.ts +6 -0
  319. package/dist/spec/spec-store.js +8 -1
  320. package/dist/talk-mode/providers/audioreader-tts.d.ts +1 -1
  321. package/dist/talk-mode/providers/audioreader-tts.js +8 -8
  322. package/dist/templates/project-scaffolding.js +3 -2
  323. package/dist/themes/theme-schema.d.ts +10 -10
  324. package/dist/tools/application-profiles.js +38 -0
  325. package/dist/tools/bash/bash-tool.d.ts +1 -0
  326. package/dist/tools/bash/bash-tool.js +16 -2
  327. package/dist/tools/bash/command-validator.js +3 -0
  328. package/dist/tools/bash/rtk-rewrite.d.ts +16 -0
  329. package/dist/tools/bash/rtk-rewrite.js +100 -0
  330. package/dist/tools/bash/streaming-executor.js +14 -1
  331. package/dist/tools/computer-control-tool.d.ts +16 -1
  332. package/dist/tools/computer-control-tool.js +317 -5
  333. package/dist/tools/document-generator.d.ts +14 -0
  334. package/dist/tools/document-generator.js +79 -0
  335. package/dist/tools/execute-code-rpc-invoker.d.ts +26 -2
  336. package/dist/tools/execute-code-rpc-invoker.js +46 -5
  337. package/dist/tools/metadata.js +28 -0
  338. package/dist/tools/office-macro-tool.d.ts +10 -0
  339. package/dist/tools/office-macro-tool.js +93 -0
  340. package/dist/tools/register-tool-handler.d.ts +25 -0
  341. package/dist/tools/register-tool-handler.js +100 -0
  342. package/dist/tools/registry/index.d.ts +2 -1
  343. package/dist/tools/registry/index.js +2 -1
  344. package/dist/tools/registry/memory-tools.d.ts +20 -0
  345. package/dist/tools/registry/memory-tools.js +225 -3
  346. package/dist/tools/registry/multimodal-tools.js +2 -2
  347. package/dist/tools/registry/vision-tools.d.ts +33 -0
  348. package/dist/tools/registry/vision-tools.js +308 -6
  349. package/dist/tools/registry/windows-tools.d.ts +2 -0
  350. package/dist/tools/registry/windows-tools.js +47 -0
  351. package/dist/tools/registry.d.ts +6 -0
  352. package/dist/tools/registry.js +8 -0
  353. package/dist/tools/route-peer-tool.js +14 -0
  354. package/dist/tools/screenshot-tool.js +14 -2
  355. package/dist/tools/text-to-speech-tool.d.ts +1 -1
  356. package/dist/tools/text-to-speech-tool.js +2 -12
  357. package/dist/tools/tool-selector.js +3 -59
  358. package/dist/utils/config-validation/schema.d.ts +40 -7
  359. package/dist/utils/config-validation/schema.js +130 -1
  360. package/dist/utils/cost-tracker.js +21 -1
  361. package/dist/utils/disk-guard.d.ts +180 -0
  362. package/dist/utils/disk-guard.js +404 -0
  363. package/dist/utils/init-project.d.ts +7 -0
  364. package/dist/utils/init-project.js +37 -0
  365. package/dist/utils/interactive-setup.js +35 -2
  366. package/dist/utils/model-utils.js +11 -2
  367. package/dist/utils/output-sanitizer.js +11 -0
  368. package/dist/utils/provider-detector.d.ts +8 -7
  369. package/dist/utils/provider-detector.js +19 -77
  370. package/dist/utils/settings-manager.d.ts +19 -0
  371. package/dist/utils/token-display.d.ts +3 -3
  372. package/dist/utils/token-display.js +22 -4
  373. package/dist/wizard/onboarding.d.ts +39 -0
  374. package/dist/wizard/onboarding.js +433 -21
  375. package/dist/wizard/provider-onboarding.d.ts +8 -23
  376. package/dist/wizard/provider-onboarding.js +39 -158
  377. package/package.json +4 -2
  378. package/dist/plugins/provider-onboarding.d.ts +0 -23
  379. package/dist/plugins/provider-onboarding.js +0 -116
  380. package/dist/utils/kokoro-tts.d.ts +0 -8
  381. package/dist/utils/kokoro-tts.js +0 -67
@@ -5,93 +5,35 @@
5
5
  * a Code Buddy session. Pure function (no side effects beyond stat/read
6
6
  * on the OAuth file) so it's unit-testable.
7
7
  *
8
- * Priority order:
8
+ * Priority order is defined in `src/providers/provider-catalog.ts`:
9
9
  * 0. CODEBUDDY_PROVIDER override (always wins when set + valid)
10
10
  * 1. ChatGPT OAuth credentials present (~/.codebuddy/codex-auth.json)
11
11
  * → explicit "I logged in" act beats ambient env vars
12
- * 2. OLLAMA_HOST → ollama (local, free, unlimited)
13
- * 3. GROK_API_KEY → grok / OpenAI-compat (incl. xAI)
14
- * 4. GEMINI/GOOGLE → gemini
15
- * 5. OPENAI → openai
16
- * 6. ANTHROPIC → anthropic
12
+ * 2. Local providers (Ollama / LM Studio / vLLM)
13
+ * 3. Cloud providers in catalog priority order
17
14
  * else null (no provider available)
18
15
  */
19
16
  import * as fs from 'fs';
20
17
  import * as path from 'path';
21
18
  import * as os from 'os';
19
+ import { resolveProviderFromCatalog, } from '../providers/provider-catalog.js';
22
20
  export function detectProviderFromEnv() {
23
- const override = process.env.CODEBUDDY_PROVIDER?.toLowerCase();
24
- // ChatGPT subscription auth — explicit login wins over ambient
25
- // env-detected providers. User who ran `buddy login chatgpt` recently
26
- // expects subsequent calls to route through their ChatGPT plan, not
27
- // get hijacked by an OLLAMA_HOST set in their shell rc weeks ago.
28
- if (override === 'chatgpt' || !override) {
29
- try {
30
- const authPath = path.join(os.homedir(), '.codebuddy', 'codex-auth.json');
31
- if (fs.existsSync(authPath)) {
32
- const raw = fs.readFileSync(authPath, 'utf-8').trim();
33
- const parsed = raw ? JSON.parse(raw) : null;
34
- if (parsed?.tokens?.access_token) {
35
- return {
36
- provider: 'chatgpt',
37
- apiKey: 'oauth-chatgpt',
38
- baseURL: 'https://chatgpt.com/backend-api/codex',
39
- defaultModel: process.env.CHATGPT_MODEL || 'gpt-5.5',
40
- };
41
- }
42
- }
43
- }
44
- catch {
45
- // Malformed auth file or unexpected — fall through.
46
- }
47
- }
48
- if (override === 'ollama' || (!override && process.env.OLLAMA_HOST)) {
49
- let host = process.env.OLLAMA_HOST || 'http://localhost:11434';
50
- if (!/^https?:\/\//i.test(host))
51
- host = `http://${host}`;
52
- if (!host.endsWith('/v1'))
53
- host = host.replace(/\/+$/, '') + '/v1';
54
- return {
55
- provider: 'ollama',
56
- apiKey: 'ollama',
57
- baseURL: host,
58
- defaultModel: process.env.GROK_MODEL || process.env.OLLAMA_MODEL || 'qwen2.5-coder:7b',
59
- };
60
- }
61
- if ((override === 'grok' || override === 'xai') ||
62
- (!override && (process.env.GROK_API_KEY || process.env.XAI_API_KEY))) {
63
- return {
64
- provider: 'grok',
65
- apiKey: process.env.GROK_API_KEY || process.env.XAI_API_KEY || '',
66
- baseURL: process.env.GROK_BASE_URL || 'https://api.x.ai/v1',
67
- defaultModel: process.env.GROK_MODEL || 'grok-3-fast',
68
- };
69
- }
70
- if ((override === 'gemini' || override === 'google') ||
71
- (!override && (process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY))) {
72
- return {
73
- provider: 'gemini',
74
- apiKey: process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY || '',
75
- baseURL: 'https://generativelanguage.googleapis.com/v1beta',
76
- defaultModel: process.env.GEMINI_MODEL || 'gemini-2.5-flash',
77
- };
78
- }
79
- if (override === 'openai' || (!override && process.env.OPENAI_API_KEY)) {
80
- return {
81
- provider: 'openai',
82
- apiKey: process.env.OPENAI_API_KEY || '',
83
- baseURL: process.env.OPENAI_BASE_URL || 'https://api.openai.com/v1',
84
- defaultModel: process.env.OPENAI_MODEL || 'gpt-4o',
85
- };
21
+ return resolveProviderFromCatalog({
22
+ hasChatGptOAuth: hasChatGptOAuthCredentials(),
23
+ });
24
+ }
25
+ function hasChatGptOAuthCredentials() {
26
+ try {
27
+ const authPath = path.join(os.homedir(), '.codebuddy', 'codex-auth.json');
28
+ if (!fs.existsSync(authPath))
29
+ return false;
30
+ const raw = fs.readFileSync(authPath, 'utf-8').trim();
31
+ const parsed = raw ? JSON.parse(raw) : null;
32
+ return Boolean(parsed?.tokens?.access_token);
86
33
  }
87
- if (override === 'anthropic' || (!override && process.env.ANTHROPIC_API_KEY)) {
88
- return {
89
- provider: 'anthropic',
90
- apiKey: process.env.ANTHROPIC_API_KEY || '',
91
- baseURL: 'https://api.anthropic.com/v1',
92
- defaultModel: process.env.ANTHROPIC_MODEL || 'claude-sonnet-4-20250514',
93
- };
34
+ catch {
35
+ // Malformed auth file or unexpected — fall through to env providers.
36
+ return false;
94
37
  }
95
- return null;
96
38
  }
97
39
  //# sourceMappingURL=provider-detector.js.map
@@ -20,6 +20,25 @@ export interface ProjectSettings {
20
20
  model?: string;
21
21
  mcpServers?: Record<string, unknown>;
22
22
  thinkingLevel?: 'off' | 'minimal' | 'low' | 'medium' | 'high';
23
+ goals?: {
24
+ maxTurns?: number;
25
+ judgeModel?: string;
26
+ plannerModel?: string;
27
+ judgeMaxTokens?: number;
28
+ judgeTimeoutMs?: number;
29
+ };
30
+ /**
31
+ * Project-instruction context-file loading (the AGENTS.md/CLAUDE.md/GEMINI.md
32
+ * hierarchy). All fields optional; omitted keys fall back to defaults in
33
+ * `src/context/instruction-excludes.ts` (`loadContextConfig`).
34
+ */
35
+ context?: {
36
+ fileNames?: string[];
37
+ maxBytes?: number;
38
+ jitMaxBytes?: number;
39
+ importMaxBytes?: number;
40
+ importMaxDepth?: number;
41
+ };
23
42
  }
24
43
  /**
25
44
  * Unified settings manager that handles both user-level and project-level settings
@@ -22,8 +22,8 @@ export declare function formatTokenUsage(usage: TokenUsageInfo): string;
22
22
  * Uses a simple heuristic; for accurate cost tracking use CostTracker.
23
23
  *
24
24
  * Special-case: returns 0 when `model` indicates a ChatGPT subscription
25
- * call (`gpt-5.2`, `gpt-5.5*`, `*-codex*`, `codex-1`). Those are billed against
26
- * the user's flat-fee Plus/Pro plan, NOT per token, so reporting USD
27
- * spend would be misleading. See `cost-tracker.ts:isChatGptSubscriptionModel`.
25
+ * call (`gpt-5.2`, `gpt-5.5*`, `*-codex*`, `codex-1`) or a local Ollama /
26
+ * LM Studio model. Those are not billed per token through Code Buddy, so
27
+ * reporting USD spend would be misleading.
28
28
  */
29
29
  export declare function estimateCost(inputTokens: number, outputTokens: number, inputPricePer1k?: number, outputPricePer1k?: number, model?: string): number;
@@ -42,12 +42,12 @@ function formatCost(cost) {
42
42
  * Uses a simple heuristic; for accurate cost tracking use CostTracker.
43
43
  *
44
44
  * Special-case: returns 0 when `model` indicates a ChatGPT subscription
45
- * call (`gpt-5.2`, `gpt-5.5*`, `*-codex*`, `codex-1`). Those are billed against
46
- * the user's flat-fee Plus/Pro plan, NOT per token, so reporting USD
47
- * spend would be misleading. See `cost-tracker.ts:isChatGptSubscriptionModel`.
45
+ * call (`gpt-5.2`, `gpt-5.5*`, `*-codex*`, `codex-1`) or a local Ollama /
46
+ * LM Studio model. Those are not billed per token through Code Buddy, so
47
+ * reporting USD spend would be misleading.
48
48
  */
49
49
  export function estimateCost(inputTokens, outputTokens, inputPricePer1k = 0.003, outputPricePer1k = 0.015, model) {
50
- if (model && isChatGptSubscriptionModel(model))
50
+ if (model && (isChatGptSubscriptionModel(model) || isLocalNoCostModel(model)))
51
51
  return 0;
52
52
  return (inputTokens / 1000) * inputPricePer1k + (outputTokens / 1000) * outputPricePer1k;
53
53
  }
@@ -60,4 +60,22 @@ function isChatGptSubscriptionModel(model) {
60
60
  m === 'codex-1' ||
61
61
  m.startsWith('codex-mini'));
62
62
  }
63
+ function isLocalNoCostModel(model) {
64
+ const m = model.toLowerCase();
65
+ return (m === 'ollama' ||
66
+ m.startsWith('ollama/') ||
67
+ m === 'lmstudio' ||
68
+ m === 'local-model' ||
69
+ m.startsWith('llama') ||
70
+ m.startsWith('qwen') ||
71
+ m.startsWith('gemma') ||
72
+ m.startsWith('phi') ||
73
+ m.startsWith('codellama') ||
74
+ m.startsWith('deepseek') ||
75
+ m.startsWith('command-r') ||
76
+ m === 'mistral' ||
77
+ m.startsWith('mistral:') ||
78
+ m === 'mixtral' ||
79
+ m.startsWith('mixtral:'));
80
+ }
63
81
  //# sourceMappingURL=token-display.js.map
@@ -4,8 +4,47 @@ export interface OnboardingResult {
4
4
  model: string;
5
5
  ttsEnabled: boolean;
6
6
  ttsProvider?: string;
7
+ authMode?: OnboardingAuthMode;
8
+ recommendedNextCommands?: string[];
9
+ }
10
+ export type OnboardingAuthMode = 'oauth' | 'api-key' | 'local';
11
+ export interface OnboardingProviderGuide {
12
+ id: string;
13
+ label: string;
14
+ authMode: OnboardingAuthMode;
15
+ envVar: string;
16
+ defaultModel: string;
17
+ /** Inference base URL — persisted so the chosen provider resolves on the
18
+ * next run (the provider strategy in client.ts is picked from baseURL). */
19
+ baseURL?: string;
20
+ setupCommand?: string;
21
+ verifyCommand: string;
22
+ help: string;
23
+ }
24
+ export interface OnboardingPhase {
25
+ id: string;
26
+ title: string;
27
+ hermesPhase: string;
28
+ codeBuddyAction: string;
29
+ successCheck: string;
7
30
  }
8
31
  export declare const PROVIDER_ENV_MAP: Record<string, string>;
9
32
  export declare const PROVIDER_DEFAULT_MODEL: Record<string, string>;
33
+ export declare const PROVIDER_AUTH_MODE: Record<string, OnboardingAuthMode>;
34
+ export declare const PROVIDER_GUIDES: OnboardingProviderGuide[];
35
+ export declare const ONBOARDING_PHASES: OnboardingPhase[];
36
+ /**
37
+ * Persist the chosen provider so the session works now AND on the next run:
38
+ * - provider + baseURL + model → `~/.codebuddy/user-settings.json`
39
+ * (loadBaseURL/loadModel read it; the provider strategy is picked from baseURL).
40
+ * - an entered API key → encrypted credential store (never plaintext in settings),
41
+ * plus `process.env[envVar]` so the current process resolves immediately.
42
+ * - ollama → default `OLLAMA_HOST` so auto-detection picks it up.
43
+ * All writes are best-effort; the wizard summary still prints on failure.
44
+ */
45
+ export declare function persistProviderSelection(guide: OnboardingProviderGuide, model: string, apiKey: string): Promise<void>;
10
46
  export declare function writeConfig(configDir: string, result: OnboardingResult): void;
47
+ export declare function getProviderGuide(provider: string): OnboardingProviderGuide;
48
+ export declare function buildRecommendedNextCommands(result: Pick<OnboardingResult, 'provider' | 'model' | 'apiKey'>): string[];
49
+ export declare function renderOnboardingRoadmap(result?: Pick<OnboardingResult, 'provider' | 'model' | 'apiKey'>): string;
11
50
  export declare function runOnboarding(): Promise<OnboardingResult>;