@elizaos/plugin-training 2.0.3-beta.6 → 2.0.3-beta.7

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 (363) hide show
  1. package/dist/backends/native.d.ts +96 -0
  2. package/dist/backends/native.d.ts.map +1 -0
  3. package/dist/backends/native.js +308 -0
  4. package/dist/backends/native.js.map +1 -0
  5. package/dist/cli/train.d.ts +22 -0
  6. package/dist/cli/train.d.ts.map +1 -0
  7. package/dist/cli/train.js +219 -0
  8. package/dist/cli/train.js.map +1 -0
  9. package/dist/core/action-benchmark-runner.d.ts +55 -0
  10. package/dist/core/action-benchmark-runner.d.ts.map +1 -0
  11. package/dist/core/action-benchmark-runner.js +341 -0
  12. package/dist/core/action-benchmark-runner.js.map +1 -0
  13. package/dist/core/artifact-store.d.ts +72 -0
  14. package/dist/core/artifact-store.d.ts.map +1 -0
  15. package/dist/core/artifact-store.js +50 -0
  16. package/dist/core/artifact-store.js.map +1 -0
  17. package/dist/core/benchmark-matrix-artifact.d.ts +102 -0
  18. package/dist/core/benchmark-matrix-artifact.d.ts.map +1 -0
  19. package/dist/core/benchmark-matrix-artifact.js +381 -0
  20. package/dist/core/benchmark-matrix-artifact.js.map +1 -0
  21. package/dist/core/benchmark-vs-cerebras-runner.d.ts +37 -0
  22. package/dist/core/benchmark-vs-cerebras-runner.d.ts.map +1 -0
  23. package/dist/core/benchmark-vs-cerebras-runner.js +151 -0
  24. package/dist/core/benchmark-vs-cerebras-runner.js.map +1 -0
  25. package/dist/core/cerebras-eval-model.d.ts +54 -0
  26. package/dist/core/cerebras-eval-model.d.ts.map +1 -0
  27. package/dist/core/cerebras-eval-model.js +249 -0
  28. package/dist/core/cerebras-eval-model.js.map +1 -0
  29. package/dist/core/cli.d.ts +15 -0
  30. package/dist/core/cli.d.ts.map +1 -0
  31. package/dist/core/cli.js +1003 -0
  32. package/dist/core/cli.js.map +1 -0
  33. package/dist/core/context-audit.d.ts +51 -0
  34. package/dist/core/context-audit.d.ts.map +1 -0
  35. package/dist/core/context-audit.js +166 -0
  36. package/dist/core/context-audit.js.map +1 -0
  37. package/dist/core/context-catalog.d.ts +47 -0
  38. package/dist/core/context-catalog.d.ts.map +1 -0
  39. package/dist/core/context-catalog.js +269 -0
  40. package/dist/core/context-catalog.js.map +1 -0
  41. package/dist/core/context-types.d.ts +3 -0
  42. package/dist/core/context-types.d.ts.map +1 -0
  43. package/dist/core/context-types.js +18 -0
  44. package/dist/core/context-types.js.map +1 -0
  45. package/dist/core/dataset-generator.d.ts +135 -0
  46. package/dist/core/dataset-generator.d.ts.map +1 -0
  47. package/dist/core/dataset-generator.js +895 -0
  48. package/dist/core/dataset-generator.js.map +1 -0
  49. package/dist/core/eliza1-benchmark-recipe.d.ts +18 -0
  50. package/dist/core/eliza1-benchmark-recipe.d.ts.map +1 -0
  51. package/dist/core/eliza1-benchmark-recipe.js +64 -0
  52. package/dist/core/eliza1-benchmark-recipe.js.map +1 -0
  53. package/dist/core/eliza1-bundle-stager.d.ts +57 -0
  54. package/dist/core/eliza1-bundle-stager.d.ts.map +1 -0
  55. package/dist/core/eliza1-bundle-stager.js +149 -0
  56. package/dist/core/eliza1-bundle-stager.js.map +1 -0
  57. package/dist/core/ensure-cron-job.d.ts +53 -0
  58. package/dist/core/ensure-cron-job.d.ts.map +1 -0
  59. package/dist/core/ensure-cron-job.js +51 -0
  60. package/dist/core/ensure-cron-job.js.map +1 -0
  61. package/dist/core/eval-comparison-artifact.d.ts +72 -0
  62. package/dist/core/eval-comparison-artifact.d.ts.map +1 -0
  63. package/dist/core/eval-comparison-artifact.js +281 -0
  64. package/dist/core/eval-comparison-artifact.js.map +1 -0
  65. package/dist/core/feed-generation-runner.d.ts +37 -0
  66. package/dist/core/feed-generation-runner.d.ts.map +1 -0
  67. package/dist/core/feed-generation-runner.js +232 -0
  68. package/dist/core/feed-generation-runner.js.map +1 -0
  69. package/dist/core/html-escape.d.ts +5 -0
  70. package/dist/core/html-escape.d.ts.map +1 -0
  71. package/dist/core/html-escape.js +11 -0
  72. package/dist/core/html-escape.js.map +1 -0
  73. package/dist/core/huggingface-dataset-ingest.d.ts +52 -0
  74. package/dist/core/huggingface-dataset-ingest.d.ts.map +1 -0
  75. package/dist/core/huggingface-dataset-ingest.js +134 -0
  76. package/dist/core/huggingface-dataset-ingest.js.map +1 -0
  77. package/dist/core/index.d.ts +29 -0
  78. package/dist/core/index.d.ts.map +1 -0
  79. package/dist/core/index.js +204 -0
  80. package/dist/core/index.js.map +1 -0
  81. package/dist/core/privacy-filter.d.ts +95 -0
  82. package/dist/core/privacy-filter.d.ts.map +1 -0
  83. package/dist/core/privacy-filter.js +324 -0
  84. package/dist/core/privacy-filter.js.map +1 -0
  85. package/dist/core/promotion-gate.d.ts +117 -0
  86. package/dist/core/promotion-gate.d.ts.map +1 -0
  87. package/dist/core/promotion-gate.js +85 -0
  88. package/dist/core/promotion-gate.js.map +1 -0
  89. package/dist/core/promotion-persist.d.ts +116 -0
  90. package/dist/core/promotion-persist.d.ts.map +1 -0
  91. package/dist/core/promotion-persist.js +93 -0
  92. package/dist/core/promotion-persist.js.map +1 -0
  93. package/dist/core/prompt-compare.d.ts +99 -0
  94. package/dist/core/prompt-compare.d.ts.map +1 -0
  95. package/dist/core/prompt-compare.js +210 -0
  96. package/dist/core/prompt-compare.js.map +1 -0
  97. package/dist/core/replay-validator.d.ts +136 -0
  98. package/dist/core/replay-validator.d.ts.map +1 -0
  99. package/dist/core/replay-validator.js +312 -0
  100. package/dist/core/replay-validator.js.map +1 -0
  101. package/dist/core/roleplay-executor.d.ts +123 -0
  102. package/dist/core/roleplay-executor.d.ts.map +1 -0
  103. package/dist/core/roleplay-executor.js +675 -0
  104. package/dist/core/roleplay-executor.js.map +1 -0
  105. package/dist/core/roleplay-trajectories.d.ts +54 -0
  106. package/dist/core/roleplay-trajectories.d.ts.map +1 -0
  107. package/dist/core/roleplay-trajectories.js +88 -0
  108. package/dist/core/roleplay-trajectories.js.map +1 -0
  109. package/dist/core/scenario-blueprints.d.ts +62 -0
  110. package/dist/core/scenario-blueprints.d.ts.map +1 -0
  111. package/dist/core/scenario-blueprints.js +850 -0
  112. package/dist/core/scenario-blueprints.js.map +1 -0
  113. package/dist/core/scenario-runner.d.ts +36 -0
  114. package/dist/core/scenario-runner.d.ts.map +1 -0
  115. package/dist/core/scenario-runner.js +216 -0
  116. package/dist/core/scenario-runner.js.map +1 -0
  117. package/dist/core/skill-scoring-cron.d.ts +57 -0
  118. package/dist/core/skill-scoring-cron.d.ts.map +1 -0
  119. package/dist/core/skill-scoring-cron.js +180 -0
  120. package/dist/core/skill-scoring-cron.js.map +1 -0
  121. package/dist/core/test-trajectory-collector.d.ts +37 -0
  122. package/dist/core/test-trajectory-collector.d.ts.map +1 -0
  123. package/dist/core/test-trajectory-collector.js +225 -0
  124. package/dist/core/test-trajectory-collector.js.map +1 -0
  125. package/dist/core/track-c-queue-task.d.ts +37 -0
  126. package/dist/core/track-c-queue-task.d.ts.map +1 -0
  127. package/dist/core/track-c-queue-task.js +104 -0
  128. package/dist/core/track-c-queue-task.js.map +1 -0
  129. package/dist/core/training-analysis-index.d.ts +104 -0
  130. package/dist/core/training-analysis-index.d.ts.map +1 -0
  131. package/dist/core/training-analysis-index.js +3297 -0
  132. package/dist/core/training-analysis-index.js.map +1 -0
  133. package/dist/core/training-collection-runner.d.ts +508 -0
  134. package/dist/core/training-collection-runner.d.ts.map +1 -0
  135. package/dist/core/training-collection-runner.js +2299 -0
  136. package/dist/core/training-collection-runner.js.map +1 -0
  137. package/dist/core/training-config.d.ts +52 -0
  138. package/dist/core/training-config.d.ts.map +1 -0
  139. package/dist/core/training-config.js +117 -0
  140. package/dist/core/training-config.js.map +1 -0
  141. package/dist/core/training-orchestrator.d.ts +112 -0
  142. package/dist/core/training-orchestrator.d.ts.map +1 -0
  143. package/dist/core/training-orchestrator.js +729 -0
  144. package/dist/core/training-orchestrator.js.map +1 -0
  145. package/dist/core/training-readiness-report.d.ts +52 -0
  146. package/dist/core/training-readiness-report.d.ts.map +1 -0
  147. package/dist/core/training-readiness-report.js +765 -0
  148. package/dist/core/training-readiness-report.js.map +1 -0
  149. package/dist/core/trajectory-consumer.d.ts +15 -0
  150. package/dist/core/trajectory-consumer.d.ts.map +1 -0
  151. package/dist/core/trajectory-consumer.js +61 -0
  152. package/dist/core/trajectory-consumer.js.map +1 -0
  153. package/dist/core/trajectory-export-bundle.d.ts +95 -0
  154. package/dist/core/trajectory-export-bundle.d.ts.map +1 -0
  155. package/dist/core/trajectory-export-bundle.js +561 -0
  156. package/dist/core/trajectory-export-bundle.js.map +1 -0
  157. package/dist/core/trajectory-export-cron.d.ts +57 -0
  158. package/dist/core/trajectory-export-cron.d.ts.map +1 -0
  159. package/dist/core/trajectory-export-cron.js +170 -0
  160. package/dist/core/trajectory-export-cron.js.map +1 -0
  161. package/dist/core/trajectory-hf-upload.d.ts +50 -0
  162. package/dist/core/trajectory-hf-upload.d.ts.map +1 -0
  163. package/dist/core/trajectory-hf-upload.js +111 -0
  164. package/dist/core/trajectory-hf-upload.js.map +1 -0
  165. package/dist/core/trajectory-task-datasets.d.ts +62 -0
  166. package/dist/core/trajectory-task-datasets.d.ts.map +1 -0
  167. package/dist/core/trajectory-task-datasets.js +427 -0
  168. package/dist/core/trajectory-task-datasets.js.map +1 -0
  169. package/dist/core/wait-for-service.d.ts +25 -0
  170. package/dist/core/wait-for-service.d.ts.map +1 -0
  171. package/dist/core/wait-for-service.js +19 -0
  172. package/dist/core/wait-for-service.js.map +1 -0
  173. package/dist/core/workspace-runtime.d.ts +4 -0
  174. package/dist/core/workspace-runtime.d.ts.map +1 -0
  175. package/dist/core/workspace-runtime.js +25 -0
  176. package/dist/core/workspace-runtime.js.map +1 -0
  177. package/dist/dspy/artifact.d.ts +54 -0
  178. package/dist/dspy/artifact.d.ts.map +1 -0
  179. package/dist/dspy/artifact.js +61 -0
  180. package/dist/dspy/artifact.js.map +1 -0
  181. package/dist/dspy/chain-of-thought.d.ts +27 -0
  182. package/dist/dspy/chain-of-thought.d.ts.map +1 -0
  183. package/dist/dspy/chain-of-thought.js +43 -0
  184. package/dist/dspy/chain-of-thought.js.map +1 -0
  185. package/dist/dspy/examples.d.ts +72 -0
  186. package/dist/dspy/examples.d.ts.map +1 -0
  187. package/dist/dspy/examples.js +105 -0
  188. package/dist/dspy/examples.js.map +1 -0
  189. package/dist/dspy/index.d.ts +15 -0
  190. package/dist/dspy/index.d.ts.map +1 -0
  191. package/dist/dspy/index.js +40 -0
  192. package/dist/dspy/index.js.map +1 -0
  193. package/dist/dspy/lm-adapter.d.ts +100 -0
  194. package/dist/dspy/lm-adapter.d.ts.map +1 -0
  195. package/dist/dspy/lm-adapter.js +81 -0
  196. package/dist/dspy/lm-adapter.js.map +1 -0
  197. package/dist/dspy/optimizers/dspy-bootstrap-fewshot.d.ts +23 -0
  198. package/dist/dspy/optimizers/dspy-bootstrap-fewshot.d.ts.map +1 -0
  199. package/dist/dspy/optimizers/dspy-bootstrap-fewshot.js +85 -0
  200. package/dist/dspy/optimizers/dspy-bootstrap-fewshot.js.map +1 -0
  201. package/dist/dspy/optimizers/dspy-copro.d.ts +29 -0
  202. package/dist/dspy/optimizers/dspy-copro.d.ts.map +1 -0
  203. package/dist/dspy/optimizers/dspy-copro.js +141 -0
  204. package/dist/dspy/optimizers/dspy-copro.js.map +1 -0
  205. package/dist/dspy/optimizers/dspy-mipro.d.ts +37 -0
  206. package/dist/dspy/optimizers/dspy-mipro.d.ts.map +1 -0
  207. package/dist/dspy/optimizers/dspy-mipro.js +194 -0
  208. package/dist/dspy/optimizers/dspy-mipro.js.map +1 -0
  209. package/dist/dspy/optimizers/index.d.ts +5 -0
  210. package/dist/dspy/optimizers/index.d.ts.map +1 -0
  211. package/dist/dspy/optimizers/index.js +11 -0
  212. package/dist/dspy/optimizers/index.js.map +1 -0
  213. package/dist/dspy/optimizers/types.d.ts +39 -0
  214. package/dist/dspy/optimizers/types.d.ts.map +1 -0
  215. package/dist/dspy/optimizers/types.js +1 -0
  216. package/dist/dspy/optimizers/types.js.map +1 -0
  217. package/dist/dspy/predict.d.ts +49 -0
  218. package/dist/dspy/predict.d.ts.map +1 -0
  219. package/dist/dspy/predict.js +73 -0
  220. package/dist/dspy/predict.js.map +1 -0
  221. package/dist/dspy/signature.d.ts +88 -0
  222. package/dist/dspy/signature.d.ts.map +1 -0
  223. package/dist/dspy/signature.js +205 -0
  224. package/dist/dspy/signature.js.map +1 -0
  225. package/dist/index.d.ts +15 -0
  226. package/dist/index.d.ts.map +1 -0
  227. package/dist/index.js +15 -0
  228. package/dist/index.js.map +1 -0
  229. package/dist/optimizers/bootstrap-fewshot.d.ts +42 -0
  230. package/dist/optimizers/bootstrap-fewshot.d.ts.map +1 -0
  231. package/dist/optimizers/bootstrap-fewshot.js +92 -0
  232. package/dist/optimizers/bootstrap-fewshot.js.map +1 -0
  233. package/dist/optimizers/gepa.d.ts +63 -0
  234. package/dist/optimizers/gepa.d.ts.map +1 -0
  235. package/dist/optimizers/gepa.js +232 -0
  236. package/dist/optimizers/gepa.js.map +1 -0
  237. package/dist/optimizers/index.d.ts +7 -0
  238. package/dist/optimizers/index.d.ts.map +1 -0
  239. package/dist/optimizers/index.js +51 -0
  240. package/dist/optimizers/index.js.map +1 -0
  241. package/dist/optimizers/instruction-search.d.ts +39 -0
  242. package/dist/optimizers/instruction-search.d.ts.map +1 -0
  243. package/dist/optimizers/instruction-search.js +108 -0
  244. package/dist/optimizers/instruction-search.js.map +1 -0
  245. package/dist/optimizers/prompt-evolution.d.ts +39 -0
  246. package/dist/optimizers/prompt-evolution.d.ts.map +1 -0
  247. package/dist/optimizers/prompt-evolution.js +101 -0
  248. package/dist/optimizers/prompt-evolution.js.map +1 -0
  249. package/dist/optimizers/scoring.d.ts +139 -0
  250. package/dist/optimizers/scoring.d.ts.map +1 -0
  251. package/dist/optimizers/scoring.js +299 -0
  252. package/dist/optimizers/scoring.js.map +1 -0
  253. package/dist/optimizers/types.d.ts +105 -0
  254. package/dist/optimizers/types.d.ts.map +1 -0
  255. package/dist/optimizers/types.js +1 -0
  256. package/dist/optimizers/types.js.map +1 -0
  257. package/dist/register-runtime.d.ts +3 -0
  258. package/dist/register-runtime.d.ts.map +1 -0
  259. package/dist/register-runtime.js +60 -0
  260. package/dist/register-runtime.js.map +1 -0
  261. package/dist/register-terminal-view.d.ts +15 -0
  262. package/dist/register-terminal-view.d.ts.map +1 -0
  263. package/dist/register-terminal-view.js +31 -0
  264. package/dist/register-terminal-view.js.map +1 -0
  265. package/dist/routes/experience-routes.d.ts +21 -0
  266. package/dist/routes/experience-routes.d.ts.map +1 -0
  267. package/dist/routes/experience-routes.js +513 -0
  268. package/dist/routes/experience-routes.js.map +1 -0
  269. package/dist/routes/index.d.ts +5 -0
  270. package/dist/routes/index.d.ts.map +1 -0
  271. package/dist/routes/index.js +17 -0
  272. package/dist/routes/index.js.map +1 -0
  273. package/dist/routes/training-routes.d.ts +10 -0
  274. package/dist/routes/training-routes.d.ts.map +1 -0
  275. package/dist/routes/training-routes.js +1239 -0
  276. package/dist/routes/training-routes.js.map +1 -0
  277. package/dist/routes/training-vast-routes.d.ts +35 -0
  278. package/dist/routes/training-vast-routes.d.ts.map +1 -0
  279. package/dist/routes/training-vast-routes.js +249 -0
  280. package/dist/routes/training-vast-routes.js.map +1 -0
  281. package/dist/routes/trajectory-routes.d.ts +19 -0
  282. package/dist/routes/trajectory-routes.d.ts.map +1 -0
  283. package/dist/routes/trajectory-routes.js +1122 -0
  284. package/dist/routes/trajectory-routes.js.map +1 -0
  285. package/dist/services/index.d.ts +9 -0
  286. package/dist/services/index.d.ts.map +1 -0
  287. package/dist/services/index.js +63 -0
  288. package/dist/services/index.js.map +1 -0
  289. package/dist/services/training-backend-check.d.ts +8 -0
  290. package/dist/services/training-backend-check.d.ts.map +1 -0
  291. package/dist/services/training-backend-check.js +31 -0
  292. package/dist/services/training-backend-check.js.map +1 -0
  293. package/dist/services/training-service-like.d.ts +40 -0
  294. package/dist/services/training-service-like.d.ts.map +1 -0
  295. package/dist/services/training-service-like.js +1 -0
  296. package/dist/services/training-service-like.js.map +1 -0
  297. package/dist/services/training-service-registry.d.ts +4 -0
  298. package/dist/services/training-service-registry.d.ts.map +1 -0
  299. package/dist/services/training-service-registry.js +12 -0
  300. package/dist/services/training-service-registry.js.map +1 -0
  301. package/dist/services/training-service.d.ts +59 -0
  302. package/dist/services/training-service.d.ts.map +1 -0
  303. package/dist/services/training-service.js +154 -0
  304. package/dist/services/training-service.js.map +1 -0
  305. package/dist/services/training-trigger.d.ts +177 -0
  306. package/dist/services/training-trigger.d.ts.map +1 -0
  307. package/dist/services/training-trigger.js +300 -0
  308. package/dist/services/training-trigger.js.map +1 -0
  309. package/dist/services/training-vast-service.d.ts +149 -0
  310. package/dist/services/training-vast-service.d.ts.map +1 -0
  311. package/dist/services/training-vast-service.js +648 -0
  312. package/dist/services/training-vast-service.js.map +1 -0
  313. package/dist/services/vast-inference-stats.d.ts +37 -0
  314. package/dist/services/vast-inference-stats.d.ts.map +1 -0
  315. package/dist/services/vast-inference-stats.js +81 -0
  316. package/dist/services/vast-inference-stats.js.map +1 -0
  317. package/dist/services/vast-job-store.d.ts +74 -0
  318. package/dist/services/vast-job-store.d.ts.map +1 -0
  319. package/dist/services/vast-job-store.js +194 -0
  320. package/dist/services/vast-job-store.js.map +1 -0
  321. package/dist/services/vast-subprocess.d.ts +27 -0
  322. package/dist/services/vast-subprocess.d.ts.map +1 -0
  323. package/dist/services/vast-subprocess.js +78 -0
  324. package/dist/services/vast-subprocess.js.map +1 -0
  325. package/dist/setup-routes.d.ts +17 -0
  326. package/dist/setup-routes.d.ts.map +1 -0
  327. package/dist/setup-routes.js +319 -0
  328. package/dist/setup-routes.js.map +1 -0
  329. package/dist/ui/FineTuningSpatialView.d.ts +49 -0
  330. package/dist/ui/FineTuningSpatialView.d.ts.map +1 -0
  331. package/dist/ui/FineTuningSpatialView.js +154 -0
  332. package/dist/ui/FineTuningSpatialView.js.map +1 -0
  333. package/dist/ui/FineTuningView.d.ts +7 -0
  334. package/dist/ui/FineTuningView.d.ts.map +1 -0
  335. package/dist/ui/FineTuningView.helpers.d.ts +17 -0
  336. package/dist/ui/FineTuningView.helpers.d.ts.map +1 -0
  337. package/dist/ui/FineTuningView.helpers.js +30 -0
  338. package/dist/ui/FineTuningView.helpers.js.map +1 -0
  339. package/dist/ui/FineTuningView.interact.d.ts +2 -0
  340. package/dist/ui/FineTuningView.interact.d.ts.map +1 -0
  341. package/dist/ui/FineTuningView.interact.js +300 -0
  342. package/dist/ui/FineTuningView.interact.js.map +1 -0
  343. package/dist/ui/FineTuningView.js +4653 -0
  344. package/dist/ui/FineTuningView.js.map +1 -0
  345. package/dist/ui/fine-tuning-panels.d.ts +100 -0
  346. package/dist/ui/fine-tuning-panels.d.ts.map +1 -0
  347. package/dist/ui/fine-tuning-panels.helpers.d.ts +19 -0
  348. package/dist/ui/fine-tuning-panels.helpers.d.ts.map +1 -0
  349. package/dist/ui/fine-tuning-panels.helpers.js +77 -0
  350. package/dist/ui/fine-tuning-panels.helpers.js.map +1 -0
  351. package/dist/ui/fine-tuning-panels.js +928 -0
  352. package/dist/ui/fine-tuning-panels.js.map +1 -0
  353. package/dist/ui/index.d.ts +5 -0
  354. package/dist/ui/index.d.ts.map +1 -0
  355. package/dist/ui/index.js +5 -0
  356. package/dist/ui/index.js.map +1 -0
  357. package/dist/ui/training-view-bundle.d.ts +3 -0
  358. package/dist/ui/training-view-bundle.d.ts.map +1 -0
  359. package/dist/ui/training-view-bundle.js +7 -0
  360. package/dist/ui/training-view-bundle.js.map +1 -0
  361. package/dist/views/bundle.js +5312 -0
  362. package/dist/views/bundle.js.map +1 -0
  363. package/package.json +7 -7
