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,306 @@
1
+ /**
2
+ * Model Catalog — Categorizes AI models by capability so users can pick
3
+ * the right model for their task.
4
+ *
5
+ * Each model is tagged with one or more categories based on its ID pattern.
6
+ * The model picker uses these categories to group models with icons,
7
+ * descriptions, and recommendation badges.
8
+ */
9
+ /**
10
+ * Display info for every category.
11
+ * Ordered roughly by popularity / usefulness.
12
+ */
13
+ export const CATEGORY_INFO = {
14
+ chat: {
15
+ icon: '💬',
16
+ label: 'Chat',
17
+ description: 'General conversation, Q&A, and everyday tasks',
18
+ },
19
+ code: {
20
+ icon: '💻',
21
+ label: 'Code',
22
+ description: 'Code generation, debugging, and programming tasks',
23
+ },
24
+ reasoning: {
25
+ icon: '🧠',
26
+ label: 'Reasoning',
27
+ description: 'Complex problem-solving, math, and logic',
28
+ },
29
+ fast: {
30
+ icon: '⚡',
31
+ label: 'Fast',
32
+ description: 'Low-latency responses — best for quick iterations',
33
+ },
34
+ creative: {
35
+ icon: '🎨',
36
+ label: 'Creative',
37
+ description: 'Creative writing, storytelling, and brainstorming',
38
+ },
39
+ vision: {
40
+ icon: '👁️',
41
+ label: 'Vision',
42
+ description: 'Image understanding and multimodal tasks',
43
+ },
44
+ instruct: {
45
+ icon: '🎯',
46
+ label: 'Instruct',
47
+ description: 'Instruction-tuned models for structured output',
48
+ },
49
+ agentic: {
50
+ icon: '🤖',
51
+ label: 'Agentic',
52
+ description: 'Tool-use, function-calling, and autonomous agents',
53
+ },
54
+ preview: {
55
+ icon: '🧪',
56
+ label: 'Preview',
57
+ description: 'Experimental / preview — may not be production-ready',
58
+ },
59
+ speech: {
60
+ icon: '🎤',
61
+ label: 'Speech',
62
+ description: 'Speech/audio models — TTS, STT, voice (not chat-compatible)',
63
+ },
64
+ other: {
65
+ icon: '🔹',
66
+ label: 'Other',
67
+ description: 'Uncategorized models',
68
+ },
69
+ };
70
+ /**
71
+ * Ordered list of pattern matchers.
72
+ * Each entry has a list of regex patterns to test against the model ID,
73
+ * and the category to assign when any pattern matches.
74
+ *
75
+ * Only the LOWEST-priority match is kept (i.e., the most specific pattern wins).
76
+ */
77
+ const CATEGORY_PATTERNS = [
78
+ // ── Speech / Audio (most specific — not chat-compatible) ───────────────
79
+ { patterns: [/orpheus/i, /whisper/i, /distil-whisper/i, /tts/i, /audio/i], category: 'speech', priority: 1 },
80
+ // ── Vision / Multimodal ────────────────────────────────────────────────
81
+ { patterns: [/vision/i, /multimodal/i], category: 'vision', priority: 2 },
82
+ // ── Reasoning / Thinking ───────────────────────────────────────────────
83
+ {
84
+ patterns: [
85
+ /qwen-2(?:\.5)?-(?:\d+)?b?(?:\d+)?-?(?:instruct|reasoning)?$/i,
86
+ /deepseek-r1/i,
87
+ /deepseek-(?:v2|v3)/i,
88
+ /reasoning/i,
89
+ /think/i,
90
+ ],
91
+ category: 'reasoning',
92
+ priority: 3,
93
+ },
94
+ // ── Agentic / Tool-use ─────────────────────────────────────────────────
95
+ {
96
+ patterns: [
97
+ /function-call/i,
98
+ /tool-use/i,
99
+ /agent/i,
100
+ /claude.*(?:opus|sonnet)/i,
101
+ /gpt-4/i,
102
+ ],
103
+ category: 'agentic',
104
+ priority: 4,
105
+ },
106
+ // ── Code ───────────────────────────────────────────────────────────────
107
+ {
108
+ patterns: [
109
+ /coder/i,
110
+ /code-/i,
111
+ /code\b/i,
112
+ /deepseek-coder/i,
113
+ /codellama/i,
114
+ /codegemma/i,
115
+ /starcoder/i,
116
+ /qwen-coder/i,
117
+ /wizardcoder/i,
118
+ /codeqwen/i,
119
+ ],
120
+ category: 'code',
121
+ priority: 4,
122
+ },
123
+ // ── Fast / Lightweight ─────────────────────────────────────────────────
124
+ {
125
+ patterns: [
126
+ /llama-3[._-]1-8b/i,
127
+ /llama-3[._-]2-3b/i,
128
+ /llama-?-3b/i,
129
+ /gemma-?2-?9b/i,
130
+ /gemma-?2-?2b/i,
131
+ /mistral-7b/i,
132
+ /mixtral-8x7b/i,
133
+ /phi-?3/i,
134
+ /phi-?3?-?mini/i,
135
+ ],
136
+ category: 'fast',
137
+ priority: 5,
138
+ },
139
+ // ── Preview / Experimental ─────────────────────────────────────────────
140
+ {
141
+ patterns: [
142
+ /preview/i,
143
+ /exp$/i,
144
+ /experimental/i,
145
+ /flash-exp/i,
146
+ ],
147
+ category: 'preview',
148
+ priority: 6,
149
+ },
150
+ // ── Instruct / Structured ──────────────────────────────────────────────
151
+ {
152
+ patterns: [
153
+ /-it$/i,
154
+ /-instruct/i,
155
+ /instruct$/i,
156
+ ],
157
+ category: 'instruct',
158
+ priority: 6,
159
+ },
160
+ // ── Chat / General (most broad — catch-all for known chat models) ──────
161
+ {
162
+ patterns: [
163
+ /llama/i,
164
+ /mistral/i,
165
+ /mixtral/i,
166
+ /gemma/i,
167
+ /gemini/i,
168
+ /qwen/i,
169
+ /deepseek/i,
170
+ /claude/i,
171
+ /gpt/i,
172
+ /phi/i,
173
+ /command\b/i,
174
+ /aya/i,
175
+ /nous/i,
176
+ /hermes/i,
177
+ /dbrx/i,
178
+ /solar/i,
179
+ /wizard/i,
180
+ ],
181
+ category: 'chat',
182
+ priority: 7,
183
+ },
184
+ ];
185
+ /**
186
+ * Determine the category for a given model ID.
187
+ * Uses pattern matching against known model naming conventions.
188
+ *
189
+ * @param modelId The model identifier (e.g., "llama-3.3-70b-versatile")
190
+ * @param owner Optional owner/organization hint (e.g., "meta", "google")
191
+ * @returns The best-matching category, defaulting to 'other'
192
+ */
193
+ export function categorizeModel(modelId, _owner) {
194
+ let bestCategory = 'other';
195
+ let bestPriority = Infinity;
196
+ let bestIndex = -1;
197
+ for (let i = 0; i < CATEGORY_PATTERNS.length; i++) {
198
+ const entry = CATEGORY_PATTERNS[i];
199
+ for (const pattern of entry.patterns) {
200
+ if (pattern.test(modelId)) {
201
+ if (entry.priority < bestPriority) {
202
+ bestCategory = entry.category;
203
+ bestPriority = entry.priority;
204
+ bestIndex = i;
205
+ }
206
+ break; // Only first matching pattern per entry
207
+ }
208
+ }
209
+ }
210
+ // If the model matched "fast" or "preview" but also has a broader category,
211
+ // use the broader category for display but keep the tag
212
+ // (tags will be handled separately)
213
+ return bestCategory;
214
+ }
215
+ /**
216
+ * Get ALL applicable category tags for a model.
217
+ * This returns multiple categories so a model can be shown in multiple groups.
218
+ *
219
+ * Example: "llama-3.1-8b-instant" → ['chat', 'fast', 'instruct']
220
+ */
221
+ export function getModelTags(modelId, _owner) {
222
+ const tags = [];
223
+ for (const entry of CATEGORY_PATTERNS) {
224
+ for (const pattern of entry.patterns) {
225
+ if (pattern.test(modelId)) {
226
+ tags.push(entry.category);
227
+ break;
228
+ }
229
+ }
230
+ }
231
+ // Always include 'chat' for any model that has recognizable patterns
232
+ // (even code models can do chat), but NOT for speech models
233
+ const hasKnownPattern = tags.length > 0;
234
+ const isSpeech = tags.includes('speech');
235
+ if (hasKnownPattern && !tags.includes('chat') && !isSpeech) {
236
+ tags.push('chat');
237
+ }
238
+ return tags;
239
+ }
240
+ /**
241
+ * Returns a human-friendly label for a model ID, stripping provider prefixes
242
+ * and formatting nicely.
243
+ *
244
+ * Example: "meta-llama/llama-3.3-70b-instruct" → "Llama 3.3 70B Instruct"
245
+ */
246
+ export function formatModelName(modelId) {
247
+ // Strip provider prefix (e.g., "groq/", "nvidia/")
248
+ let name = modelId.replace(/^[^/]+\//, '');
249
+ // Replace separators
250
+ name = name.replace(/[/_]/g, ' ');
251
+ // Capitalize first letter of each segment
252
+ name = name.replace(/\b\w/g, (c) => c.toUpperCase());
253
+ // Fix common renames
254
+ name = name.replace(/\bLlama\b/g, 'Llama');
255
+ name = name.replace(/\bGpt\b/g, 'GPT');
256
+ name = name.replace(/\bClaude\b/g, 'Claude');
257
+ name = name.replace(/\bGemma\b/g, 'Gemma');
258
+ name = name.replace(/\bGemini\b/g, 'Gemini');
259
+ name = name.replace(/\bMistral\b/g, 'Mistral');
260
+ name = name.replace(/\bMixtral\b/g, 'Mixtral');
261
+ name = name.replace(/\bQwen\b/g, 'Qwen');
262
+ name = name.replace(/\bDeepseek\b/g, 'DeepSeek');
263
+ return name;
264
+ }
265
+ /**
266
+ * Get a recommendation badge / description for a model.
267
+ * Some well-known models get a short blurb about what they excel at.
268
+ */
269
+ export function getModelBadge(modelId) {
270
+ const badges = {
271
+ // Groq
272
+ 'llama-3.3-70b-versatile': 'Best all-rounder — strong at chat, code, and reasoning',
273
+ 'llama-3.1-8b-instant': 'Fast & capable — great for quick iterations',
274
+ 'mixtral-8x7b-32768': 'Excellent for long context (32K tokens)',
275
+ 'gemma2-9b-it': 'Lightning fast — ideal for simple tasks',
276
+ 'qwen-2.5-32b': 'Excellent reasoning and multilingual support',
277
+ 'qwen-qwen-2.5-32b': 'Excellent reasoning and multilingual support',
278
+ 'deepseek-r1-distill-llama-70b': 'Strong reasoning with distilled efficiency',
279
+ 'deepseek-r1-distill-qwen-32b': 'Excellent reasoning in a compact package',
280
+ // Gemini
281
+ 'gemini-2.0-flash-exp': 'Latest Gemini — fast, multimodal, strong all-around',
282
+ 'gemini-2.0-flash': 'Fast & capable — balances speed and quality',
283
+ 'gemini-1.5-flash': 'Quick responses with good quality',
284
+ 'gemini-1.5-pro': 'Best quality — slower but more accurate',
285
+ // OpenRouter common
286
+ 'mistralai/mistral-7b-instruct': 'Lightweight instruct model — good for simple tasks',
287
+ 'openai/gpt-4o': 'Top-tier — best for complex tasks',
288
+ 'openai/gpt-4o-mini': 'Affordable & fast — great for everyday use',
289
+ 'anthropic/claude-sonnet-4-20250514': 'Excellent for agentic tasks and long context',
290
+ 'anthropic/claude-3.5-sonnet': 'Balanced quality and speed',
291
+ 'meta-llama/llama-3.3-70b-instruct': 'Strong open-weight model — versatile and capable',
292
+ // Speech / Audio
293
+ 'whisper-large-v3': 'Speech-to-text transcription model',
294
+ 'distil-whisper-large-v3-en': 'Fast STT — English optimized',
295
+ 'canopylabs/orpheus-v1-english': 'Text-to-speech voice generation (not chat)',
296
+ // Local / Ollama
297
+ 'llama2': 'Original Llama — works offline',
298
+ 'llama3': 'Modern open-weight chat model',
299
+ 'deepseek-coder': 'Specialized for code — great for programming',
300
+ 'codellama': 'Code-focused Llama variant',
301
+ 'mistral': 'Solid general-purpose model',
302
+ 'phi': 'Ultra-lightweight — runs on any hardware',
303
+ };
304
+ return badges[modelId];
305
+ }
306
+ //# sourceMappingURL=model-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/inference/model-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { InferenceProvider, ModelDescriptor } from './interface.js';
2
+ import { InferenceOptions, ProviderConfig } from '../config/types.js';
3
+ /**
4
+ * NVIDIA NIM Adapter
5
+ * Connects to NVIDIA NIM OpenAI-compatible API
6
+ */
7
+ export declare class NIMAdapter implements InferenceProvider {
8
+ readonly name = "NVIDIA NIM";
9
+ private config;
10
+ constructor(config: ProviderConfig);
11
+ generate(prompt: string, options?: InferenceOptions): Promise<string>;
12
+ generateStream(prompt: string, options: InferenceOptions | undefined, onToken: (token: string) => void): Promise<string>;
13
+ isAvailable(): Promise<boolean>;
14
+ getInfo(): string;
15
+ listModels(): Promise<ModelDescriptor[]>;
16
+ }
17
+ //# sourceMappingURL=nim-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nim-adapter.d.ts","sourceRoot":"","sources":["../../src/inference/nim-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AActE;;;GAGG;AACH,qBAAa,UAAW,YAAW,iBAAiB;IAClD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAI5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CrE,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC;IA6BZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,OAAO,IAAI,MAAM;IAIX,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAsB/C"}
@@ -0,0 +1,103 @@
1
+ import { logger } from '../utils/logger.js';
2
+ import { streamCompletion } from './sse.js';
3
+ import { getModelTags } from './model-catalog.js';
4
+ import { getCostTracker } from '../learning/cost-tracker.js';
5
+ const DEFAULT_NIM_BASE_URL = 'https://integrate.api.nvidia.com/v1';
6
+ /**
7
+ * NVIDIA NIM Adapter
8
+ * Connects to NVIDIA NIM OpenAI-compatible API
9
+ */
10
+ export class NIMAdapter {
11
+ name = 'NVIDIA NIM';
12
+ config;
13
+ constructor(config) {
14
+ this.config = config;
15
+ }
16
+ async generate(prompt, options) {
17
+ const apiKey = this.config.apiKey;
18
+ if (!apiKey) {
19
+ throw new Error('NVIDIA NIM API key is not configured. Set NVIDIA_NIM_API_KEY env var.');
20
+ }
21
+ const model = options?.model || this.config.model || 'meta/llama-3.1-8b-instruct';
22
+ const temperature = options?.temperature ?? this.config.temperature ?? 0.7;
23
+ const maxTokens = options?.maxTokens ?? this.config.maxTokens ?? 4096;
24
+ logger.debug(`NIM: Generating with model=${model}, temperature=${temperature}, maxTokens=${maxTokens}`);
25
+ const baseUrl = this.config.baseUrl || DEFAULT_NIM_BASE_URL;
26
+ const url = `${baseUrl}/chat/completions`;
27
+ const response = await fetch(url, {
28
+ method: 'POST',
29
+ headers: {
30
+ 'Authorization': `Bearer ${apiKey}`,
31
+ 'Content-Type': 'application/json',
32
+ 'Accept': 'application/json',
33
+ },
34
+ body: JSON.stringify({
35
+ model,
36
+ messages: [{ role: 'user', content: prompt }],
37
+ temperature,
38
+ max_tokens: maxTokens,
39
+ }),
40
+ });
41
+ if (!response.ok) {
42
+ const errorBody = await response.text();
43
+ throw new Error(`NVIDIA NIM API error (${response.status}): ${errorBody}`);
44
+ }
45
+ const data = (await response.json());
46
+ const content = data.choices[0]?.message?.content || '';
47
+ // Track cost
48
+ try {
49
+ getCostTracker().recordCallEstimated('nim', model, prompt, content);
50
+ }
51
+ catch { /* Non-critical */ }
52
+ return content;
53
+ }
54
+ async generateStream(prompt, options, onToken) {
55
+ const apiKey = this.config.apiKey;
56
+ if (!apiKey) {
57
+ throw new Error('NVIDIA NIM API key is not configured. Set NVIDIA_NIM_API_KEY env var.');
58
+ }
59
+ const model = options?.model || this.config.model || 'meta/llama-3.1-8b-instruct';
60
+ const temperature = options?.temperature ?? this.config.temperature ?? 0.7;
61
+ const maxTokens = options?.maxTokens ?? this.config.maxTokens ?? 4096;
62
+ logger.debug(`NIM: Streaming with model=${model}, temperature=${temperature}, maxTokens=${maxTokens}`);
63
+ const baseUrl = this.config.baseUrl || DEFAULT_NIM_BASE_URL;
64
+ const fullContent = await streamCompletion(`${baseUrl}/chat/completions`, { 'Authorization': `Bearer ${apiKey}` }, { model, messages: [{ role: 'user', content: prompt }], temperature, max_tokens: maxTokens }, onToken);
65
+ // Track cost for streaming response
66
+ try {
67
+ getCostTracker().recordCallEstimated('nim', model, prompt, fullContent);
68
+ }
69
+ catch { /* Non-critical */ }
70
+ return fullContent;
71
+ }
72
+ async isAvailable() {
73
+ return !!this.config.apiKey;
74
+ }
75
+ getInfo() {
76
+ return `Provider: NVIDIA NIM\nModel: ${this.config.model || 'default'}\nStatus: ${this.config.apiKey ? '✅ Configured' : '❌ Missing API key'}`;
77
+ }
78
+ async listModels() {
79
+ const apiKey = this.config.apiKey;
80
+ if (!apiKey)
81
+ return [];
82
+ const baseUrl = this.config.baseUrl || DEFAULT_NIM_BASE_URL;
83
+ try {
84
+ const response = await fetch(`${baseUrl}/models`, {
85
+ headers: { 'Authorization': `Bearer ${apiKey}` },
86
+ });
87
+ if (!response.ok)
88
+ return [];
89
+ const data = (await response.json());
90
+ return (data.data || []).map((m) => ({
91
+ id: m.id,
92
+ name: m.id.split('/').pop() || m.id,
93
+ provider: 'nim',
94
+ owner: m.owned_by || 'nvidia',
95
+ tags: getModelTags(m.id, m.owned_by),
96
+ }));
97
+ }
98
+ catch {
99
+ return [];
100
+ }
101
+ }
102
+ }
103
+ //# sourceMappingURL=nim-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nim-adapter.js","sourceRoot":"","sources":["../../src/inference/nim-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { InferenceProvider, ModelDescriptor } from './interface.js';
2
+ import { InferenceOptions, ProviderConfig } from '../config/types.js';
3
+ /**
4
+ * OpenRouter Adapter
5
+ * Routes requests through OpenRouter's multi-provider API
6
+ */
7
+ export declare class OpenRouterAdapter implements InferenceProvider {
8
+ readonly name = "OpenRouter";
9
+ private config;
10
+ constructor(config: ProviderConfig);
11
+ generate(prompt: string, options?: InferenceOptions): Promise<string>;
12
+ generateStream(prompt: string, options: InferenceOptions | undefined, onToken: (token: string) => void): Promise<string>;
13
+ isAvailable(): Promise<boolean>;
14
+ getInfo(): string;
15
+ listModels(): Promise<ModelDescriptor[]>;
16
+ }
17
+ //# sourceMappingURL=openrouter-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-adapter.d.ts","sourceRoot":"","sources":["../../src/inference/openrouter-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AActE;;;GAGG;AACH,qBAAa,iBAAkB,YAAW,iBAAiB;IACzD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAI5B,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4CrE,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,GAAG,SAAS,EACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC;IAgCZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,OAAO,IAAI,MAAM;IAIX,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAqB/C"}
@@ -0,0 +1,105 @@
1
+ import { logger } from '../utils/logger.js';
2
+ import { streamCompletion } from './sse.js';
3
+ import { getModelTags } from './model-catalog.js';
4
+ import { getCostTracker } from '../learning/cost-tracker.js';
5
+ const OPENROUTER_BASE_URL = 'https://openrouter.ai/api/v1';
6
+ /**
7
+ * OpenRouter Adapter
8
+ * Routes requests through OpenRouter's multi-provider API
9
+ */
10
+ export class OpenRouterAdapter {
11
+ name = 'OpenRouter';
12
+ config;
13
+ constructor(config) {
14
+ this.config = config;
15
+ }
16
+ async generate(prompt, options) {
17
+ const apiKey = this.config.apiKey;
18
+ if (!apiKey) {
19
+ throw new Error('OpenRouter API key is not configured. Set OPENROUTER_API_KEY env var.');
20
+ }
21
+ const model = options?.model || this.config.model || 'mistralai/mistral-7b-instruct';
22
+ const temperature = options?.temperature ?? this.config.temperature ?? 0.7;
23
+ const maxTokens = options?.maxTokens ?? this.config.maxTokens ?? 4096;
24
+ logger.debug(`OpenRouter: Generating with model=${model}, temperature=${temperature}, maxTokens=${maxTokens}`);
25
+ const response = await fetch(`${OPENROUTER_BASE_URL}/chat/completions`, {
26
+ method: 'POST',
27
+ headers: {
28
+ 'Authorization': `Bearer ${apiKey}`,
29
+ 'Content-Type': 'application/json',
30
+ 'HTTP-Referer': 'https://github.com/buff-cli/buff',
31
+ 'X-Title': 'Buff CLI',
32
+ },
33
+ body: JSON.stringify({
34
+ model,
35
+ messages: [{ role: 'user', content: prompt }],
36
+ temperature,
37
+ max_tokens: maxTokens,
38
+ }),
39
+ });
40
+ if (!response.ok) {
41
+ const errorBody = await response.text();
42
+ throw new Error(`OpenRouter API error (${response.status}): ${errorBody}`);
43
+ }
44
+ const data = (await response.json());
45
+ const content = data.choices[0]?.message?.content || '';
46
+ // Track cost
47
+ try {
48
+ getCostTracker().recordCallEstimated('openrouter', model, prompt, content);
49
+ }
50
+ catch { /* Non-critical */ }
51
+ return content;
52
+ }
53
+ async generateStream(prompt, options, onToken) {
54
+ const apiKey = this.config.apiKey;
55
+ if (!apiKey) {
56
+ throw new Error('OpenRouter API key is not configured. Set OPENROUTER_API_KEY env var.');
57
+ }
58
+ const model = options?.model || this.config.model || 'mistralai/mistral-7b-instruct';
59
+ const temperature = options?.temperature ?? this.config.temperature ?? 0.7;
60
+ const maxTokens = options?.maxTokens ?? this.config.maxTokens ?? 4096;
61
+ logger.debug(`OpenRouter: Streaming with model=${model}, temperature=${temperature}, maxTokens=${maxTokens}`);
62
+ // OpenRouter uses OpenAI-compatible streaming SSE, same as Groq/NIM
63
+ const fullContent = await streamCompletion(`${OPENROUTER_BASE_URL}/chat/completions`, {
64
+ 'Authorization': `Bearer ${apiKey}`,
65
+ 'HTTP-Referer': 'https://github.com/buff-cli/buff',
66
+ 'X-Title': 'Buff CLI',
67
+ }, { model, messages: [{ role: 'user', content: prompt }], temperature, max_tokens: maxTokens }, onToken);
68
+ // Track cost for streaming response
69
+ try {
70
+ getCostTracker().recordCallEstimated('openrouter', model, prompt, fullContent);
71
+ }
72
+ catch { /* Non-critical */ }
73
+ return fullContent;
74
+ }
75
+ async isAvailable() {
76
+ return !!this.config.apiKey;
77
+ }
78
+ getInfo() {
79
+ return `Provider: OpenRouter\nModel: ${this.config.model || 'default'}\nStatus: ${this.config.apiKey ? '✅ Configured' : '❌ Missing API key'}`;
80
+ }
81
+ async listModels() {
82
+ const apiKey = this.config.apiKey;
83
+ if (!apiKey)
84
+ return [];
85
+ try {
86
+ const response = await fetch(`${OPENROUTER_BASE_URL}/models`, {
87
+ headers: { 'Authorization': `Bearer ${apiKey}` },
88
+ });
89
+ if (!response.ok)
90
+ return [];
91
+ const data = (await response.json());
92
+ return (data.data || []).map((m) => ({
93
+ id: m.id,
94
+ name: m.name || m.id,
95
+ provider: 'openrouter',
96
+ description: m.description,
97
+ tags: getModelTags(m.id),
98
+ }));
99
+ }
100
+ catch {
101
+ return [];
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=openrouter-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-adapter.js","sourceRoot":"","sources":["../../src/inference/openrouter-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared SSE streaming utilities for OpenAI-compatible APIs.
3
+ * Used by Groq, NIM, and any future OpenAI-compatible adapters.
4
+ */
5
+ /**
6
+ * Parse a single SSE line from an OpenAI-compatible streaming response.
7
+ * Returns the content delta or null for non-content events (e.g., [DONE], usage info).
8
+ */
9
+ export declare function parseSSELine(line: string): string | null;
10
+ /**
11
+ * Perform a streaming chat completion request for an OpenAI-compatible API.
12
+ *
13
+ * @param url - The full URL for the chat completions endpoint
14
+ * @param headers - HTTP headers (including Authorization)
15
+ * @param body - The JSON request body (stream: true will be added automatically)
16
+ * @param onToken - Callback for each content token as it arrives
17
+ * @returns The full concatenated response text
18
+ */
19
+ export declare function streamCompletion(url: string, headers: Record<string, string>, body: Record<string, unknown>, onToken: (token: string) => void): Promise<string>;
20
+ //# sourceMappingURL=sse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/inference/sse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUxD;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,MAAM,CAAC,CAgEjB"}