agent-nuvira 1.14.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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +891 -0
  3. package/dist/agent-sdk/src/agent.d.ts +118 -0
  4. package/dist/agent-sdk/src/agent.d.ts.map +1 -0
  5. package/dist/agent-sdk/src/agent.js +88 -0
  6. package/dist/agent-sdk/src/agent.js.map +1 -0
  7. package/dist/agent-sdk/src/index.d.ts +33 -0
  8. package/dist/agent-sdk/src/index.d.ts.map +1 -0
  9. package/dist/agent-sdk/src/index.js +32 -0
  10. package/dist/agent-sdk/src/index.js.map +1 -0
  11. package/dist/agent-sdk/src/register.d.ts +70 -0
  12. package/dist/agent-sdk/src/register.d.ts.map +1 -0
  13. package/dist/agent-sdk/src/register.js +181 -0
  14. package/dist/agent-sdk/src/register.js.map +1 -0
  15. package/dist/agent-sdk/src/scaffold.d.ts +50 -0
  16. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -0
  17. package/dist/agent-sdk/src/scaffold.js +291 -0
  18. package/dist/agent-sdk/src/scaffold.js.map +1 -0
  19. package/dist/agent-sdk/src/testing.d.ts +187 -0
  20. package/dist/agent-sdk/src/testing.d.ts.map +1 -0
  21. package/dist/agent-sdk/src/testing.js +243 -0
  22. package/dist/agent-sdk/src/testing.js.map +1 -0
  23. package/dist/agent-sdk/src/types.d.ts +202 -0
  24. package/dist/agent-sdk/src/types.d.ts.map +1 -0
  25. package/dist/agent-sdk/src/types.js +11 -0
  26. package/dist/agent-sdk/src/types.js.map +1 -0
  27. package/dist/agents/agent.d.ts +132 -0
  28. package/dist/agents/agent.d.ts.map +1 -0
  29. package/dist/agents/agent.js +19 -0
  30. package/dist/agents/agent.js.map +1 -0
  31. package/dist/agents/agents/context-gatherer.d.ts +42 -0
  32. package/dist/agents/agents/context-gatherer.d.ts.map +1 -0
  33. package/dist/agents/agents/context-gatherer.js +366 -0
  34. package/dist/agents/agents/context-gatherer.js.map +1 -0
  35. package/dist/agents/agents/debugger.d.ts +58 -0
  36. package/dist/agents/agents/debugger.d.ts.map +1 -0
  37. package/dist/agents/agents/debugger.js +257 -0
  38. package/dist/agents/agents/debugger.js.map +1 -0
  39. package/dist/agents/agents/git-agent.d.ts +34 -0
  40. package/dist/agents/agents/git-agent.d.ts.map +1 -0
  41. package/dist/agents/agents/git-agent.js +200 -0
  42. package/dist/agents/agents/git-agent.js.map +1 -0
  43. package/dist/agents/agents/github-release-agent.d.ts +65 -0
  44. package/dist/agents/agents/github-release-agent.d.ts.map +1 -0
  45. package/dist/agents/agents/github-release-agent.js +439 -0
  46. package/dist/agents/agents/github-release-agent.js.map +1 -0
  47. package/dist/agents/agents/package-agent.d.ts +33 -0
  48. package/dist/agents/agents/package-agent.d.ts.map +1 -0
  49. package/dist/agents/agents/package-agent.js +233 -0
  50. package/dist/agents/agents/package-agent.js.map +1 -0
  51. package/dist/agents/agents/planner.d.ts +26 -0
  52. package/dist/agents/agents/planner.d.ts.map +1 -0
  53. package/dist/agents/agents/planner.js +222 -0
  54. package/dist/agents/agents/planner.js.map +1 -0
  55. package/dist/agents/agents/reviewer.d.ts +34 -0
  56. package/dist/agents/agents/reviewer.d.ts.map +1 -0
  57. package/dist/agents/agents/reviewer.js +159 -0
  58. package/dist/agents/agents/reviewer.js.map +1 -0
  59. package/dist/agents/agents/runner.d.ts +73 -0
  60. package/dist/agents/agents/runner.d.ts.map +1 -0
  61. package/dist/agents/agents/runner.js +299 -0
  62. package/dist/agents/agents/runner.js.map +1 -0
  63. package/dist/agents/agents/security-agent.d.ts +33 -0
  64. package/dist/agents/agents/security-agent.d.ts.map +1 -0
  65. package/dist/agents/agents/security-agent.js +184 -0
  66. package/dist/agents/agents/security-agent.js.map +1 -0
  67. package/dist/agents/agents/tester.d.ts +96 -0
  68. package/dist/agents/agents/tester.d.ts.map +1 -0
  69. package/dist/agents/agents/tester.js +410 -0
  70. package/dist/agents/agents/tester.js.map +1 -0
  71. package/dist/agents/agents/writer.d.ts +51 -0
  72. package/dist/agents/agents/writer.d.ts.map +1 -0
  73. package/dist/agents/agents/writer.js +384 -0
  74. package/dist/agents/agents/writer.js.map +1 -0
  75. package/dist/agents/context-vault.d.ts +49 -0
  76. package/dist/agents/context-vault.d.ts.map +1 -0
  77. package/dist/agents/context-vault.js +134 -0
  78. package/dist/agents/context-vault.js.map +1 -0
  79. package/dist/agents/orchestrator.d.ts +97 -0
  80. package/dist/agents/orchestrator.d.ts.map +1 -0
  81. package/dist/agents/orchestrator.js +696 -0
  82. package/dist/agents/orchestrator.js.map +1 -0
  83. package/dist/agents/utils/file-tree.d.ts +28 -0
  84. package/dist/agents/utils/file-tree.d.ts.map +1 -0
  85. package/dist/agents/utils/file-tree.js +93 -0
  86. package/dist/agents/utils/file-tree.js.map +1 -0
  87. package/dist/cli/agent.d.ts +25 -0
  88. package/dist/cli/agent.d.ts.map +1 -0
  89. package/dist/cli/agent.js +374 -0
  90. package/dist/cli/agent.js.map +1 -0
  91. package/dist/cli/benchmark.d.ts +24 -0
  92. package/dist/cli/benchmark.d.ts.map +1 -0
  93. package/dist/cli/benchmark.js +235 -0
  94. package/dist/cli/benchmark.js.map +1 -0
  95. package/dist/cli/cache.d.ts +12 -0
  96. package/dist/cli/cache.d.ts.map +1 -0
  97. package/dist/cli/cache.js +58 -0
  98. package/dist/cli/cache.js.map +1 -0
  99. package/dist/cli/chat.d.ts +37 -0
  100. package/dist/cli/chat.d.ts.map +1 -0
  101. package/dist/cli/chat.js +393 -0
  102. package/dist/cli/chat.js.map +1 -0
  103. package/dist/cli/commands.d.ts +24 -0
  104. package/dist/cli/commands.d.ts.map +1 -0
  105. package/dist/cli/commands.js +18 -0
  106. package/dist/cli/commands.js.map +1 -0
  107. package/dist/cli/config.d.ts +19 -0
  108. package/dist/cli/config.d.ts.map +1 -0
  109. package/dist/cli/config.js +162 -0
  110. package/dist/cli/config.js.map +1 -0
  111. package/dist/cli/dashboard.d.ts +34 -0
  112. package/dist/cli/dashboard.d.ts.map +1 -0
  113. package/dist/cli/dashboard.js +126 -0
  114. package/dist/cli/dashboard.js.map +1 -0
  115. package/dist/cli/doctor.d.ts +68 -0
  116. package/dist/cli/doctor.d.ts.map +1 -0
  117. package/dist/cli/doctor.js +585 -0
  118. package/dist/cli/doctor.js.map +1 -0
  119. package/dist/cli/edit.d.ts +11 -0
  120. package/dist/cli/edit.d.ts.map +1 -0
  121. package/dist/cli/edit.js +86 -0
  122. package/dist/cli/edit.js.map +1 -0
  123. package/dist/cli/execute.d.ts +25 -0
  124. package/dist/cli/execute.d.ts.map +1 -0
  125. package/dist/cli/execute.js +186 -0
  126. package/dist/cli/execute.js.map +1 -0
  127. package/dist/cli/federation.d.ts +31 -0
  128. package/dist/cli/federation.d.ts.map +1 -0
  129. package/dist/cli/federation.js +387 -0
  130. package/dist/cli/federation.js.map +1 -0
  131. package/dist/cli/history.d.ts +22 -0
  132. package/dist/cli/history.d.ts.map +1 -0
  133. package/dist/cli/history.js +140 -0
  134. package/dist/cli/history.js.map +1 -0
  135. package/dist/cli/init.d.ts +49 -0
  136. package/dist/cli/init.d.ts.map +1 -0
  137. package/dist/cli/init.js +423 -0
  138. package/dist/cli/init.js.map +1 -0
  139. package/dist/cli/learn.d.ts +31 -0
  140. package/dist/cli/learn.d.ts.map +1 -0
  141. package/dist/cli/learn.js +320 -0
  142. package/dist/cli/learn.js.map +1 -0
  143. package/dist/cli/memory.d.ts +38 -0
  144. package/dist/cli/memory.d.ts.map +1 -0
  145. package/dist/cli/memory.js +295 -0
  146. package/dist/cli/memory.js.map +1 -0
  147. package/dist/cli/model-picker.d.ts +18 -0
  148. package/dist/cli/model-picker.d.ts.map +1 -0
  149. package/dist/cli/model-picker.js +225 -0
  150. package/dist/cli/model-picker.js.map +1 -0
  151. package/dist/cli/models.d.ts +11 -0
  152. package/dist/cli/models.d.ts.map +1 -0
  153. package/dist/cli/models.js +132 -0
  154. package/dist/cli/models.js.map +1 -0
  155. package/dist/cli/plan.d.ts +11 -0
  156. package/dist/cli/plan.d.ts.map +1 -0
  157. package/dist/cli/plan.js +94 -0
  158. package/dist/cli/plan.js.map +1 -0
  159. package/dist/cli/plugins.d.ts +15 -0
  160. package/dist/cli/plugins.d.ts.map +1 -0
  161. package/dist/cli/plugins.js +123 -0
  162. package/dist/cli/plugins.js.map +1 -0
  163. package/dist/cli/router.d.ts +20 -0
  164. package/dist/cli/router.d.ts.map +1 -0
  165. package/dist/cli/router.js +142 -0
  166. package/dist/cli/router.js.map +1 -0
  167. package/dist/cli/run.d.ts +22 -0
  168. package/dist/cli/run.d.ts.map +1 -0
  169. package/dist/cli/run.js +110 -0
  170. package/dist/cli/run.js.map +1 -0
  171. package/dist/cli/sandbox.d.ts +27 -0
  172. package/dist/cli/sandbox.d.ts.map +1 -0
  173. package/dist/cli/sandbox.js +264 -0
  174. package/dist/cli/sandbox.js.map +1 -0
  175. package/dist/cli/sdk.d.ts +27 -0
  176. package/dist/cli/sdk.d.ts.map +1 -0
  177. package/dist/cli/sdk.js +204 -0
  178. package/dist/cli/sdk.js.map +1 -0
  179. package/dist/cli/stats.d.ts +18 -0
  180. package/dist/cli/stats.d.ts.map +1 -0
  181. package/dist/cli/stats.js +78 -0
  182. package/dist/cli/stats.js.map +1 -0
  183. package/dist/cli/team.d.ts +42 -0
  184. package/dist/cli/team.d.ts.map +1 -0
  185. package/dist/cli/team.js +473 -0
  186. package/dist/cli/team.js.map +1 -0
  187. package/dist/cli/workflow.d.ts +27 -0
  188. package/dist/cli/workflow.d.ts.map +1 -0
  189. package/dist/cli/workflow.js +347 -0
  190. package/dist/cli/workflow.js.map +1 -0
  191. package/dist/config/manager.d.ts +37 -0
  192. package/dist/config/manager.d.ts.map +1 -0
  193. package/dist/config/manager.js +147 -0
  194. package/dist/config/manager.js.map +1 -0
  195. package/dist/config/types.d.ts +53 -0
  196. package/dist/config/types.d.ts.map +1 -0
  197. package/dist/config/types.js +2 -0
  198. package/dist/config/types.js.map +1 -0
  199. package/dist/context/cache.d.ts +27 -0
  200. package/dist/context/cache.d.ts.map +1 -0
  201. package/dist/context/cache.js +116 -0
  202. package/dist/context/cache.js.map +1 -0
  203. package/dist/context/history.d.ts +87 -0
  204. package/dist/context/history.d.ts.map +1 -0
  205. package/dist/context/history.js +249 -0
  206. package/dist/context/history.js.map +1 -0
  207. package/dist/context/parser.d.ts +61 -0
  208. package/dist/context/parser.d.ts.map +1 -0
  209. package/dist/context/parser.js +194 -0
  210. package/dist/context/parser.js.map +1 -0
  211. package/dist/federation/client.d.ts +49 -0
  212. package/dist/federation/client.d.ts.map +1 -0
  213. package/dist/federation/client.js +239 -0
  214. package/dist/federation/client.js.map +1 -0
  215. package/dist/federation/protocol.d.ts +155 -0
  216. package/dist/federation/protocol.d.ts.map +1 -0
  217. package/dist/federation/protocol.js +57 -0
  218. package/dist/federation/protocol.js.map +1 -0
  219. package/dist/federation/server.d.ts +25 -0
  220. package/dist/federation/server.d.ts.map +1 -0
  221. package/dist/federation/server.js +401 -0
  222. package/dist/federation/server.js.map +1 -0
  223. package/dist/index.d.ts +67 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +93 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/inference/factory.d.ts +20 -0
  228. package/dist/inference/factory.d.ts.map +1 -0
  229. package/dist/inference/factory.js +46 -0
  230. package/dist/inference/factory.js.map +1 -0
  231. package/dist/inference/gemini-adapter.d.ts +17 -0
  232. package/dist/inference/gemini-adapter.d.ts.map +1 -0
  233. package/dist/inference/gemini-adapter.js +176 -0
  234. package/dist/inference/gemini-adapter.js.map +1 -0
  235. package/dist/inference/groq-adapter.d.ts +17 -0
  236. package/dist/inference/groq-adapter.d.ts.map +1 -0
  237. package/dist/inference/groq-adapter.js +103 -0
  238. package/dist/inference/groq-adapter.js.map +1 -0
  239. package/dist/inference/interface.d.ts +49 -0
  240. package/dist/inference/interface.d.ts.map +1 -0
  241. package/dist/inference/interface.js +2 -0
  242. package/dist/inference/interface.js.map +1 -0
  243. package/dist/inference/local-adapter.d.ts +35 -0
  244. package/dist/inference/local-adapter.d.ts.map +1 -0
  245. package/dist/inference/local-adapter.js +311 -0
  246. package/dist/inference/local-adapter.js.map +1 -0
  247. package/dist/inference/model-catalog.d.ts +53 -0
  248. package/dist/inference/model-catalog.d.ts.map +1 -0
  249. package/dist/inference/model-catalog.js +306 -0
  250. package/dist/inference/model-catalog.js.map +1 -0
  251. package/dist/inference/nim-adapter.d.ts +17 -0
  252. package/dist/inference/nim-adapter.d.ts.map +1 -0
  253. package/dist/inference/nim-adapter.js +103 -0
  254. package/dist/inference/nim-adapter.js.map +1 -0
  255. package/dist/inference/openrouter-adapter.d.ts +17 -0
  256. package/dist/inference/openrouter-adapter.d.ts.map +1 -0
  257. package/dist/inference/openrouter-adapter.js +105 -0
  258. package/dist/inference/openrouter-adapter.js.map +1 -0
  259. package/dist/inference/sse.d.ts +20 -0
  260. package/dist/inference/sse.d.ts.map +1 -0
  261. package/dist/inference/sse.js +91 -0
  262. package/dist/inference/sse.js.map +1 -0
  263. package/dist/learning/agent-stats.d.ts +109 -0
  264. package/dist/learning/agent-stats.d.ts.map +1 -0
  265. package/dist/learning/agent-stats.js +240 -0
  266. package/dist/learning/agent-stats.js.map +1 -0
  267. package/dist/learning/benchmark.d.ts +161 -0
  268. package/dist/learning/benchmark.d.ts.map +1 -0
  269. package/dist/learning/benchmark.js +589 -0
  270. package/dist/learning/benchmark.js.map +1 -0
  271. package/dist/learning/cost-tracker.d.ts +101 -0
  272. package/dist/learning/cost-tracker.d.ts.map +1 -0
  273. package/dist/learning/cost-tracker.js +224 -0
  274. package/dist/learning/cost-tracker.js.map +1 -0
  275. package/dist/learning/feedback.d.ts +88 -0
  276. package/dist/learning/feedback.d.ts.map +1 -0
  277. package/dist/learning/feedback.js +169 -0
  278. package/dist/learning/feedback.js.map +1 -0
  279. package/dist/learning/hybrid-router.d.ts +201 -0
  280. package/dist/learning/hybrid-router.d.ts.map +1 -0
  281. package/dist/learning/hybrid-router.js +450 -0
  282. package/dist/learning/hybrid-router.js.map +1 -0
  283. package/dist/learning/model-compare.d.ts +76 -0
  284. package/dist/learning/model-compare.d.ts.map +1 -0
  285. package/dist/learning/model-compare.js +252 -0
  286. package/dist/learning/model-compare.js.map +1 -0
  287. package/dist/learning/model-router.d.ts +68 -0
  288. package/dist/learning/model-router.d.ts.map +1 -0
  289. package/dist/learning/model-router.js +140 -0
  290. package/dist/learning/model-router.js.map +1 -0
  291. package/dist/learning/pattern-extractor.d.ts +99 -0
  292. package/dist/learning/pattern-extractor.d.ts.map +1 -0
  293. package/dist/learning/pattern-extractor.js +310 -0
  294. package/dist/learning/pattern-extractor.js.map +1 -0
  295. package/dist/learning/scorer.d.ts +51 -0
  296. package/dist/learning/scorer.d.ts.map +1 -0
  297. package/dist/learning/scorer.js +64 -0
  298. package/dist/learning/scorer.js.map +1 -0
  299. package/dist/learning/self-improver.d.ts +48 -0
  300. package/dist/learning/self-improver.d.ts.map +1 -0
  301. package/dist/learning/self-improver.js +161 -0
  302. package/dist/learning/self-improver.js.map +1 -0
  303. package/dist/memory/embedder.d.ts +65 -0
  304. package/dist/memory/embedder.d.ts.map +1 -0
  305. package/dist/memory/embedder.js +424 -0
  306. package/dist/memory/embedder.js.map +1 -0
  307. package/dist/memory/memory-integration.d.ts +56 -0
  308. package/dist/memory/memory-integration.d.ts.map +1 -0
  309. package/dist/memory/memory-integration.js +95 -0
  310. package/dist/memory/memory-integration.js.map +1 -0
  311. package/dist/memory/trajectory-store.d.ts +149 -0
  312. package/dist/memory/trajectory-store.d.ts.map +1 -0
  313. package/dist/memory/trajectory-store.js +476 -0
  314. package/dist/memory/trajectory-store.js.map +1 -0
  315. package/dist/memory/vector-store.d.ts +78 -0
  316. package/dist/memory/vector-store.d.ts.map +1 -0
  317. package/dist/memory/vector-store.js +186 -0
  318. package/dist/memory/vector-store.js.map +1 -0
  319. package/dist/plugins/agent-plugin.d.ts +73 -0
  320. package/dist/plugins/agent-plugin.d.ts.map +1 -0
  321. package/dist/plugins/agent-plugin.js +199 -0
  322. package/dist/plugins/agent-plugin.js.map +1 -0
  323. package/dist/plugins/registry.d.ts +61 -0
  324. package/dist/plugins/registry.d.ts.map +1 -0
  325. package/dist/plugins/registry.js +67 -0
  326. package/dist/plugins/registry.js.map +1 -0
  327. package/dist/sandbox/images.d.ts +31 -0
  328. package/dist/sandbox/images.d.ts.map +1 -0
  329. package/dist/sandbox/images.js +129 -0
  330. package/dist/sandbox/images.js.map +1 -0
  331. package/dist/sandbox/manager.d.ts +134 -0
  332. package/dist/sandbox/manager.d.ts.map +1 -0
  333. package/dist/sandbox/manager.js +470 -0
  334. package/dist/sandbox/manager.js.map +1 -0
  335. package/dist/sandbox/types.d.ts +113 -0
  336. package/dist/sandbox/types.d.ts.map +1 -0
  337. package/dist/sandbox/types.js +107 -0
  338. package/dist/sandbox/types.js.map +1 -0
  339. package/dist/security/scanner.d.ts +53 -0
  340. package/dist/security/scanner.d.ts.map +1 -0
  341. package/dist/security/scanner.js +271 -0
  342. package/dist/security/scanner.js.map +1 -0
  343. package/dist/team/config.d.ts +50 -0
  344. package/dist/team/config.d.ts.map +1 -0
  345. package/dist/team/config.js +108 -0
  346. package/dist/team/config.js.map +1 -0
  347. package/dist/team/memory.d.ts +63 -0
  348. package/dist/team/memory.d.ts.map +1 -0
  349. package/dist/team/memory.js +282 -0
  350. package/dist/team/memory.js.map +1 -0
  351. package/dist/team/review.d.ts +123 -0
  352. package/dist/team/review.d.ts.map +1 -0
  353. package/dist/team/review.js +293 -0
  354. package/dist/team/review.js.map +1 -0
  355. package/dist/utils/env.d.ts +19 -0
  356. package/dist/utils/env.d.ts.map +1 -0
  357. package/dist/utils/env.js +250 -0
  358. package/dist/utils/env.js.map +1 -0
  359. package/dist/utils/logger.d.ts +11 -0
  360. package/dist/utils/logger.d.ts.map +1 -0
  361. package/dist/utils/logger.js +45 -0
  362. package/dist/utils/logger.js.map +1 -0
  363. package/dist/web-dashboard/server.d.ts +59 -0
  364. package/dist/web-dashboard/server.d.ts.map +1 -0
  365. package/dist/web-dashboard/server.js +418 -0
  366. package/dist/web-dashboard/server.js.map +1 -0
  367. package/dist/workflow/registry.d.ts +127 -0
  368. package/dist/workflow/registry.d.ts.map +1 -0
  369. package/dist/workflow/registry.js +482 -0
  370. package/dist/workflow/registry.js.map +1 -0
  371. package/dist/workflow/templates.d.ts +93 -0
  372. package/dist/workflow/templates.d.ts.map +1 -0
  373. package/dist/workflow/templates.js +481 -0
  374. package/dist/workflow/templates.js.map +1 -0
  375. package/package.json +78 -0
  376. package/src/web-dashboard/public/assets/index-B08nDkSB.css +1 -0
  377. package/src/web-dashboard/public/assets/index-BKL8YOFD.js +135 -0
  378. package/src/web-dashboard/public/assets/index-BKL8YOFD.js.map +1 -0
  379. package/src/web-dashboard/public/index.html +13 -0