@@ -0,0 +1,54 @@
1
+ import { type JudgeResponse } from "@elizaos/scenario-runner/cerebras-judge";
2
+ export interface CerebrasChatRequest {
3
+ prompt: string;
4
+ systemPrompt?: string;
5
+ temperature?: number;
6
+ maxTokens?: number;
7
+ reasoningEffort?: "low" | "medium" | "high";
8
+ }
9
+ export interface CerebrasChatUsage {
10
+ promptTokens?: number;
11
+ completionTokens?: number;
12
+ totalTokens?: number;
13
+ cachedTokens?: number;
14
+ }
15
+ export interface CerebrasChatResponse {
16
+ text: string;
17
+ usage?: CerebrasChatUsage;
18
+ raw?: unknown;
19
+ }
20
+ export type EvalModelClient = (req: CerebrasChatRequest) => Promise<CerebrasChatResponse>;
21
+ export declare function getEvalModelClient(): EvalModelClient;
22
+ export declare function getTrainingModelClient(): EvalModelClient;
23
+ /**
24
+ * Cerebras-only judge helper. Routes through the shared `CerebrasJudge`
25
+ * transport (tolerant parsing, 429/5xx retry, json_object opt-in). The
26
+ * Cerebras eval provider is the only one configured here; callers that
27
+ * need Anthropic should use `getEvalModelClient()` directly.
28
+ *
29
+ * Returns the raw model text for backward compatibility with existing
30
+ * callers. New callers should consume `judgeWithCerebrasShared()` (below)
31
+ * to get the canonical {raw, json, score?, verdict?, reason?} shape.
32
+ */
33
+ export declare function judgeWithCerebras(prompt: string, options?: {
34
+ maxTokens?: number;
35
+ temperature?: number;
36
+ systemPrompt?: string;
37
+ }): Promise<string>;
38
+ /**
39
+ * New canonical entry: returns the full JudgeResponse for callers that
40
+ * want the parsed score/verdict/reason without re-parsing the raw text.
41
+ */
42
+ export declare function judgeWithCerebrasShared(prompt: string, options?: {
43
+ maxTokens?: number;
44
+ temperature?: number;
45
+ systemPrompt?: string;
46
+ }): Promise<JudgeResponse>;
47
+ export declare function getTrainingUseModelAdapter(): (input: {
48
+ prompt: string;
49
+ temperature?: number;
50
+ maxTokens?: number;
51
+ }) => Promise<string>;
52
+ export declare function isCerebrasEvalEnabled(): boolean;
53
+ export declare function isCerebrasTrainingEnabled(): boolean;
54
+ //# sourceMappingURL=cerebras-eval-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cerebras-eval-model.d.ts","sourceRoot":"","sources":["../../src/core/cerebras-eval-model.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,yCAAyC,CAAC;AAUjD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,CAC5B,GAAG,EAAE,mBAAmB,KACrB,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAgRnC,wBAAgB,kBAAkB,IAAI,eAAe,CAGpD;AAED,wBAAgB,sBAAsB,IAAI,eAAe,CAGxD;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,aAAa,CAAC,CA0BxB;AAID,wBAAgB,0BAA0B,IAAI,CAAC,KAAK,EAAE;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,KAAK,OAAO,CAAC,MAAM,CAAC,CAUpB;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAM/C;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAMnD"}
@@ -0,0 +1,249 @@
1
+ import {
2
+ CerebrasJudge
3
+ } from "@elizaos/scenario-runner/cerebras-judge";
4
+ function readEnv(...keys) {
5
+ for (const key of keys) {
6
+ const value = process.env[key]?.trim();
7
+ if (value && value.length > 0) return value;
8
+ }
9
+ return void 0;
10
+ }
11
+ function resolveCerebrasApiKey(role) {
12
+ const apiKey = readEnv(
13
+ role === "eval" ? "EVAL_CEREBRAS_API_KEY" : "TRAIN_CEREBRAS_API_KEY",
14
+ "CEREBRAS_API_KEY",
15
+ "ELIZA_E2E_CEREBRAS_API_KEY"
16
+ );
17
+ if (!apiKey) {
18
+ throw new Error(
19
+ `[${role}-model] CEREBRAS_API_KEY is not set. Eval/training runs require Cerebras credentials. Set CEREBRAS_API_KEY in eliza/.env.`
20
+ );
21
+ }
22
+ return apiKey;
23
+ }
24
+ function resolveBaseUrl() {
25
+ return readEnv("CEREBRAS_BASE_URL") ?? "https://api.cerebras.ai/v1";
26
+ }
27
+ function resolveEvalModel() {
28
+ return readEnv("EVAL_MODEL", "EVAL_MODEL_NAME") ?? readEnv("CEREBRAS_MODEL") ?? "gpt-oss-120b";
29
+ }
30
+ function resolveTrainingModel() {
31
+ return readEnv("TRAIN_MODEL", "TRAINING_MODEL", "TRAIN_MODEL_NAME") ?? readEnv("CEREBRAS_MODEL") ?? "gpt-oss-120b";
32
+ }
33
+ function resolveProvider(role) {
34
+ return readEnv(
35
+ role === "eval" ? "EVAL_MODEL_PROVIDER" : "TRAIN_MODEL_PROVIDER",
36
+ role === "eval" ? "EVAL_PROVIDER" : "TRAINING_PROVIDER"
37
+ ) ?? "cerebras";
38
+ }
39
+ function resolveAnthropicApiKey(role) {
40
+ const apiKey = readEnv("ANTHROPIC_API_KEY");
41
+ if (!apiKey) {
42
+ throw new Error(
43
+ `[${role}-model] ANTHROPIC_API_KEY is not set; required when ${role === "eval" ? "EVAL_MODEL_PROVIDER" : "TRAIN_MODEL_PROVIDER"}=anthropic.`
44
+ );
45
+ }
46
+ return apiKey;
47
+ }
48
+ function resolveAnthropicModel(role) {
49
+ const explicitAnthropic = readEnv("ANTHROPIC_LARGE_MODEL");
50
+ if (explicitAnthropic) return explicitAnthropic;
51
+ if (role === "eval") {
52
+ return readEnv("EVAL_ANTHROPIC_MODEL", "EVAL_MODEL_NAME") ?? "claude-haiku-4-5-20251001";
53
+ }
54
+ return readEnv("TRAIN_ANTHROPIC_MODEL", "TRAIN_MODEL_NAME") ?? "claude-haiku-4-5-20251001";
55
+ }
56
+ function resolveConfig(role) {
57
+ const provider = resolveProvider(role);
58
+ if (provider === "cerebras") {
59
+ return {
60
+ apiKey: resolveCerebrasApiKey(role),
61
+ baseUrl: resolveBaseUrl(),
62
+ model: role === "eval" ? resolveEvalModel() : resolveTrainingModel(),
63
+ role,
64
+ providerName: "cerebras"
65
+ };
66
+ }
67
+ if (provider === "anthropic") {
68
+ return {
69
+ apiKey: resolveAnthropicApiKey(role),
70
+ baseUrl: "https://api.anthropic.com/v1",
71
+ model: resolveAnthropicModel(role),
72
+ role,
73
+ providerName: "anthropic"
74
+ };
75
+ }
76
+ throw new Error(
77
+ `[${role}-model] unknown provider "${provider}"; supported: cerebras, anthropic. Set ${role === "eval" ? "EVAL_MODEL_PROVIDER" : "TRAIN_MODEL_PROVIDER"}=cerebras|anthropic.`
78
+ );
79
+ }
80
+ const RETRYABLE_STATUS = /* @__PURE__ */ new Set([429, 500, 502, 503, 504]);
81
+ const MAX_CHAT_ATTEMPTS = 5;
82
+ async function fetchChatWithRetry(config, body) {
83
+ let lastError;
84
+ for (let attempt = 1; attempt <= MAX_CHAT_ATTEMPTS; attempt += 1) {
85
+ try {
86
+ const response = await fetch(`${config.baseUrl}/chat/completions`, {
87
+ method: "POST",
88
+ headers: {
89
+ "Content-Type": "application/json",
90
+ Authorization: `Bearer ${config.apiKey}`
91
+ },
92
+ body: JSON.stringify(body)
93
+ });
94
+ if (response.ok || !RETRYABLE_STATUS.has(response.status)) {
95
+ return response;
96
+ }
97
+ lastError = new Error(
98
+ `[${config.role}-model] cerebras transient ${response.status}`
99
+ );
100
+ await response.text().catch(() => void 0);
101
+ } catch (err) {
102
+ lastError = err;
103
+ }
104
+ if (attempt < MAX_CHAT_ATTEMPTS) {
105
+ const backoffMs = Math.min(8e3, 400 * 2 ** (attempt - 1));
106
+ await new Promise((r) => setTimeout(r, backoffMs));
107
+ }
108
+ }
109
+ throw lastError instanceof Error ? lastError : new Error(`[${config.role}-model] chat request failed`);
110
+ }
111
+ async function callCerebras(config, req) {
112
+ const messages = [];
113
+ if (req.systemPrompt && req.systemPrompt.length > 0) {
114
+ messages.push({ role: "system", content: req.systemPrompt });
115
+ }
116
+ messages.push({ role: "user", content: req.prompt });
117
+ const body = {
118
+ model: config.model,
119
+ messages,
120
+ temperature: req.temperature ?? 0,
121
+ max_tokens: req.maxTokens ?? 1024
122
+ };
123
+ if (/(^|\/)gpt-oss/.test(config.model)) {
124
+ body.reasoning_effort = req.reasoningEffort ?? "low";
125
+ }
126
+ const response = await fetchChatWithRetry(config, body);
127
+ if (!response.ok) {
128
+ const errBody = await response.text();
129
+ throw new Error(
130
+ `[${config.role}-model] cerebras error ${response.status}: ${errBody.slice(0, 300)}`
131
+ );
132
+ }
133
+ const data = await response.json();
134
+ return {
135
+ text: data.choices?.[0]?.message?.content ?? "",
136
+ usage: data.usage ? {
137
+ promptTokens: data.usage.prompt_tokens,
138
+ completionTokens: data.usage.completion_tokens,
139
+ totalTokens: data.usage.total_tokens,
140
+ cachedTokens: data.usage.prompt_tokens_details?.cached_tokens
141
+ } : void 0,
142
+ raw: data
143
+ };
144
+ }
145
+ async function callAnthropic(config, req) {
146
+ const body = {
147
+ model: config.model,
148
+ max_tokens: req.maxTokens ?? 1024,
149
+ temperature: req.temperature ?? 0,
150
+ messages: [{ role: "user", content: req.prompt }]
151
+ };
152
+ if (req.systemPrompt && req.systemPrompt.length > 0) {
153
+ body.system = req.systemPrompt;
154
+ }
155
+ const response = await fetch(`${config.baseUrl}/messages`, {
156
+ method: "POST",
157
+ headers: {
158
+ "Content-Type": "application/json",
159
+ "x-api-key": config.apiKey,
160
+ "anthropic-version": "2023-06-01"
161
+ },
162
+ body: JSON.stringify(body)
163
+ });
164
+ if (!response.ok) {
165
+ const errBody = await response.text();
166
+ throw new Error(
167
+ `[${config.role}-model] anthropic error ${response.status}: ${errBody.slice(0, 300)}`
168
+ );
169
+ }
170
+ const data = await response.json();
171
+ const text = (data.content ?? []).filter((c) => c.type === "text" || !c.type && typeof c.text === "string").map((c) => c.text ?? "").join("");
172
+ return {
173
+ text,
174
+ usage: data.usage ? {
175
+ promptTokens: data.usage.input_tokens,
176
+ completionTokens: data.usage.output_tokens,
177
+ totalTokens: (data.usage.input_tokens ?? 0) + (data.usage.output_tokens ?? 0),
178
+ cachedTokens: data.usage.cache_read_input_tokens
179
+ } : void 0,
180
+ raw: data
181
+ };
182
+ }
183
+ function dispatch(config, req) {
184
+ return config.providerName === "anthropic" ? callAnthropic(config, req) : callCerebras(config, req);
185
+ }
186
+ function getEvalModelClient() {
187
+ const config = resolveConfig("eval");
188
+ return (req) => dispatch(config, req);
189
+ }
190
+ function getTrainingModelClient() {
191
+ const config = resolveConfig("training");
192
+ return (req) => dispatch(config, req);
193
+ }
194
+ async function judgeWithCerebras(prompt, options) {
195
+ const response = await judgeWithCerebrasShared(prompt, options);
196
+ return response.raw;
197
+ }
198
+ async function judgeWithCerebrasShared(prompt, options) {
199
+ const provider = resolveProvider("eval");
200
+ if (provider !== "cerebras") {
201
+ const client = getEvalModelClient();
202
+ const result = await client({
203
+ prompt,
204
+ systemPrompt: options?.systemPrompt,
205
+ temperature: options?.temperature ?? 0,
206
+ maxTokens: options?.maxTokens ?? 700
207
+ });
208
+ return { raw: result.text, json: null };
209
+ }
210
+ const judge = new CerebrasJudge({
211
+ apiKey: resolveCerebrasApiKey("eval"),
212
+ baseUrl: resolveBaseUrl(),
213
+ model: resolveEvalModel()
214
+ });
215
+ return judge.judge(prompt, {
216
+ systemPrompt: options?.systemPrompt,
217
+ temperature: options?.temperature ?? 0,
218
+ maxTokens: options?.maxTokens ?? 700
219
+ });
220
+ }
221
+ function getTrainingUseModelAdapter() {
222
+ const client = getTrainingModelClient();
223
+ return async (input) => {
224
+ const result = await client({
225
+ prompt: input.prompt,
226
+ temperature: input.temperature,
227
+ maxTokens: input.maxTokens
228
+ });
229
+ return result.text;
230
+ };
231
+ }
232
+ function isCerebrasEvalEnabled() {
233
+ const provider = resolveProvider("eval");
234
+ return provider === "cerebras" && !!readEnv("CEREBRAS_API_KEY", "EVAL_CEREBRAS_API_KEY");
235
+ }
236
+ function isCerebrasTrainingEnabled() {
237
+ const provider = resolveProvider("training");
238
+ return provider === "cerebras" && !!readEnv("CEREBRAS_API_KEY", "TRAIN_CEREBRAS_API_KEY");
239
+ }
240
+ export {
241
+ getEvalModelClient,
242
+ getTrainingModelClient,
243
+ getTrainingUseModelAdapter,
244
+ isCerebrasEvalEnabled,
245
+ isCerebrasTrainingEnabled,
246
+ judgeWithCerebras,
247
+ judgeWithCerebrasShared
248
+ };
249
+ //# sourceMappingURL=cerebras-eval-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/cerebras-eval-model.ts"],"sourcesContent":["// Cerebras / Anthropic eval+training LLM client for app-training.\n//\n// Routes optimizer scoring + variant generation through a real provider so\n// the agent under optimization is never used to grade itself. Mirrors the\n// app-lifeops eval-model helper but lives in app-training so production code\n// here never imports across another package's `test/` boundary.\n//\n// Judge-shaped calls (`judgeWithCerebras` / `judgeWithCerebrasShared`)\n// route their transport through the shared `CerebrasJudge` class in\n// scenario-runner so all four Cerebras judges in the repo share retry +\n// parsing logic.\n\nimport {\n CerebrasJudge,\n type JudgeResponse,\n} from \"@elizaos/scenario-runner/cerebras-judge\";\n\ninterface ResolvedClientConfig {\n apiKey: string;\n baseUrl: string;\n model: string;\n role: \"eval\" | \"training\";\n providerName: \"cerebras\" | \"anthropic\";\n}\n\nexport interface CerebrasChatRequest {\n prompt: string;\n systemPrompt?: string;\n temperature?: number;\n maxTokens?: number;\n reasoningEffort?: \"low\" | \"medium\" | \"high\";\n}\n\nexport interface CerebrasChatUsage {\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n cachedTokens?: number;\n}\n\nexport interface CerebrasChatResponse {\n text: string;\n usage?: CerebrasChatUsage;\n raw?: unknown;\n}\n\nexport type EvalModelClient = (\n req: CerebrasChatRequest,\n) => Promise<CerebrasChatResponse>;\n\nfunction readEnv(...keys: string[]): string | undefined {\n for (const key of keys) {\n const value = process.env[key]?.trim();\n if (value && value.length > 0) return value;\n }\n return undefined;\n}\n\nfunction resolveCerebrasApiKey(role: \"eval\" | \"training\"): string {\n const apiKey = readEnv(\n role === \"eval\" ? \"EVAL_CEREBRAS_API_KEY\" : \"TRAIN_CEREBRAS_API_KEY\",\n \"CEREBRAS_API_KEY\",\n \"ELIZA_E2E_CEREBRAS_API_KEY\",\n );\n if (!apiKey) {\n throw new Error(\n `[${role}-model] CEREBRAS_API_KEY is not set. ` +\n `Eval/training runs require Cerebras credentials. ` +\n `Set CEREBRAS_API_KEY in eliza/.env.`,\n );\n }\n return apiKey;\n}\n\nfunction resolveBaseUrl(): string {\n return readEnv(\"CEREBRAS_BASE_URL\") ?? \"https://api.cerebras.ai/v1\";\n}\n\nfunction resolveEvalModel(): string {\n return (\n readEnv(\"EVAL_MODEL\", \"EVAL_MODEL_NAME\") ??\n readEnv(\"CEREBRAS_MODEL\") ??\n \"gpt-oss-120b\"\n );\n}\n\nfunction resolveTrainingModel(): string {\n return (\n readEnv(\"TRAIN_MODEL\", \"TRAINING_MODEL\", \"TRAIN_MODEL_NAME\") ??\n readEnv(\"CEREBRAS_MODEL\") ??\n \"gpt-oss-120b\"\n );\n}\n\nfunction resolveProvider(role: \"eval\" | \"training\"): string {\n return (\n readEnv(\n role === \"eval\" ? \"EVAL_MODEL_PROVIDER\" : \"TRAIN_MODEL_PROVIDER\",\n role === \"eval\" ? \"EVAL_PROVIDER\" : \"TRAINING_PROVIDER\",\n ) ?? \"cerebras\"\n );\n}\n\nfunction resolveAnthropicApiKey(role: \"eval\" | \"training\"): string {\n const apiKey = readEnv(\"ANTHROPIC_API_KEY\");\n if (!apiKey) {\n throw new Error(\n `[${role}-model] ANTHROPIC_API_KEY is not set; required when ${\n role === \"eval\" ? \"EVAL_MODEL_PROVIDER\" : \"TRAIN_MODEL_PROVIDER\"\n }=anthropic.`,\n );\n }\n return apiKey;\n}\n\nfunction resolveAnthropicModel(role: \"eval\" | \"training\"): string {\n const explicitAnthropic = readEnv(\"ANTHROPIC_LARGE_MODEL\");\n if (explicitAnthropic) return explicitAnthropic;\n if (role === \"eval\") {\n return (\n readEnv(\"EVAL_ANTHROPIC_MODEL\", \"EVAL_MODEL_NAME\") ??\n \"claude-haiku-4-5-20251001\"\n );\n }\n return (\n readEnv(\"TRAIN_ANTHROPIC_MODEL\", \"TRAIN_MODEL_NAME\") ??\n \"claude-haiku-4-5-20251001\"\n );\n}\n\nfunction resolveConfig(role: \"eval\" | \"training\"): ResolvedClientConfig {\n const provider = resolveProvider(role);\n if (provider === \"cerebras\") {\n return {\n apiKey: resolveCerebrasApiKey(role),\n baseUrl: resolveBaseUrl(),\n model: role === \"eval\" ? resolveEvalModel() : resolveTrainingModel(),\n role,\n providerName: \"cerebras\",\n };\n }\n if (provider === \"anthropic\") {\n return {\n apiKey: resolveAnthropicApiKey(role),\n baseUrl: \"https://api.anthropic.com/v1\",\n model: resolveAnthropicModel(role),\n role,\n providerName: \"anthropic\",\n };\n }\n throw new Error(\n `[${role}-model] unknown provider \"${provider}\"; supported: cerebras, anthropic. ` +\n `Set ${role === \"eval\" ? \"EVAL_MODEL_PROVIDER\" : \"TRAIN_MODEL_PROVIDER\"}=cerebras|anthropic.`,\n );\n}\n\nconst RETRYABLE_STATUS = new Set([429, 500, 502, 503, 504]);\nconst MAX_CHAT_ATTEMPTS = 5;\n\n/**\n * POST the chat-completions request, retrying transient failures (429 + 5xx +\n * network errors) with exponential backoff. A single optimizer run fans out\n * into dozens of provider calls, so one transient 500 (common on serverless\n * gpt-oss-120b relays) would otherwise abort the whole generation. A\n * non-retryable status is returned to the caller unchanged for its own\n * error-body handling.\n */\nasync function fetchChatWithRetry(\n config: ResolvedClientConfig,\n body: Record<string, unknown>,\n): Promise<Response> {\n let lastError: unknown;\n for (let attempt = 1; attempt <= MAX_CHAT_ATTEMPTS; attempt += 1) {\n try {\n const response = await fetch(`${config.baseUrl}/chat/completions`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${config.apiKey}`,\n },\n body: JSON.stringify(body),\n });\n if (response.ok || !RETRYABLE_STATUS.has(response.status)) {\n return response;\n }\n lastError = new Error(\n `[${config.role}-model] cerebras transient ${response.status}`,\n );\n // Drain the body so the socket can be reused before we retry.\n await response.text().catch(() => undefined);\n } catch (err) {\n lastError = err;\n }\n if (attempt < MAX_CHAT_ATTEMPTS) {\n const backoffMs = Math.min(8000, 400 * 2 ** (attempt - 1));\n await new Promise((r) => setTimeout(r, backoffMs));\n }\n }\n throw lastError instanceof Error\n ? lastError\n : new Error(`[${config.role}-model] chat request failed`);\n}\n\nasync function callCerebras(\n config: ResolvedClientConfig,\n req: CerebrasChatRequest,\n): Promise<CerebrasChatResponse> {\n const messages: Array<{ role: \"system\" | \"user\"; content: string }> = [];\n if (req.systemPrompt && req.systemPrompt.length > 0) {\n messages.push({ role: \"system\", content: req.systemPrompt });\n }\n messages.push({ role: \"user\", content: req.prompt });\n\n const body: Record<string, unknown> = {\n model: config.model,\n messages,\n temperature: req.temperature ?? 0,\n max_tokens: req.maxTokens ?? 1024,\n };\n // gpt-oss exposes a `reasoning_effort` knob; match it on the bare id and on\n // the `<vendor>/gpt-oss-*` form used by OpenAI-compatible relays.\n if (/(^|\\/)gpt-oss/.test(config.model)) {\n body.reasoning_effort = req.reasoningEffort ?? \"low\";\n }\n\n const response = await fetchChatWithRetry(config, body);\n if (!response.ok) {\n const errBody = await response.text();\n throw new Error(\n `[${config.role}-model] cerebras error ${response.status}: ${errBody.slice(0, 300)}`,\n );\n }\n const data = (await response.json()) as {\n choices?: Array<{ message?: { content?: string } }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n prompt_tokens_details?: { cached_tokens?: number };\n };\n };\n return {\n text: data.choices?.[0]?.message?.content ?? \"\",\n usage: data.usage\n ? {\n promptTokens: data.usage.prompt_tokens,\n completionTokens: data.usage.completion_tokens,\n totalTokens: data.usage.total_tokens,\n cachedTokens: data.usage.prompt_tokens_details?.cached_tokens,\n }\n : undefined,\n raw: data,\n };\n}\n\nasync function callAnthropic(\n config: ResolvedClientConfig,\n req: CerebrasChatRequest,\n): Promise<CerebrasChatResponse> {\n const body: Record<string, unknown> = {\n model: config.model,\n max_tokens: req.maxTokens ?? 1024,\n temperature: req.temperature ?? 0,\n messages: [{ role: \"user\", content: req.prompt }],\n };\n if (req.systemPrompt && req.systemPrompt.length > 0) {\n body.system = req.systemPrompt;\n }\n const response = await fetch(`${config.baseUrl}/messages`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-api-key\": config.apiKey,\n \"anthropic-version\": \"2023-06-01\",\n },\n body: JSON.stringify(body),\n });\n if (!response.ok) {\n const errBody = await response.text();\n throw new Error(\n `[${config.role}-model] anthropic error ${response.status}: ${errBody.slice(0, 300)}`,\n );\n }\n const data = (await response.json()) as {\n content?: Array<{ type?: string; text?: string }>;\n usage?: {\n input_tokens?: number;\n output_tokens?: number;\n cache_read_input_tokens?: number;\n cache_creation_input_tokens?: number;\n };\n };\n const text = (data.content ?? [])\n .filter((c) => c.type === \"text\" || (!c.type && typeof c.text === \"string\"))\n .map((c) => c.text ?? \"\")\n .join(\"\");\n return {\n text,\n usage: data.usage\n ? {\n promptTokens: data.usage.input_tokens,\n completionTokens: data.usage.output_tokens,\n totalTokens:\n (data.usage.input_tokens ?? 0) + (data.usage.output_tokens ?? 0),\n cachedTokens: data.usage.cache_read_input_tokens,\n }\n : undefined,\n raw: data,\n };\n}\n\nfunction dispatch(\n config: ResolvedClientConfig,\n req: CerebrasChatRequest,\n): Promise<CerebrasChatResponse> {\n return config.providerName === \"anthropic\"\n ? callAnthropic(config, req)\n : callCerebras(config, req);\n}\n\nexport function getEvalModelClient(): EvalModelClient {\n const config = resolveConfig(\"eval\");\n return (req) => dispatch(config, req);\n}\n\nexport function getTrainingModelClient(): EvalModelClient {\n const config = resolveConfig(\"training\");\n return (req) => dispatch(config, req);\n}\n\n/**\n * Cerebras-only judge helper. Routes through the shared `CerebrasJudge`\n * transport (tolerant parsing, 429/5xx retry, json_object opt-in). The\n * Cerebras eval provider is the only one configured here; callers that\n * need Anthropic should use `getEvalModelClient()` directly.\n *\n * Returns the raw model text for backward compatibility with existing\n * callers. New callers should consume `judgeWithCerebrasShared()` (below)\n * to get the canonical {raw, json, score?, verdict?, reason?} shape.\n */\nexport async function judgeWithCerebras(\n prompt: string,\n options?: { maxTokens?: number; temperature?: number; systemPrompt?: string },\n): Promise<string> {\n const response = await judgeWithCerebrasShared(prompt, options);\n return response.raw;\n}\n\n/**\n * New canonical entry: returns the full JudgeResponse for callers that\n * want the parsed score/verdict/reason without re-parsing the raw text.\n */\nexport async function judgeWithCerebrasShared(\n prompt: string,\n options?: { maxTokens?: number; temperature?: number; systemPrompt?: string },\n): Promise<JudgeResponse> {\n const provider = resolveProvider(\"eval\");\n if (provider !== \"cerebras\") {\n // Caller asked for the eval-as-judge route but the eval provider is\n // pinned to a non-Cerebras model. Fall back to the eval client so the\n // judge still runs (cross-grader rule), but skip the shared CerebrasJudge\n // transport — only Cerebras is supported there today.\n const client = getEvalModelClient();\n const result = await client({\n prompt,\n systemPrompt: options?.systemPrompt,\n temperature: options?.temperature ?? 0,\n maxTokens: options?.maxTokens ?? 700,\n });\n return { raw: result.text, json: null };\n }\n const judge = new CerebrasJudge({\n apiKey: resolveCerebrasApiKey(\"eval\"),\n baseUrl: resolveBaseUrl(),\n model: resolveEvalModel(),\n });\n return judge.judge(prompt, {\n systemPrompt: options?.systemPrompt,\n temperature: options?.temperature ?? 0,\n maxTokens: options?.maxTokens ?? 700,\n });\n}\n\n// Adapter shaped like runtime.useModel(\"TEXT_LARGE\", { prompt, ... }) so\n// optimizer / prompt-compare consumers can drop it in unchanged.\nexport function getTrainingUseModelAdapter(): (input: {\n prompt: string;\n temperature?: number;\n maxTokens?: number;\n}) => Promise<string> {\n const client = getTrainingModelClient();\n return async (input) => {\n const result = await client({\n prompt: input.prompt,\n temperature: input.temperature,\n maxTokens: input.maxTokens,\n });\n return result.text;\n };\n}\n\nexport function isCerebrasEvalEnabled(): boolean {\n const provider = resolveProvider(\"eval\");\n return (\n provider === \"cerebras\" &&\n !!readEnv(\"CEREBRAS_API_KEY\", \"EVAL_CEREBRAS_API_KEY\")\n );\n}\n\nexport function isCerebrasTrainingEnabled(): boolean {\n const provider = resolveProvider(\"training\");\n return (\n provider === \"cerebras\" &&\n !!readEnv(\"CEREBRAS_API_KEY\", \"TRAIN_CEREBRAS_API_KEY\")\n );\n}\n"],"mappings":"AAYA;AAAA,EACE;AAAA,OAEK;AAmCP,SAAS,WAAW,MAAoC;AACtD,aAAW,OAAO,MAAM;AACtB,UAAM,QAAQ,QAAQ,IAAI,GAAG,GAAG,KAAK;AACrC,QAAI,SAAS,MAAM,SAAS,EAAG,QAAO;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,MAAmC;AAChE,QAAM,SAAS;AAAA,IACb,SAAS,SAAS,0BAA0B;AAAA,IAC5C;AAAA,IACA;AAAA,EACF;AACA,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,IAAI,IAAI;AAAA,IAGV;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,iBAAyB;AAChC,SAAO,QAAQ,mBAAmB,KAAK;AACzC;AAEA,SAAS,mBAA2B;AAClC,SACE,QAAQ,cAAc,iBAAiB,KACvC,QAAQ,gBAAgB,KACxB;AAEJ;AAEA,SAAS,uBAA+B;AACtC,SACE,QAAQ,eAAe,kBAAkB,kBAAkB,KAC3D,QAAQ,gBAAgB,KACxB;AAEJ;AAEA,SAAS,gBAAgB,MAAmC;AAC1D,SACE;AAAA,IACE,SAAS,SAAS,wBAAwB;AAAA,IAC1C,SAAS,SAAS,kBAAkB;AAAA,EACtC,KAAK;AAET;AAEA,SAAS,uBAAuB,MAAmC;AACjE,QAAM,SAAS,QAAQ,mBAAmB;AAC1C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI;AAAA,MACR,IAAI,IAAI,uDACN,SAAS,SAAS,wBAAwB,sBAC5C;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,MAAmC;AAChE,QAAM,oBAAoB,QAAQ,uBAAuB;AACzD,MAAI,kBAAmB,QAAO;AAC9B,MAAI,SAAS,QAAQ;AACnB,WACE,QAAQ,wBAAwB,iBAAiB,KACjD;AAAA,EAEJ;AACA,SACE,QAAQ,yBAAyB,kBAAkB,KACnD;AAEJ;AAEA,SAAS,cAAc,MAAiD;AACtE,QAAM,WAAW,gBAAgB,IAAI;AACrC,MAAI,aAAa,YAAY;AAC3B,WAAO;AAAA,MACL,QAAQ,sBAAsB,IAAI;AAAA,MAClC,SAAS,eAAe;AAAA,MACxB,OAAO,SAAS,SAAS,iBAAiB,IAAI,qBAAqB;AAAA,MACnE;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF;AACA,MAAI,aAAa,aAAa;AAC5B,WAAO;AAAA,MACL,QAAQ,uBAAuB,IAAI;AAAA,MACnC,SAAS;AAAA,MACT,OAAO,sBAAsB,IAAI;AAAA,MACjC;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF;AACA,QAAM,IAAI;AAAA,IACR,IAAI,IAAI,6BAA6B,QAAQ,0CACpC,SAAS,SAAS,wBAAwB,sBAAsB;AAAA,EAC3E;AACF;AAEA,MAAM,mBAAmB,oBAAI,IAAI,CAAC,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAC1D,MAAM,oBAAoB;AAU1B,eAAe,mBACb,QACA,MACmB;AACnB,MAAI;AACJ,WAAS,UAAU,GAAG,WAAW,mBAAmB,WAAW,GAAG;AAChE,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,OAAO,OAAO,qBAAqB;AAAA,QACjE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,eAAe,UAAU,OAAO,MAAM;AAAA,QACxC;AAAA,QACA,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B,CAAC;AACD,UAAI,SAAS,MAAM,CAAC,iBAAiB,IAAI,SAAS,MAAM,GAAG;AACzD,eAAO;AAAA,MACT;AACA,kBAAY,IAAI;AAAA,QACd,IAAI,OAAO,IAAI,8BAA8B,SAAS,MAAM;AAAA,MAC9D;AAEA,YAAM,SAAS,KAAK,EAAE,MAAM,MAAM,MAAS;AAAA,IAC7C,SAAS,KAAK;AACZ,kBAAY;AAAA,IACd;AACA,QAAI,UAAU,mBAAmB;AAC/B,YAAM,YAAY,KAAK,IAAI,KAAM,MAAM,MAAM,UAAU,EAAE;AACzD,YAAM,IAAI,QAAQ,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAAA,IACnD;AAAA,EACF;AACA,QAAM,qBAAqB,QACvB,YACA,IAAI,MAAM,IAAI,OAAO,IAAI,6BAA6B;AAC5D;AAEA,eAAe,aACb,QACA,KAC+B;AAC/B,QAAM,WAAgE,CAAC;AACvE,MAAI,IAAI,gBAAgB,IAAI,aAAa,SAAS,GAAG;AACnD,aAAS,KAAK,EAAE,MAAM,UAAU,SAAS,IAAI,aAAa,CAAC;AAAA,EAC7D;AACA,WAAS,KAAK,EAAE,MAAM,QAAQ,SAAS,IAAI,OAAO,CAAC;AAEnD,QAAM,OAAgC;AAAA,IACpC,OAAO,OAAO;AAAA,IACd;AAAA,IACA,aAAa,IAAI,eAAe;AAAA,IAChC,YAAY,IAAI,aAAa;AAAA,EAC/B;AAGA,MAAI,gBAAgB,KAAK,OAAO,KAAK,GAAG;AACtC,SAAK,mBAAmB,IAAI,mBAAmB;AAAA,EACjD;AAEA,QAAM,WAAW,MAAM,mBAAmB,QAAQ,IAAI;AACtD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,UAAU,MAAM,SAAS,KAAK;AACpC,UAAM,IAAI;AAAA,MACR,IAAI,OAAO,IAAI,0BAA0B,SAAS,MAAM,KAAK,QAAQ,MAAM,GAAG,GAAG,CAAC;AAAA,IACpF;AAAA,EACF;AACA,QAAM,OAAQ,MAAM,SAAS,KAAK;AASlC,SAAO;AAAA,IACL,MAAM,KAAK,UAAU,CAAC,GAAG,SAAS,WAAW;AAAA,IAC7C,OAAO,KAAK,QACR;AAAA,MACE,cAAc,KAAK,MAAM;AAAA,MACzB,kBAAkB,KAAK,MAAM;AAAA,MAC7B,aAAa,KAAK,MAAM;AAAA,MACxB,cAAc,KAAK,MAAM,uBAAuB;AAAA,IAClD,IACA;AAAA,IACJ,KAAK;AAAA,EACP;AACF;AAEA,eAAe,cACb,QACA,KAC+B;AAC/B,QAAM,OAAgC;AAAA,IACpC,OAAO,OAAO;AAAA,IACd,YAAY,IAAI,aAAa;AAAA,IAC7B,aAAa,IAAI,eAAe;AAAA,IAChC,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,IAAI,OAAO,CAAC;AAAA,EAClD;AACA,MAAI,IAAI,gBAAgB,IAAI,aAAa,SAAS,GAAG;AACnD,SAAK,SAAS,IAAI;AAAA,EACpB;AACA,QAAM,WAAW,MAAM,MAAM,GAAG,OAAO,OAAO,aAAa;AAAA,IACzD,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,aAAa,OAAO;AAAA,MACpB,qBAAqB;AAAA,IACvB;AAAA,IACA,MAAM,KAAK,UAAU,IAAI;AAAA,EAC3B,CAAC;AACD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,UAAU,MAAM,SAAS,KAAK;AACpC,UAAM,IAAI;AAAA,MACR,IAAI,OAAO,IAAI,2BAA2B,SAAS,MAAM,KAAK,QAAQ,MAAM,GAAG,GAAG,CAAC;AAAA,IACrF;AAAA,EACF;AACA,QAAM,OAAQ,MAAM,SAAS,KAAK;AASlC,QAAM,QAAQ,KAAK,WAAW,CAAC,GAC5B,OAAO,CAAC,MAAM,EAAE,SAAS,UAAW,CAAC,EAAE,QAAQ,OAAO,EAAE,SAAS,QAAS,EAC1E,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EACvB,KAAK,EAAE;AACV,SAAO;AAAA,IACL;AAAA,IACA,OAAO,KAAK,QACR;AAAA,MACE,cAAc,KAAK,MAAM;AAAA,MACzB,kBAAkB,KAAK,MAAM;AAAA,MAC7B,cACG,KAAK,MAAM,gBAAgB,MAAM,KAAK,MAAM,iBAAiB;AAAA,MAChE,cAAc,KAAK,MAAM;AAAA,IAC3B,IACA;AAAA,IACJ,KAAK;AAAA,EACP;AACF;AAEA,SAAS,SACP,QACA,KAC+B;AAC/B,SAAO,OAAO,iBAAiB,cAC3B,cAAc,QAAQ,GAAG,IACzB,aAAa,QAAQ,GAAG;AAC9B;AAEO,SAAS,qBAAsC;AACpD,QAAM,SAAS,cAAc,MAAM;AACnC,SAAO,CAAC,QAAQ,SAAS,QAAQ,GAAG;AACtC;AAEO,SAAS,yBAA0C;AACxD,QAAM,SAAS,cAAc,UAAU;AACvC,SAAO,CAAC,QAAQ,SAAS,QAAQ,GAAG;AACtC;AAYA,eAAsB,kBACpB,QACA,SACiB;AACjB,QAAM,WAAW,MAAM,wBAAwB,QAAQ,OAAO;AAC9D,SAAO,SAAS;AAClB;AAMA,eAAsB,wBACpB,QACA,SACwB;AACxB,QAAM,WAAW,gBAAgB,MAAM;AACvC,MAAI,aAAa,YAAY;AAK3B,UAAM,SAAS,mBAAmB;AAClC,UAAM,SAAS,MAAM,OAAO;AAAA,MAC1B;AAAA,MACA,cAAc,SAAS;AAAA,MACvB,aAAa,SAAS,eAAe;AAAA,MACrC,WAAW,SAAS,aAAa;AAAA,IACnC,CAAC;AACD,WAAO,EAAE,KAAK,OAAO,MAAM,MAAM,KAAK;AAAA,EACxC;AACA,QAAM,QAAQ,IAAI,cAAc;AAAA,IAC9B,QAAQ,sBAAsB,MAAM;AAAA,IACpC,SAAS,eAAe;AAAA,IACxB,OAAO,iBAAiB;AAAA,EAC1B,CAAC;AACD,SAAO,MAAM,MAAM,QAAQ;AAAA,IACzB,cAAc,SAAS;AAAA,IACvB,aAAa,SAAS,eAAe;AAAA,IACrC,WAAW,SAAS,aAAa;AAAA,EACnC,CAAC;AACH;AAIO,SAAS,6BAIM;AACpB,QAAM,SAAS,uBAAuB;AACtC,SAAO,OAAO,UAAU;AACtB,UAAM,SAAS,MAAM,OAAO;AAAA,MAC1B,QAAQ,MAAM;AAAA,MACd,aAAa,MAAM;AAAA,MACnB,WAAW,MAAM;AAAA,IACnB,CAAC;AACD,WAAO,OAAO;AAAA,EAChB;AACF;AAEO,SAAS,wBAAiC;AAC/C,QAAM,WAAW,gBAAgB,MAAM;AACvC,SACE,aAAa,cACb,CAAC,CAAC,QAAQ,oBAAoB,uBAAuB;AAEzD;AAEO,SAAS,4BAAqC;AACnD,QAAM,WAAW,gBAAgB,UAAU;AAC3C,SACE,aAAa,cACb,CAAC,CAAC,QAAQ,oBAAoB,wBAAwB;AAE1D;","names":[]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * CLI entry point for the training data pipeline.
3
+ *
4
+ * Usage (from repo root):
5
+ * bun run eliza/plugins/plugin-training/src/core/cli.ts generate --variants 5 --output ./training-data
6
+ * bun run eliza/plugins/plugin-training/src/core/cli.ts validate --input ./training-data/raw_samples.json
7
+ * bun run eliza/plugins/plugin-training/src/core/cli.ts export-trajectories --output ./training-data/trajectories.jsonl
8
+ * Or: `cd eliza/packages/agent && bun run training:cli` (delegates to this file).
9
+ */
10
+ import { type ListTrainingCollectionsResult, type TrainingCollectionPreflightSummary, type TrainingCollectionRunOptions, type TrainingCollectionRunResult } from "./training-collection-runner.js";
11
+ export declare function buildRunCollectionOptionsFromCliArgs(args: string[]): TrainingCollectionRunOptions;
12
+ export declare function formatTrainingCollectionPreflightSummary(preflight: TrainingCollectionPreflightSummary): string[];
13
+ export declare function formatListTrainingCollectionsSummary(result: ListTrainingCollectionsResult): string[];
14
+ export declare function formatRunCollectionSummary(result: TrainingCollectionRunResult): string[];
15
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqCH,OAAO,EAEL,KAAK,6BAA6B,EAGlC,KAAK,kCAAkC,EACvC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EACjC,MAAM,iCAAiC,CAAC;AAufzC,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EAAE,GACb,4BAA4B,CA4Q9B;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,kCAAkC,GAC5C,MAAM,EAAE,CAeV;AAwCD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,6BAA6B,GACpC,MAAM,EAAE,CAyGV;AAuBD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,2BAA2B,GAClC,MAAM,EAAE,CAkHV"}