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,91 @@
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 function parseSSELine(line) {
10
+ if (!line.startsWith('data: '))
11
+ return null;
12
+ const data = line.slice(6).trim();
13
+ if (data === '[DONE]')
14
+ return null;
15
+ try {
16
+ const parsed = JSON.parse(data);
17
+ return parsed?.choices?.[0]?.delta?.content || null;
18
+ }
19
+ catch {
20
+ return null;
21
+ }
22
+ }
23
+ /**
24
+ * Perform a streaming chat completion request for an OpenAI-compatible API.
25
+ *
26
+ * @param url - The full URL for the chat completions endpoint
27
+ * @param headers - HTTP headers (including Authorization)
28
+ * @param body - The JSON request body (stream: true will be added automatically)
29
+ * @param onToken - Callback for each content token as it arrives
30
+ * @returns The full concatenated response text
31
+ */
32
+ export async function streamCompletion(url, headers, body, onToken) {
33
+ const response = await fetch(url, {
34
+ method: 'POST',
35
+ headers: {
36
+ ...headers,
37
+ 'Content-Type': 'application/json',
38
+ },
39
+ body: JSON.stringify({
40
+ ...body,
41
+ stream: true,
42
+ }),
43
+ });
44
+ if (!response.ok) {
45
+ const errorBody = await response.text();
46
+ throw new Error(`API error (${response.status}): ${errorBody}`);
47
+ }
48
+ const reader = response.body?.getReader();
49
+ if (!reader) {
50
+ throw new Error('Response body is not readable');
51
+ }
52
+ const decoder = new TextDecoder();
53
+ const fullContent = [];
54
+ let buffer = '';
55
+ try {
56
+ while (true) {
57
+ const { done, value } = await reader.read();
58
+ if (done)
59
+ break;
60
+ buffer += decoder.decode(value, { stream: true });
61
+ // Process complete lines from the buffer
62
+ const lines = buffer.split('\n');
63
+ // Keep the last (potentially incomplete) line in the buffer
64
+ buffer = lines.pop() || '';
65
+ for (const line of lines) {
66
+ const trimmed = line.trim();
67
+ if (!trimmed)
68
+ continue;
69
+ const token = parseSSELine(trimmed);
70
+ if (token) {
71
+ fullContent.push(token);
72
+ onToken(token);
73
+ }
74
+ }
75
+ }
76
+ // Process remaining buffer
77
+ const remaining = buffer.trim();
78
+ if (remaining) {
79
+ const token = parseSSELine(remaining);
80
+ if (token) {
81
+ fullContent.push(token);
82
+ onToken(token);
83
+ }
84
+ }
85
+ }
86
+ finally {
87
+ reader.releaseLock();
88
+ }
89
+ return fullContent.join('');
90
+ }
91
+ //# sourceMappingURL=sse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/inference/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * AgentStats — Tracks per-agent performance metrics to enable
3
+ * data-driven improvements in agent execution.\n *
4
+ * What it tracks:
5
+ * - Success/failure counts per agent type
6
+ * - Which models perform best for each agent type
7
+ * - Average task duration (optional, for future use)
8
+ * - Total runs count
9
+ *
10
+ * Data is stored as JSON at ~/.buff/memory/agent-stats.json
11
+ * and updated after each orchestration run.
12
+ */
13
+ export interface AgentPerformance {
14
+ /** Total attempts */
15
+ totalRuns: number;
16
+ /** Successful completions */
17
+ successfulRuns: number;
18
+ /** Failed completions */
19
+ failedRuns: number;
20
+ /** Success rate (0–1) */
21
+ successRate: number;
22
+ /** Which models have been used and with what success */
23
+ modelPerformance: Record<string, {
24
+ runs: number;
25
+ successes: number;
26
+ }>;
27
+ /** Last time this agent was run */
28
+ lastRun: number;
29
+ }
30
+ export interface AgentStatsData {
31
+ /** Per-agent stats keyed by agent type (e.g., 'writer', 'planner') */
32
+ agents: Record<string, AgentPerformance>;
33
+ /** Total orchestration runs recorded */
34
+ totalRuns: number;
35
+ /** Overall success rate across all agents */
36
+ overallSuccessRate: number;
37
+ /** When stats were last updated */
38
+ lastUpdated: number;
39
+ /** Schema version */
40
+ version: number;
41
+ }
42
+ export declare class AgentStats {
43
+ private data;
44
+ constructor();
45
+ /**
46
+ * Record a single agent execution result.
47
+ * Updates per-agent stats and recalculates rates.
48
+ */
49
+ recordRun(agentType: string, success: boolean, model?: string): void;
50
+ /**
51
+ * Record multiple agent runs from an orchestration result.
52
+ */
53
+ recordRuns(runs: Array<{
54
+ agent: string;
55
+ success: boolean;
56
+ }>, modelMap?: Record<string, string>): void;
57
+ /**
58
+ * Get stats for a specific agent type.
59
+ */
60
+ getAgentStats(agentType: string): AgentPerformance | undefined;
61
+ /**
62
+ * Get all agent stats.
63
+ */
64
+ getAllAgents(): Record<string, AgentPerformance>;
65
+ /**
66
+ * Get the best-performing model for a given agent type.
67
+ * Returns undefined if no data is available.
68
+ */
69
+ getBestModel(agentType: string): string | undefined;
70
+ /**
71
+ * Get agents sorted by success rate (ascending — worst performers first).
72
+ * Useful for identifying which agents need attention.
73
+ */
74
+ getWorstPerformers(limit?: number): Array<{
75
+ agentType: string;
76
+ stats: AgentPerformance;
77
+ }>;
78
+ /**
79
+ * Get agents sorted by success rate (descending — best performers first).
80
+ */
81
+ getBestPerformers(limit?: number): Array<{
82
+ agentType: string;
83
+ stats: AgentPerformance;
84
+ }>;
85
+ /**
86
+ * Format stats as a human-readable string.
87
+ */
88
+ formatStats(): string;
89
+ /**
90
+ * Format best model recommendations as a string.
91
+ */
92
+ formatModelRecommendations(): string;
93
+ /**
94
+ * Clear all stats.
95
+ */
96
+ clear(): void;
97
+ /**
98
+ * Get raw data for inspection.
99
+ */
100
+ getRaw(): AgentStatsData;
101
+ private createEmpty;
102
+ private createFresh;
103
+ private recalculateOverallRate;
104
+ private load;
105
+ private save;
106
+ private ensureDir;
107
+ }
108
+ export declare function getAgentStats(): AgentStats;
109
+ //# sourceMappingURL=agent-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stats.d.ts","sourceRoot":"","sources":["../../src/learning/agent-stats.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACzC,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAUD,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAiB;;IAQ7B;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAkCpE;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAOrG;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI9D;;OAEG;IACH,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAIhD;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAkBnD;;;OAGG;IACH,kBAAkB,CAAC,KAAK,GAAE,MAAU,GAAG,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAO5F;;OAEG;IACH,iBAAiB,CAAC,KAAK,GAAE,MAAU,GAAG,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAO3F;;OAEG;IACH,WAAW,IAAI,MAAM;IA+BrB;;OAEG;IACH,0BAA0B,IAAI,MAAM;IAwBpC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,MAAM,IAAI,cAAc;IAMxB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,SAAS;CAKlB;AAKD,wBAAgB,aAAa,IAAI,UAAU,CAK1C"}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * AgentStats — Tracks per-agent performance metrics to enable
3
+ * data-driven improvements in agent execution.\n *
4
+ * What it tracks:
5
+ * - Success/failure counts per agent type
6
+ * - Which models perform best for each agent type
7
+ * - Average task duration (optional, for future use)
8
+ * - Total runs count
9
+ *
10
+ * Data is stored as JSON at ~/.buff/memory/agent-stats.json
11
+ * and updated after each orchestration run.
12
+ */
13
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs';
14
+ import { join } from 'node:path';
15
+ import { homedir } from 'node:os';
16
+ // ─── Constants ──────────────────────────────────────────────────────────────
17
+ const MEMORY_DIR = join(homedir(), '.buff', 'memory');
18
+ const STATS_PATH = join(MEMORY_DIR, 'agent-stats.json');
19
+ const CURRENT_VERSION = 1;
20
+ // ─── AgentStats Tracker ─────────────────────────────────────────────────────
21
+ export class AgentStats {
22
+ data;
23
+ constructor() {
24
+ this.data = this.load();
25
+ }
26
+ // ── Public API ──────────────────────────────────────────────────────────
27
+ /**
28
+ * Record a single agent execution result.
29
+ * Updates per-agent stats and recalculates rates.
30
+ */
31
+ recordRun(agentType, success, model) {
32
+ if (!this.data.agents[agentType]) {
33
+ this.data.agents[agentType] = this.createEmpty();
34
+ }
35
+ const agent = this.data.agents[agentType];
36
+ agent.totalRuns++;
37
+ if (success) {
38
+ agent.successfulRuns++;
39
+ }
40
+ else {
41
+ agent.failedRuns++;
42
+ }
43
+ agent.successRate = agent.totalRuns > 0
44
+ ? agent.successfulRuns / agent.totalRuns
45
+ : 0;
46
+ agent.lastRun = Date.now();
47
+ // Track model performance
48
+ if (model) {
49
+ if (!agent.modelPerformance[model]) {
50
+ agent.modelPerformance[model] = { runs: 0, successes: 0 };
51
+ }
52
+ agent.modelPerformance[model].runs++;
53
+ if (success) {
54
+ agent.modelPerformance[model].successes++;
55
+ }
56
+ }
57
+ this.data.totalRuns++;
58
+ this.data.lastUpdated = Date.now();
59
+ this.recalculateOverallRate();
60
+ this.save();
61
+ }
62
+ /**
63
+ * Record multiple agent runs from an orchestration result.
64
+ */
65
+ recordRuns(runs, modelMap) {
66
+ for (const run of runs) {
67
+ const model = modelMap?.[run.agent];
68
+ this.recordRun(run.agent, run.success, model);
69
+ }
70
+ }
71
+ /**
72
+ * Get stats for a specific agent type.
73
+ */
74
+ getAgentStats(agentType) {
75
+ return this.data.agents[agentType];
76
+ }
77
+ /**
78
+ * Get all agent stats.
79
+ */
80
+ getAllAgents() {
81
+ return { ...this.data.agents };
82
+ }
83
+ /**
84
+ * Get the best-performing model for a given agent type.
85
+ * Returns undefined if no data is available.
86
+ */
87
+ getBestModel(agentType) {
88
+ const agent = this.data.agents[agentType];
89
+ if (!agent)
90
+ return undefined;
91
+ const models = Object.entries(agent.modelPerformance);
92
+ if (models.length === 0)
93
+ return undefined;
94
+ // Sort by success rate (descending), then by run count (descending)
95
+ models.sort(([, a], [, b]) => {
96
+ const rateA = a.runs > 0 ? a.successes / a.runs : 0;
97
+ const rateB = b.runs > 0 ? b.successes / b.runs : 0;
98
+ if (rateA !== rateB)
99
+ return rateB - rateA;
100
+ return b.runs - a.runs; // More runs = more confidence
101
+ });
102
+ return models[0][0];
103
+ }
104
+ /**
105
+ * Get agents sorted by success rate (ascending — worst performers first).
106
+ * Useful for identifying which agents need attention.
107
+ */
108
+ getWorstPerformers(limit = 5) {
109
+ return Object.entries(this.data.agents)
110
+ .map(([agentType, stats]) => ({ agentType, stats }))
111
+ .sort((a, b) => a.stats.successRate - b.stats.successRate)
112
+ .slice(0, limit);
113
+ }
114
+ /**
115
+ * Get agents sorted by success rate (descending — best performers first).
116
+ */
117
+ getBestPerformers(limit = 5) {
118
+ return Object.entries(this.data.agents)
119
+ .map(([agentType, stats]) => ({ agentType, stats }))
120
+ .sort((a, b) => b.stats.successRate - a.stats.successRate)
121
+ .slice(0, limit);
122
+ }
123
+ /**
124
+ * Format stats as a human-readable string.
125
+ */
126
+ formatStats() {
127
+ const lines = [
128
+ '📊 Agent Performance Stats',
129
+ ` Total runs: ${this.data.totalRuns}`,
130
+ ` Overall success rate: ${(this.data.overallSuccessRate * 100).toFixed(1)}%`,
131
+ '',
132
+ ' ┌─────────────────────┬────────┬────────┬────────┬──────────┐',
133
+ ' │ Agent │ Runs │ OK │ FAIL │ Rate │',
134
+ ' ├─────────────────────┼────────┼────────┼────────┼──────────┤',
135
+ ];
136
+ const sorted = Object.entries(this.data.agents).sort(([, a], [, b]) => b.successRate - a.successRate);
137
+ for (const [agentType, stats] of sorted) {
138
+ const name = agentType.padEnd(18).slice(0, 18);
139
+ const runs = String(stats.totalRuns).padStart(6);
140
+ const ok = String(stats.successfulRuns).padStart(6);
141
+ const fail = String(stats.failedRuns).padStart(6);
142
+ const rate = `${(stats.successRate * 100).toFixed(0)}%`.padStart(7);
143
+ lines.push(` │ ${name} │ ${runs} │ ${ok} │ ${fail} │ ${rate} │`);
144
+ }
145
+ lines.push(' └─────────────────────┴────────┴────────┴────────┴──────────┘');
146
+ return lines.join('\n');
147
+ }
148
+ /**
149
+ * Format best model recommendations as a string.
150
+ */
151
+ formatModelRecommendations() {
152
+ const lines = ['🤖 Recommended Models per Agent'];
153
+ const sorted = Object.entries(this.data.agents).sort(([, a], [, b]) => b.totalRuns - a.totalRuns);
154
+ for (const [agentType, stats] of sorted) {
155
+ const bestModel = this.getBestModel(agentType);
156
+ if (bestModel) {
157
+ const modelPerf = stats.modelPerformance[bestModel];
158
+ const modelRate = modelPerf.runs > 0
159
+ ? (modelPerf.successes / modelPerf.runs * 100).toFixed(0)
160
+ : '?';
161
+ lines.push(` ${agentType.padEnd(18)} → ${bestModel.padEnd(30)} ` +
162
+ `(${modelPerf.successes}/${modelPerf.runs} OK, ${modelRate}%)`);
163
+ }
164
+ }
165
+ return lines.join('\n');
166
+ }
167
+ /**
168
+ * Clear all stats.
169
+ */
170
+ clear() {
171
+ this.data = this.createFresh();
172
+ this.save();
173
+ }
174
+ /**
175
+ * Get raw data for inspection.
176
+ */
177
+ getRaw() {
178
+ return { ...this.data };
179
+ }
180
+ // ── Private ────────────────────────────────────────────────────────────
181
+ createEmpty() {
182
+ return {
183
+ totalRuns: 0,
184
+ successfulRuns: 0,
185
+ failedRuns: 0,
186
+ successRate: 0,
187
+ modelPerformance: {},
188
+ lastRun: 0,
189
+ };
190
+ }
191
+ createFresh() {
192
+ return {
193
+ agents: {},
194
+ totalRuns: 0,
195
+ overallSuccessRate: 0,
196
+ lastUpdated: Date.now(),
197
+ version: CURRENT_VERSION,
198
+ };
199
+ }
200
+ recalculateOverallRate() {
201
+ const agents = Object.values(this.data.agents);
202
+ if (agents.length === 0) {
203
+ this.data.overallSuccessRate = 0;
204
+ return;
205
+ }
206
+ const totalSuccesses = agents.reduce((sum, a) => sum + a.successfulRuns, 0);
207
+ const totalRuns = agents.reduce((sum, a) => sum + a.totalRuns, 0);
208
+ this.data.overallSuccessRate = totalRuns > 0 ? totalSuccesses / totalRuns : 0;
209
+ }
210
+ load() {
211
+ try {
212
+ this.ensureDir();
213
+ if (!existsSync(STATS_PATH))
214
+ return this.createFresh();
215
+ const raw = readFileSync(STATS_PATH, 'utf-8');
216
+ return JSON.parse(raw);
217
+ }
218
+ catch {
219
+ return this.createFresh();
220
+ }
221
+ }
222
+ save() {
223
+ this.ensureDir();
224
+ writeFileSync(STATS_PATH, JSON.stringify(this.data, null, 2), 'utf-8');
225
+ }
226
+ ensureDir() {
227
+ if (!existsSync(MEMORY_DIR)) {
228
+ mkdirSync(MEMORY_DIR, { recursive: true });
229
+ }
230
+ }
231
+ }
232
+ // Singleton
233
+ let statsInstance = null;
234
+ export function getAgentStats() {
235
+ if (!statsInstance) {
236
+ statsInstance = new AgentStats();
237
+ }
238
+ return statsInstance;
239
+ }
240
+ //# sourceMappingURL=agent-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-stats.js","sourceRoot":"","sources":["../../src/learning/agent-stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Benchmark — Standardized model benchmarking system for coding tasks.
3
+ *
4
+ * Runs a suite of coding tasks against configured providers/models and
5
+ * measures: success rate, output quality, latency, and cost.
6
+ *
7
+ * Usage:
8
+ * buff benchmark — Run all tasks against default provider
9
+ * buff benchmark --provider groq — Run against a specific provider
10
+ * buff benchmark --model llama-3.3-70b — Run against a specific model
11
+ * buff benchmark --tasks quick — Run only quick tasks
12
+ * buff benchmark --budget 0.50 — Stop if costs exceed $0.50
13
+ * buff benchmark list — List available benchmark tasks
14
+ * buff benchmark results — Show previous benchmark results
15
+ *
16
+ * Results stored in: ~/.buff/memory/benchmarks.json
17
+ */
18
+ import type { InferenceProvider } from '../inference/interface.js';
19
+ /** Difficulty level of a benchmark task */
20
+ export type TaskDifficulty = 'easy' | 'medium' | 'hard' | 'expert';
21
+ /** Category tags for benchmark tasks */
22
+ export type TaskTag = 'code-generation' | 'refactoring' | 'debugging' | 'explanation' | 'testing' | 'documentation' | 'security' | 'optimization' | 'translation' | 'comprehension';
23
+ /** A single benchmark task */
24
+ export interface BenchmarkTask {
25
+ /** Unique task identifier */
26
+ id: string;
27
+ /** Human-readable title */
28
+ title: string;
29
+ /** Category tag */
30
+ tag: TaskTag;
31
+ /** Difficulty level */
32
+ difficulty: TaskDifficulty;
33
+ /** The prompt to send to the model */
34
+ prompt: string;
35
+ /** Expected output patterns (optional — for automated scoring) */
36
+ expectedPatterns?: string[];
37
+ /** Expected output anti-patterns (things that shouldn't appear) */
38
+ antiPatterns?: string[];
39
+ /** Maximum expected tokens for a good answer */
40
+ maxExpectedTokens: number;
41
+ /** Time estimate: 'quick' (< 30s), 'medium' (< 2min), 'slow' (> 2min) */
42
+ timeEstimate: 'quick' | 'medium' | 'slow';
43
+ /** Expected output language (for syntax checking) */
44
+ outputLanguage?: 'typescript' | 'javascript' | 'python' | 'go' | 'rust' | 'bash' | 'text';
45
+ }
46
+ /** The result of a single benchmark task run */
47
+ export interface BenchmarkResult {
48
+ /** Task ID */
49
+ taskId: string;
50
+ /** Provider name */
51
+ provider: string;
52
+ /** Model name */
53
+ model: string;
54
+ /** The model's output */
55
+ output: string;
56
+ /** Whether the output was successfully generated */
57
+ success: boolean;
58
+ /** Latency in milliseconds */
59
+ latencyMs: number;
60
+ /** Estimated input tokens */
61
+ inputTokens: number;
62
+ /** Estimated output tokens */
63
+ outputTokens: number;
64
+ /** Estimated cost in USD */
65
+ costUsd: number;
66
+ /** Quality score (0-1, heuristic-based) */
67
+ qualityScore: number;
68
+ /** Error message if failed */
69
+ error?: string;
70
+ /** Timestamp */
71
+ timestamp: number;
72
+ }
73
+ /** A complete benchmark run across multiple tasks */
74
+ export interface BenchmarkRun {
75
+ /** Unique run ID */
76
+ id: string;
77
+ /** Provider used */
78
+ provider: string;
79
+ /** Model used */
80
+ model: string;
81
+ /** When the run started */
82
+ startedAt: number;
83
+ /** When the run ended */
84
+ endedAt: number;
85
+ /** Task results */
86
+ results: BenchmarkResult[];
87
+ /** Summary statistics */
88
+ summary: BenchmarkSummary;
89
+ }
90
+ /** Summary statistics for a benchmark run */
91
+ export interface BenchmarkSummary {
92
+ /** Total tasks */
93
+ totalTasks: number;
94
+ /** Tasks that succeeded */
95
+ tasksPassed: number;
96
+ /** Tasks that failed */
97
+ tasksFailed: number;
98
+ /** Average quality score (0-1) */
99
+ avgQualityScore: number;
100
+ /** Median latency in ms */
101
+ medianLatencyMs: number;
102
+ /** Total cost in USD */
103
+ totalCostUsd: number;
104
+ /** Total tokens consumed */
105
+ totalTokens: number;
106
+ }
107
+ /**
108
+ * Generate a quality score for a model's output based on heuristics.
109
+ * Scores range from 0 (poor) to 1 (excellent).
110
+ */
111
+ export declare function scoreQuality(output: string, task: BenchmarkTask): number;
112
+ /**
113
+ * Run the benchmark suite against a provider/model.
114
+ */
115
+ export declare function runBenchmark(provider: InferenceProvider, providerName: string, model: string, options?: {
116
+ /** Only run tasks with these IDs */
117
+ taskIds?: string[];
118
+ /** Only run tasks matching this time estimate */
119
+ timeEstimate?: 'quick' | 'medium' | 'slow';
120
+ /** Maximum cost in USD before stopping */
121
+ budget?: number;
122
+ /** Callback for progress updates */
123
+ onProgress?: (current: number, total: number, task: BenchmarkTask) => void;
124
+ }): Promise<BenchmarkRun>;
125
+ /**
126
+ * Format a benchmark run as a human-readable report.
127
+ */
128
+ export declare function formatBenchmarkReport(run: BenchmarkRun): string;
129
+ /**
130
+ * Format a benchmark run as JSON (for machine consumption).
131
+ */
132
+ export declare function formatBenchmarkJSON(run: BenchmarkRun): string;
133
+ /**
134
+ * Format a benchmark run as Markdown (for documentation).
135
+ */
136
+ export declare function formatBenchmarkMarkdown(run: BenchmarkRun): string;
137
+ /**
138
+ * Get all available benchmark tasks.
139
+ */
140
+ export declare function getBenchmarkTasks(): BenchmarkTask[];
141
+ /**
142
+ * Get a specific benchmark task by ID.
143
+ */
144
+ export declare function getBenchmarkTask(id: string): BenchmarkTask | undefined;
145
+ /**
146
+ * Get all past benchmark runs.
147
+ */
148
+ export declare function getBenchmarkRuns(): BenchmarkRun[];
149
+ /**
150
+ * Get the most recent benchmark run for a specific provider/model.
151
+ */
152
+ export declare function getLatestBenchmarkRun(provider: string, model: string): BenchmarkRun | null;
153
+ /**
154
+ * Compare two benchmark runs side by side.
155
+ */
156
+ export declare function compareBenchmarks(runA: BenchmarkRun, runB: BenchmarkRun): string;
157
+ /**
158
+ * Clear all benchmark data.
159
+ */
160
+ export declare function clearBenchmarks(): void;
161
+ //# sourceMappingURL=benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/learning/benchmark.ts"],"names":[],"mappings":"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"}