@@ -0,0 +1,132 @@
1
+ import { Command } from 'commander';
2
+ import ora from 'ora';
3
+ import { BaseCommand } from './commands.js';
4
+ import { resolveProvider } from './router.js';
5
+ import { logger } from '../utils/logger.js';
6
+ /**
7
+ * Models command — list available models from providers
8
+ * agent-baba-d models [--provider nim]
9
+ */
10
+ export class ModelsCommand extends BaseCommand {
11
+ create() {
12
+ const command = new Command('models')
13
+ .description('List available models from inference providers')
14
+ .option('-p, --provider <provider>', 'Only show models from this provider (nim, gemini, openrouter, groq, local)')
15
+ .option('-s, --search <keyword>', 'Search/filter models by keyword')
16
+ .option('--all', 'Show all models (including unconfigured providers)', false)
17
+ .option('--verify', 'Verify API keys and show configuration status for all providers', false)
18
+ .action(async (options) => {
19
+ await this.execute(options || {});
20
+ });
21
+ return command;
22
+ }
23
+ async execute(options) {
24
+ const providersToCheck = options?.provider
25
+ ? [options.provider]
26
+ : ['nim', 'gemini', 'openrouter', 'groq', 'local'];
27
+ // If --verify, show API key/configuration status and then list models
28
+ if (options?.verify) {
29
+ console.log();
30
+ logger.highlight('🔑 Provider Configuration Status\n');
31
+ for (const providerType of providersToCheck) {
32
+ const { provider } = resolveProvider(this.configManager, providerType);
33
+ const available = await provider.isAvailable();
34
+ const config = this.configManager.getProviderConfig(providerType).config;
35
+ const hasKey = !!config.apiKey;
36
+ const keyPreview = hasKey
37
+ ? `${config.apiKey.slice(0, 8)}...${config.apiKey.slice(-4)}`
38
+ : 'Not set';
39
+ if (available) {
40
+ logger.success(` ✅ ${provider.name}`);
41
+ }
42
+ else {
43
+ logger.info(` ⛔ ${provider.name}`);
44
+ }
45
+ console.log(` API Key: ${keyPreview}`);
46
+ console.log(` Model: ${config.model || 'default'}`);
47
+ console.log();
48
+ }
49
+ }
50
+ const allResults = [];
51
+ for (const providerType of providersToCheck) {
52
+ const { provider } = resolveProvider(this.configManager, providerType);
53
+ const available = await provider.isAvailable();
54
+ if (!available && !options?.all) {
55
+ logger.debug(`${provider.name} not configured — skipping`);
56
+ continue;
57
+ }
58
+ const s = ora(`Fetching models from ${provider.name}...`).start();
59
+ try {
60
+ const models = await provider.listModels();
61
+ s.stop();
62
+ if (models.length === 0) {
63
+ if (available) {
64
+ logger.info(`${provider.name}: No models found or API not reachable`);
65
+ }
66
+ else {
67
+ logger.info(`${provider.name}: Not configured`);
68
+ }
69
+ continue;
70
+ }
71
+ for (const model of models) {
72
+ allResults.push({
73
+ provider: provider.name,
74
+ name: model.name,
75
+ id: model.id,
76
+ owner: model.owner,
77
+ description: model.description,
78
+ });
79
+ }
80
+ logger.success(`${provider.name}: ${models.length} models found`);
81
+ }
82
+ catch (err) {
83
+ s.stop();
84
+ logger.error(`${provider.name}: Failed to fetch models — ${String(err)}`);
85
+ }
86
+ }
87
+ // Filter by search keyword if provided
88
+ const filtered = options?.search
89
+ ? allResults.filter((m) => m.name.toLowerCase().includes(options.search.toLowerCase()) ||
90
+ m.id.toLowerCase().includes(options.search.toLowerCase()) ||
91
+ (m.owner || '').toLowerCase().includes(options.search.toLowerCase()))
92
+ : allResults;
93
+ if (filtered.length === 0) {
94
+ if (options?.search) {
95
+ logger.info(`No models found matching "${options.search}"`);
96
+ }
97
+ else {
98
+ logger.info('No models found. Configure a provider first with: agent-baba-d config set');
99
+ }
100
+ return;
101
+ }
102
+ // Display results
103
+ console.log(`\n${'='.repeat(60)}`);
104
+ logger.highlight(`📋 Available Models (${filtered.length})`);
105
+ console.log(`${'='.repeat(60)}`);
106
+ const grouped = {};
107
+ for (const m of filtered) {
108
+ if (!grouped[m.provider])
109
+ grouped[m.provider] = [];
110
+ grouped[m.provider].push(m);
111
+ }
112
+ for (const [providerName, models] of Object.entries(grouped)) {
113
+ console.log(`\n${providerName}:`);
114
+ console.log('-'.repeat(40));
115
+ for (const m of models.slice(0, 30)) { // show max 30 per provider
116
+ const owner = m.owner ? ` [${m.owner}]` : '';
117
+ const desc = m.description ? ` — ${m.description.slice(0, 60)}` : '';
118
+ console.log(` ${m.name}${owner}${desc}`);
119
+ }
120
+ if (models.length > 30) {
121
+ console.log(` ... and ${models.length - 30} more`);
122
+ }
123
+ }
124
+ console.log(`\n${'='.repeat(60)}`);
125
+ if (allResults.length > 0) {
126
+ logger.info('\nUse a model by specifying it with --model:');
127
+ console.log(' agent-baba-d chat --provider nim --model <model-id>');
128
+ console.log(' agent-baba-d edit file.js --provider openrouter --model <model-id>');
129
+ }
130
+ }
131
+ }
132
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/cli/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Command } from 'commander';
2
+ import { BaseCommand } from './commands.js';
3
+ /**
4
+ * Plan command — generate implementation plans for code changes
5
+ * buff plan <directory> [--provider openrouter] [--task "add user auth"]
6
+ */
7
+ export declare class PlanCommand extends BaseCommand {
8
+ create(): Command;
9
+ private execute;
10
+ }
11
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C;;;GAGG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,MAAM,IAAI,OAAO;YAeH,OAAO;CA6EtB"}
@@ -0,0 +1,94 @@
1
+ import { Command } from 'commander';
2
+ import { existsSync, statSync } from 'node:fs';
3
+ import ora from 'ora';
4
+ import { BaseCommand } from './commands.js';
5
+ import { ContextParser } from '../context/parser.js';
6
+ import { logger } from '../utils/logger.js';
7
+ /**
8
+ * Plan command — generate implementation plans for code changes
9
+ * buff plan <directory> [--provider openrouter] [--task "add user auth"]
10
+ */
11
+ export class PlanCommand extends BaseCommand {
12
+ create() {
13
+ const command = new Command('plan')
14
+ .description('Generate an implementation plan for a codebase task')
15
+ .argument('[target]', 'File or directory to plan for', '.')
16
+ .option('-t, --task <text>', 'Description of the task to plan')
17
+ .option('-p, --provider <provider>', 'Inference provider')
18
+ .option('-m, --model <model>', 'Model to use')
19
+ .option('-v, --verbose', 'Show full context being sent to the model')
20
+ .action(async (target, options) => {
21
+ await this.execute(target, options || {});
22
+ });
23
+ return command;
24
+ }
25
+ async execute(target, options) {
26
+ const { type, provider } = await this.getProvider(options || {});
27
+ const available = await provider.isAvailable();
28
+ if (!available) {
29
+ logger.error(`${provider.name} is not available. Check your configuration.`);
30
+ return;
31
+ }
32
+ const task = options?.task || 'Analyze the codebase and suggest improvements';
33
+ const parser = new ContextParser({
34
+ maxTokens: 4096,
35
+ priorityPatterns: ['package.json', 'tsconfig.json', 'index.ts', 'main.ts', 'README.md'],
36
+ });
37
+ let contextStr;
38
+ const spinner = ora('Analyzing codebase...').start();
39
+ try {
40
+ if (existsSync(target) && statSync(target).isDirectory()) {
41
+ const context = await parser.parseFromDirectory(target);
42
+ contextStr = ContextParser.formatContext(context);
43
+ }
44
+ else if (existsSync(target)) {
45
+ const context = parser.parseFromFiles([target]);
46
+ contextStr = ContextParser.formatContext(context);
47
+ }
48
+ else {
49
+ spinner.stop();
50
+ logger.error(`Target not found: ${target}`);
51
+ return;
52
+ }
53
+ if (options?.verbose) {
54
+ spinner.stop();
55
+ logger.highlight('\n--- Context Sent to Model ---\n');
56
+ console.log(contextStr.slice(0, 2000) + (contextStr.length > 2000 ? '\n\n[...truncated...]' : ''));
57
+ logger.highlight('\n--- End Context ---\n');
58
+ spinner.start('Generating plan...');
59
+ }
60
+ const prompt = `You are a senior software engineer. Given the following codebase context, create a detailed implementation plan for this task:
61
+
62
+ ## Task
63
+ ${task}
64
+
65
+ ## Codebase Context
66
+ ${contextStr}
67
+
68
+ ## Plan Requirements
69
+ Please provide:
70
+ 1. **Summary** — Brief overview of the task
71
+ 2. **Files to Modify** — List each file with specific changes needed
72
+ 3. **Architecture Changes** — Any new files, modules, or structural changes
73
+ 4. **Implementation Steps** — Ordered step-by-step guide
74
+ 5. **Potential Risks** — Edge cases, breaking changes, or considerations
75
+ 6. **Testing Strategy** — How to verify the changes work
76
+
77
+ Use clear markdown formatting.`;
78
+ spinner.text = 'Generating plan...';
79
+ const result = await provider.generate(prompt, options);
80
+ spinner.stop();
81
+ console.log(`\n${'='.repeat(60)}`);
82
+ logger.highlight(`📋 Implementation Plan`);
83
+ console.log(`${'='.repeat(60)}\n`);
84
+ console.log(result);
85
+ console.log(`\n${'='.repeat(60)}`);
86
+ logger.info(`Generated by ${provider.name}`);
87
+ }
88
+ catch (err) {
89
+ spinner.fail('Planning failed');
90
+ logger.error(String(err));
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Plugins command — Lists and manages agent plugins and workflow templates.
3
+ *
4
+ * Usage:
5
+ * buff plugins list — Show discovered plugins and workflow templates
6
+ * buff plugins scan — Force re-scan of ~/.buff/agents/ and ~/.buff/workflows/
7
+ */
8
+ import { Command } from 'commander';
9
+ import { BaseCommand } from './commands.js';
10
+ export declare class PluginsCommand extends BaseCommand {
11
+ create(): Command;
12
+ private listPlugins;
13
+ private scanPlugins;
14
+ }
15
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/cli/plugins.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,IAAI,OAAO;YAmBH,WAAW;YAoEX,WAAW;CA+B1B"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Plugins command — Lists and manages agent plugins and workflow templates.
3
+ *
4
+ * Usage:
5
+ * buff plugins list — Show discovered plugins and workflow templates
6
+ * buff plugins scan — Force re-scan of ~/.buff/agents/ and ~/.buff/workflows/
7
+ */
8
+ import { Command } from 'commander';
9
+ import { BaseCommand } from './commands.js';
10
+ import { getPluginStats, discoverAgentPlugins, discoverWorkflowPlugins, runAutoDiscovery } from '../plugins/agent-plugin.js';
11
+ import { getPluginRegistry } from '../plugins/registry.js';
12
+ import { logger } from '../utils/logger.js';
13
+ import { getWorkflowTemplates } from '../workflow/templates.js';
14
+ export class PluginsCommand extends BaseCommand {
15
+ create() {
16
+ const command = new Command('plugins')
17
+ .description('Manage provider plugins, agent plugins, and workflow templates');
18
+ // ── list ──────────────────────────────────────────────────────────────
19
+ command
20
+ .command('list')
21
+ .description('List all discovered plugins and workflows')
22
+ .action(() => this.listPlugins());
23
+ // ── scan ──────────────────────────────────────────────────────────────
24
+ command
25
+ .command('scan')
26
+ .description('Force re-scan all plugin directories')
27
+ .action(() => this.scanPlugins());
28
+ return command;
29
+ }
30
+ async listPlugins() {
31
+ const stats = getPluginStats();
32
+ const registry = getPluginRegistry();
33
+ logger.highlight(`${'═'.repeat(60)}`);
34
+ logger.highlight(' 🔌 Plugin System');
35
+ logger.highlight(`${'═'.repeat(60)}`);
36
+ // ── Provider plugins (from ~/.buff/plugins/) ─────────────────────────
37
+ const registeredPlugins = registry.getAllPlugins();
38
+ console.log(`\n 🔗 Provider Plugins: ${stats.providerPlugins} discovered, ${registeredPlugins.length} registered`);
39
+ if (registeredPlugins.length > 0) {
40
+ for (const p of registeredPlugins) {
41
+ console.log(` 🔌 ${p.getProviderType()}: ${p.metadata.name} v${p.metadata.version}`);
42
+ if (p.metadata.description) {
43
+ console.log(` ${p.metadata.description}`);
44
+ }
45
+ }
46
+ }
47
+ else {
48
+ console.log(' (no provider plugins found in ~/.buff/plugins/)');
49
+ console.log(' Tip: Drop a .js file exporting a ProviderPlugin into ~/.buff/plugins/');
50
+ }
51
+ // ── Built-in workflow templates ──────────────────────────────────────
52
+ const builtinWorkflows = getWorkflowTemplates();
53
+ console.log(`\n 📋 Built-in Workflow Templates: ${builtinWorkflows.length}`);
54
+ for (const w of builtinWorkflows) {
55
+ console.log(` ${w.id}: ${w.name} (${w.steps.length} steps)`);
56
+ }
57
+ // ── Discovered agent plugins ──────────────────────────────────────────
58
+ console.log(`\n 🤖 Agent Plugins: ${stats.agentPlugins} discovered`);
59
+ if (stats.agentPlugins > 0) {
60
+ try {
61
+ const plugins = await discoverAgentPlugins();
62
+ for (const [type, plugin] of plugins) {
63
+ console.log(` 📦 ${type}: ${plugin.metadata.name} v${plugin.metadata.version}`);
64
+ }
65
+ }
66
+ catch {
67
+ console.log(' (run `buff plugins scan` to reload)');
68
+ }
69
+ }
70
+ else {
71
+ console.log(' (no agent plugins found in ~/.buff/agents/)');
72
+ }
73
+ // ── Discovered workflow plugins ──────────────────────────────────────
74
+ console.log(`\n 📄 Workflow Plugins: ${stats.workflowPlugins} discovered`);
75
+ if (stats.workflowPlugins > 0) {
76
+ try {
77
+ const workflows = discoverWorkflowPlugins();
78
+ for (const w of workflows) {
79
+ console.log(` 📄 ${w.id}: ${w.name} (${w.steps.length} steps)`);
80
+ }
81
+ }
82
+ catch {
83
+ console.log(' (run `buff plugins scan` to reload)');
84
+ }
85
+ }
86
+ else {
87
+ console.log(' (no workflow plugins found in ~/.buff/workflows/)');
88
+ }
89
+ // ── Plugin directories ──────────────────────────────────────────────
90
+ console.log(`\n 📁 Plugin Directories:`);
91
+ console.log(` Provider plugins: ~/.buff/plugins/`);
92
+ console.log(` Agent plugins: ~/.buff/agents/`);
93
+ console.log(` Workflow templates: ~/.buff/workflows/`);
94
+ console.log('');
95
+ }
96
+ async scanPlugins() {
97
+ logger.info('Scanning for plugins...');
98
+ const result = await runAutoDiscovery();
99
+ const registry = getPluginRegistry();
100
+ const registeredPlugins = registry.getAllPlugins();
101
+ console.log(`\n ✅ Scan complete`);
102
+ console.log(` Provider plugins: ${result.providerPlugins} discovered (${registeredPlugins.length} registered)`);
103
+ console.log(` Agent plugins: ${result.agentPlugins} discovered`);
104
+ console.log(` Workflow plugins: ${result.workflowPlugins} discovered`);
105
+ console.log('');
106
+ // Show what was discovered
107
+ for (const p of registeredPlugins) {
108
+ logger.success(` Provider: ${p.getProviderType()} ← ${p.metadata.name} v${p.metadata.version}`);
109
+ }
110
+ const agentPlugins = await discoverAgentPlugins();
111
+ for (const [type, plugin] of agentPlugins) {
112
+ logger.success(` Agent: ${type} ← ${plugin.metadata.name} v${plugin.metadata.version}`);
113
+ }
114
+ const workflowPlugins = discoverWorkflowPlugins();
115
+ for (const w of workflowPlugins) {
116
+ logger.success(` Workflow: ${w.id} ← ${w.name}`);
117
+ }
118
+ if (registeredPlugins.length === 0 && agentPlugins.size === 0 && workflowPlugins.length === 0) {
119
+ console.log(' Tip: Place .js provider files in ~/.buff/plugins/, .js agent files in ~/.buff/agents/,\n or .json workflow files in ~/.buff/workflows/');
120
+ }
121
+ }
122
+ }
123
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/cli/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { Command } from 'commander';
2
+ import { ConfigManager } from '../config/manager.js';
3
+ import { InferenceProvider } from '../inference/interface.js';
4
+ /**
5
+ * Create and configure the CLI program
6
+ */
7
+ export declare function createCLI(): Command;
8
+ /**
9
+ * Resolve the inference provider from CLI options.
10
+ *
11
+ * Supports both built-in providers (local, nim, gemini, openrouter, groq)
12
+ * and auto-discovered plugin providers from ~/.buff/plugins/.
13
+ *
14
+ * For plugin providers, the type string returned is the plugin's provider type.
15
+ */
16
+ export declare function resolveProvider(configManager: ConfigManager, providerOption?: string): {
17
+ type: string;
18
+ provider: InferenceProvider;
19
+ };
20
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAKrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AA4B9D;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAwFnC;AASD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,aAAa,EAC5B,cAAc,CAAC,EAAE,MAAM,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAA;CAAE,CA4B/C"}
@@ -0,0 +1,142 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { Command } from 'commander';
4
+ /** Read version from package.json at build time */
5
+ const pkg = JSON.parse(readFileSync(fileURLToPath(new URL('../../package.json', import.meta.url)), 'utf-8'));
6
+ import { ProviderFactory } from '../inference/factory.js';
7
+ import { getPluginRegistry } from '../plugins/registry.js';
8
+ import { ChatCommand } from './chat.js';
9
+ import { EditCommand } from './edit.js';
10
+ import { PlanCommand } from './plan.js';
11
+ import { ConfigCommand } from './config.js';
12
+ import { CacheCommand } from './cache.js';
13
+ import { ModelsCommand } from './models.js';
14
+ import { ExecuteCommand } from './execute.js';
15
+ import { RunCommand } from './run.js';
16
+ import { WorkflowCommand } from './workflow.js';
17
+ import { PluginsCommand } from './plugins.js';
18
+ import { LearnCommand } from './learn.js';
19
+ import { InitCommand } from './init.js';
20
+ import { StatsCommand } from './stats.js';
21
+ import { HistoryCommand } from './history.js';
22
+ import { BenchmarkCommand } from './benchmark.js';
23
+ import { SandboxCommand } from './sandbox.js';
24
+ import { DoctorCommand } from './doctor.js';
25
+ import { MemoryCommand } from './memory.js';
26
+ import { DashboardCommand } from './dashboard.js';
27
+ import { AgentCommand } from './agent.js';
28
+ import { FederationCommand } from './federation.js';
29
+ import { TeamCommand } from './team.js';
30
+ import { SDKCommand } from './sdk.js';
31
+ import { logger } from '../utils/logger.js';
32
+ /**
33
+ * Create and configure the CLI program
34
+ */
35
+ export function createCLI() {
36
+ const program = new Command();
37
+ program
38
+ .name('buff')
39
+ .description('Flexible AI inference CLI tool — local models & cloud APIs')
40
+ .version(pkg.version);
41
+ // Global options
42
+ program
43
+ .option('-d, --debug', 'Enable debug logging');
44
+ // Register commands
45
+ const chatCmd = new ChatCommand();
46
+ const editCmd = new EditCommand();
47
+ const planCmd = new PlanCommand();
48
+ const configCmd = new ConfigCommand();
49
+ const cacheCmd = new CacheCommand();
50
+ const modelsCmd = new ModelsCommand();
51
+ const executeCmd = new ExecuteCommand();
52
+ program.addCommand(chatCmd.create());
53
+ program.addCommand(editCmd.create());
54
+ program.addCommand(planCmd.create());
55
+ program.addCommand(configCmd.create());
56
+ program.addCommand(cacheCmd.create());
57
+ program.addCommand(modelsCmd.create());
58
+ program.addCommand(executeCmd.create());
59
+ const runCmd = new RunCommand();
60
+ program.addCommand(runCmd.create());
61
+ const workflowCmd = new WorkflowCommand();
62
+ program.addCommand(workflowCmd.create());
63
+ const pluginsCmd = new PluginsCommand();
64
+ program.addCommand(pluginsCmd.create());
65
+ const learnCmd = new LearnCommand();
66
+ program.addCommand(learnCmd.create());
67
+ // Register new Phase 1 commands
68
+ const initCmd = new InitCommand();
69
+ program.addCommand(initCmd.create());
70
+ const statsCmd = new StatsCommand();
71
+ program.addCommand(statsCmd.create());
72
+ const historyCmd = new HistoryCommand();
73
+ program.addCommand(historyCmd.create());
74
+ // Register Phase 2 commands
75
+ const benchmarkCmd = new BenchmarkCommand();
76
+ program.addCommand(benchmarkCmd.create());
77
+ const sandboxCmd = new SandboxCommand();
78
+ program.addCommand(sandboxCmd.create());
79
+ // Register Phase 2.5 new commands
80
+ const doctorCmd = new DoctorCommand();
81
+ program.addCommand(doctorCmd.create());
82
+ const memoryCmd = new MemoryCommand();
83
+ program.addCommand(memoryCmd.create());
84
+ // Register Phase 3.3 new commands
85
+ const dashboardCmd = new DashboardCommand();
86
+ program.addCommand(dashboardCmd.create());
87
+ const agentCmd = new AgentCommand();
88
+ program.addCommand(agentCmd.create());
89
+ const federationCmd = new FederationCommand();
90
+ program.addCommand(federationCmd.create());
91
+ const teamCmd = new TeamCommand();
92
+ program.addCommand(teamCmd.create());
93
+ // Register Phase 3.6 commands
94
+ const sdkCmd = new SDKCommand();
95
+ program.addCommand(sdkCmd.create());
96
+ // Default action: show help
97
+ program.action(() => {
98
+ program.help();
99
+ });
100
+ return program;
101
+ }
102
+ /**
103
+ * Check if a provider type is one of the built-in types.
104
+ */
105
+ function isBuiltInProvider(type) {
106
+ return ['local', 'nim', 'gemini', 'openrouter', 'groq'].includes(type);
107
+ }
108
+ /**
109
+ * Resolve the inference provider from CLI options.
110
+ *
111
+ * Supports both built-in providers (local, nim, gemini, openrouter, groq)
112
+ * and auto-discovered plugin providers from ~/.buff/plugins/.
113
+ *
114
+ * For plugin providers, the type string returned is the plugin's provider type.
115
+ */
116
+ export function resolveProvider(configManager, providerOption) {
117
+ const rawType = providerOption || configManager.getAll().defaultProvider;
118
+ // Check if it's a built-in provider
119
+ if (isBuiltInProvider(rawType)) {
120
+ const { config } = configManager.getProviderConfig(rawType);
121
+ const provider = ProviderFactory.createProvider(rawType, config);
122
+ logger.debug(`Resolved provider: ${rawType} (${provider.name})`);
123
+ return { type: rawType, provider };
124
+ }
125
+ // Check plugin registry for auto-discovered providers
126
+ const registry = getPluginRegistry();
127
+ if (registry.hasPlugin(rawType)) {
128
+ const plugin = registry.getPlugin(rawType);
129
+ const config = configManager.getAll().providers[rawType] || {};
130
+ const provider = plugin.createProvider(config);
131
+ logger.debug(`Resolved plugin provider: ${rawType} (${plugin.metadata.name})`);
132
+ return { type: rawType, provider };
133
+ }
134
+ // Unknown provider — warn and fall back to default
135
+ logger.warn(`Unknown provider '${rawType}'. Falling back to '${configManager.getAll().defaultProvider}'`);
136
+ const fallbackType = configManager.getAll().defaultProvider;
137
+ const { config } = configManager.getProviderConfig(fallbackType);
138
+ const provider = ProviderFactory.createProvider(fallbackType, config);
139
+ logger.debug(`Resolved provider (fallback): ${fallbackType} (${provider.name})`);
140
+ return { type: fallbackType, provider };
141
+ }
142
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/cli/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Run command — Execute a shell command directly using the RunnerAgent.
3
+ *
4
+ * This is a lightweight shortcut that bypasses the multi-agent pipeline
5
+ * and runs a command immediately, showing stdout/stderr output.
6
+ *
7
+ * Usage:
8
+ * buff run "echo hello world"
9
+ * buff run "npm test" --verbose
10
+ * buff run "python hello.py" --timeout 30000
11
+ * buff run "node index.js" --provider groq --model "llama-3.1-8b-instant"
12
+ */
13
+ import { Command } from 'commander';
14
+ import { BaseCommand } from './commands.js';
15
+ /**
16
+ * Run command — lightweight shell command execution via RunnerAgent.
17
+ */
18
+ export declare class RunCommand extends BaseCommand {
19
+ create(): Command;
20
+ private execute;
21
+ }
22
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAK5C;;GAEG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,MAAM,IAAI,OAAO;YAkBH,OAAO;CAqGtB"}