@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,765 @@
1
+ import { mkdir, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import {
4
+ ELIZA_ONE_BENCHMARK_TIERS,
5
+ ELIZA_ONE_BENCHMARK_TIER_LIST,
6
+ elizaOneActionBenchmarkPairs
7
+ } from "./eliza1-benchmark-recipe.js";
8
+ const TRAINING_READINESS_REPORT_SCHEMA = "eliza_training_readiness_report";
9
+ const TRAINING_READINESS_REPORT_VERSION = 1;
10
+ const ELIZA_HARNESS_ACTION_SELECTION_BENCHMARK = "eliza_harness_action_selection";
11
+ function isRecord(value) {
12
+ return value !== null && typeof value === "object" && !Array.isArray(value);
13
+ }
14
+ function schemaOf(artifact) {
15
+ const schema = artifact.summary.schema;
16
+ return typeof schema === "string" ? schema : void 0;
17
+ }
18
+ function sourceKindOf(artifact) {
19
+ const source = artifact.summary.source;
20
+ if (!source || typeof source !== "object" || Array.isArray(source)) {
21
+ return void 0;
22
+ }
23
+ const kind = source.kind;
24
+ return typeof kind === "string" ? kind : void 0;
25
+ }
26
+ function sourceLabelOf(artifact) {
27
+ const source = artifact.summary.source;
28
+ if (typeof source === "string") return source;
29
+ return sourceKindOf(artifact);
30
+ }
31
+ function stringFromRecord(record, key) {
32
+ const value = record?.[key];
33
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
34
+ }
35
+ function benchmarkNameOf(artifact) {
36
+ const summarySource = isRecord(artifact.summary.source) ? artifact.summary.source : void 0;
37
+ const payload = isRecord(artifact.payload) ? artifact.payload : void 0;
38
+ const payloadSource = isRecord(payload?.source) ? payload.source : void 0;
39
+ const payloadSummary = isRecord(payload?.summary) ? payload.summary : void 0;
40
+ return stringFromRecord(artifact.summary, "benchmark") ?? stringFromRecord(summarySource, "benchmark") ?? stringFromRecord(payload, "benchmark") ?? stringFromRecord(payloadSource, "benchmark") ?? stringFromRecord(payloadSummary, "benchmark");
41
+ }
42
+ function isElizaHarnessActionBenchmark(artifact) {
43
+ return schemaOf(artifact) === "eliza_action_selection_benchmark_report" || sourceKindOf(artifact) === "app_core_action_selection_benchmark" || benchmarkNameOf(artifact) === ELIZA_HARNESS_ACTION_SELECTION_BENCHMARK;
44
+ }
45
+ function numberSummary(artifact, key) {
46
+ const value = artifact.summary[key];
47
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
48
+ }
49
+ function isDryRunArtifact(artifact) {
50
+ return artifact.summary.dryRun === true || isRecord(artifact.payload) && artifact.payload.dryRun === true;
51
+ }
52
+ function hasPositiveSummary(artifact, keys) {
53
+ return keys.some((key) => (numberSummary(artifact, key) ?? 0) > 0);
54
+ }
55
+ function hasReadableSamplePreview(artifact) {
56
+ const sampleKeys = [
57
+ "samplePreviews",
58
+ "feedSamplePreviews",
59
+ "hfSamplePreviews",
60
+ "scenarioNativeSamplePreviews",
61
+ "testSamplePreviews"
62
+ ];
63
+ return sampleKeys.some((key) => {
64
+ const samples = artifact.summary[key];
65
+ return Array.isArray(samples) && samples.some((sample) => {
66
+ if (!isRecord(sample)) return false;
67
+ return sample.input !== void 0 || sample.output !== void 0 || sample.trajectoryId !== void 0 || sample.scenarioId !== void 0 || sample.firstStep !== void 0 || sample.reasoning !== void 0;
68
+ });
69
+ });
70
+ }
71
+ function normalizeTier(value) {
72
+ if (typeof value !== "string") return null;
73
+ const normalized = value.toLowerCase();
74
+ if (normalized.includes("27b")) return "27b";
75
+ if (normalized.includes("9b")) return "9b";
76
+ if (normalized.includes("4b")) return "4b";
77
+ if (normalized.includes("2b")) return "2b";
78
+ return null;
79
+ }
80
+ function hasFiniteNumber(value) {
81
+ return typeof value === "number" && Number.isFinite(value);
82
+ }
83
+ function matrixComparisons(artifact) {
84
+ if (!isRecord(artifact.payload)) return [];
85
+ const comparisons = artifact.payload.comparisons;
86
+ return Array.isArray(comparisons) ? comparisons.filter(isRecord) : [];
87
+ }
88
+ function matrixRows(artifact) {
89
+ if (!isRecord(artifact.payload)) return [];
90
+ const rows = artifact.payload.rows;
91
+ return Array.isArray(rows) ? rows.filter(isRecord) : [];
92
+ }
93
+ function hasBaseTrainedComparison(comparison) {
94
+ return comparison.dryRun !== true && hasFiniteNumber(comparison.baseScore) && hasFiniteNumber(comparison.trainedScore);
95
+ }
96
+ function isMockedBenchmarkRecord(value) {
97
+ const raw = isRecord(value.raw) ? value.raw : {};
98
+ const rawSource = isRecord(raw.source) ? raw.source : {};
99
+ const metrics = isRecord(value.metrics) ? value.metrics : {};
100
+ return value.useMocks === true || raw.useMocks === true || rawSource.useMocks === true || metrics.useMocks === true;
101
+ }
102
+ function hasRealBenchmarkMatrixRows(artifact) {
103
+ return matrixRows(artifact).some(
104
+ (row) => row.dryRun !== true && !isMockedBenchmarkRecord(row)
105
+ );
106
+ }
107
+ function hasBenchmarkCaseProvenance(artifact) {
108
+ return matrixRows(artifact).some((row) => {
109
+ if (row.dryRun === true || isMockedBenchmarkRecord(row)) return false;
110
+ const raw = isRecord(row.raw) ? row.raw : {};
111
+ const caseSamples = raw.caseSamples;
112
+ if (!Array.isArray(caseSamples)) return false;
113
+ return caseSamples.some((sample) => {
114
+ if (!isRecord(sample)) return false;
115
+ return sample.pass === true && typeof sample.caseId === "string" && typeof sample.prompt === "string" && typeof sample.expectedAction === "string" && typeof sample.actualAction === "string" && typeof sample.trajectoryPath === "string";
116
+ });
117
+ });
118
+ }
119
+ function hasModelBackedRow(artifact, comparison, variant) {
120
+ const tier = normalizeTier(comparison.tier);
121
+ const benchmark = typeof comparison.benchmark === "string" ? comparison.benchmark : null;
122
+ if (!tier || !benchmark) return false;
123
+ return matrixRows(artifact).some((row) => {
124
+ if (row.variant !== variant) return false;
125
+ if (normalizeTier(row.tier) !== tier) return false;
126
+ if (row.benchmark !== benchmark) return false;
127
+ if (row.dryRun === true || isMockedBenchmarkRecord(row)) return false;
128
+ return hasFiniteNumber(row.score);
129
+ });
130
+ }
131
+ function hasModelBackedBaseTrainedComparison(artifact, comparison) {
132
+ return hasBaseTrainedComparison(comparison) && hasModelBackedRow(artifact, comparison, "base") && hasModelBackedRow(artifact, comparison, "trained");
133
+ }
134
+ function modelBackedComparisonTierSet(artifact, predicate) {
135
+ const out = /* @__PURE__ */ new Set();
136
+ for (const comparison of matrixComparisons(artifact)) {
137
+ if (!predicate(comparison)) continue;
138
+ if (!hasModelBackedBaseTrainedComparison(artifact, comparison)) continue;
139
+ const tier = normalizeTier(comparison.tier);
140
+ if (tier) out.add(tier);
141
+ }
142
+ return out;
143
+ }
144
+ function hasImprovementComparison(artifact) {
145
+ return matrixComparisons(artifact).some(
146
+ (comparison) => hasModelBackedBaseTrainedComparison(artifact, comparison) && hasFiniteNumber(comparison.improvementPercent)
147
+ );
148
+ }
149
+ function hasScoredEvalImprovement(artifact) {
150
+ return hasFiniteNumber(artifact.summary.baseScore) && hasFiniteNumber(artifact.summary.trainedScore) && hasFiniteNumber(artifact.summary.improvementPercent);
151
+ }
152
+ function hasImprovementComparisonRecord(comparison) {
153
+ return hasBaseTrainedComparison(comparison) && hasFiniteNumber(comparison.improvementPercent);
154
+ }
155
+ function hasSmallestTierComparison(artifact) {
156
+ return modelBackedComparisonTierSet(
157
+ artifact,
158
+ hasBaseTrainedComparison
159
+ ).has("2b");
160
+ }
161
+ function hasAllEliza1BenchmarkTierComparisons(artifact) {
162
+ const tiers = modelBackedComparisonTierSet(
163
+ artifact,
164
+ hasBaseTrainedComparison
165
+ );
166
+ return ELIZA_ONE_BENCHMARK_TIERS.every((tier) => tiers.has(tier));
167
+ }
168
+ function hasAllEliza1TierImprovementComparisons(artifact) {
169
+ const tiers = modelBackedComparisonTierSet(
170
+ artifact,
171
+ hasImprovementComparisonRecord
172
+ );
173
+ return ELIZA_ONE_BENCHMARK_TIERS.every((tier) => tiers.has(tier));
174
+ }
175
+ function actionBenchmarkPairCollectionAction(label, tiers) {
176
+ return {
177
+ label,
178
+ capability: "terminal-training-run-collection",
179
+ params: {
180
+ includeActionBenchmark: true,
181
+ includeBenchmarkMatrix: true,
182
+ actionBenchmark: {
183
+ dryRun: false,
184
+ useMocks: false,
185
+ runsPerCase: 1,
186
+ provider: "local-llama-cpp",
187
+ benchmark: "eliza_harness_action_selection",
188
+ datasetVersion: "eliza-native-v1"
189
+ },
190
+ actionBenchmarkPairs: elizaOneActionBenchmarkPairs(tiers)
191
+ }
192
+ };
193
+ }
194
+ function hasCerebrasReferenceComparison(artifact) {
195
+ const summaryReference = artifact.summary.referenceModelId;
196
+ const hasSummaryReference = typeof summaryReference === "string" && /cerebras/i.test(summaryReference);
197
+ return matrixComparisons(artifact).some((comparison) => {
198
+ const reference = comparison.referenceModelId;
199
+ const hasComparisonReference = typeof reference === "string" && /cerebras/i.test(reference);
200
+ return hasFiniteNumber(comparison.referenceScore) && (hasSummaryReference || hasComparisonReference);
201
+ });
202
+ }
203
+ function modelVariantOf(artifact) {
204
+ const payload = isRecord(artifact.payload) ? artifact.payload : {};
205
+ const variant = payload.variant;
206
+ if (variant === "base" || variant === "trained") return variant;
207
+ const summaryModel = artifact.summary.model;
208
+ const model = typeof summaryModel === "string" ? summaryModel : typeof payload.modelId === "string" ? payload.modelId : typeof payload.model_name === "string" ? payload.model_name : typeof payload.model === "string" ? payload.model : "";
209
+ if (/-base\b/.test(model)) return "base";
210
+ if (/-trained\b/.test(model)) return "trained";
211
+ return null;
212
+ }
213
+ function modelTierOf(artifact) {
214
+ const payload = isRecord(artifact.payload) ? artifact.payload : {};
215
+ return normalizeTier(artifact.summary.tier) ?? normalizeTier(payload.tier) ?? normalizeTier(artifact.summary.model) ?? normalizeTier(payload.modelId) ?? normalizeTier(payload.model_name) ?? normalizeTier(payload.model);
216
+ }
217
+ function hasModelOutputEvidence(artifact) {
218
+ return artifact.kind === "model" && (typeof artifact.summary.outputPath === "string" || artifact.summary.apply === true || (numberSummary(artifact, "stagedCount") ?? 0) > 0);
219
+ }
220
+ function buildModelTrackingCheck(artifacts, coverage) {
221
+ const coverageModels = coverage?.models;
222
+ if (coverageModels && coverageModels.inventory.length > 0) {
223
+ const coverageSet = /* @__PURE__ */ new Set();
224
+ for (const model of coverageModels.inventory) {
225
+ if (model.tier && model.variant) {
226
+ coverageSet.add(`${model.tier}:${model.variant}`);
227
+ }
228
+ }
229
+ const hasAllEliza1Variants2 = ELIZA_ONE_BENCHMARK_TIERS.every(
230
+ (tier) => coverageSet.has(`${tier}:base`) && coverageSet.has(`${tier}:trained`)
231
+ );
232
+ if (hasAllEliza1Variants2) {
233
+ return {
234
+ id: "model_tracking",
235
+ label: "Model tracking",
236
+ status: "ready",
237
+ artifactCount: coverageModels.artifacts,
238
+ artifactPaths: artifacts.filter((artifact) => artifact.kind === "model").map((artifact) => artifact.path),
239
+ note: "Analysis coverage includes base and trained Eliza-1 model entries for every tier.",
240
+ recommendedAction: null
241
+ };
242
+ }
243
+ }
244
+ const modelArtifacts = artifacts.filter((artifact) => artifact.kind === "model");
245
+ const registryArtifacts = modelArtifacts.filter(hasModelOutputEvidence);
246
+ const modelCoverage = /* @__PURE__ */ new Set();
247
+ for (const artifact of registryArtifacts) {
248
+ const tier = modelTierOf(artifact);
249
+ const variant = modelVariantOf(artifact);
250
+ if (tier && variant) modelCoverage.add(`${tier}:${variant}`);
251
+ }
252
+ const hasAllEliza1Variants = ELIZA_ONE_BENCHMARK_TIERS.every(
253
+ (tier) => modelCoverage.has(`${tier}:base`) && modelCoverage.has(`${tier}:trained`)
254
+ );
255
+ const appliedBundleArtifacts = modelArtifacts.filter(
256
+ (artifact) => artifact.summary.apply === true || (numberSummary(artifact, "stagedCount") ?? 0) > 0
257
+ );
258
+ const readyArtifacts = hasAllEliza1Variants ? registryArtifacts : appliedBundleArtifacts;
259
+ const status = readyArtifacts.length > 0 ? "ready" : modelArtifacts.length > 0 ? "partial" : "missing";
260
+ return {
261
+ id: "model_tracking",
262
+ label: "Model tracking",
263
+ status,
264
+ artifactCount: status === "ready" ? readyArtifacts.length : modelArtifacts.length,
265
+ artifactPaths: status === "ready" ? readyArtifacts.map((artifact) => artifact.path) : modelArtifacts.map((artifact) => artifact.path),
266
+ note: status === "ready" ? hasAllEliza1Variants ? "Base and trained Eliza-1 model registry entries are represented for every tier." : "An applied staged bundle is represented." : status === "partial" ? "Model artifacts are present, but they do not cover base and trained Eliza-1 entries for every tier." : "No model or staged bundle artifact was found.",
267
+ recommendedAction: status === "ready" ? null : {
268
+ label: "Stage or register concrete base/trained Eliza-1 model artifacts",
269
+ capability: "terminal-training-stage-eliza1-bundle",
270
+ params: { tier: "2b", apply: true }
271
+ }
272
+ };
273
+ }
274
+ function coverageCheck(fallback, status, input) {
275
+ if (!status) return fallback;
276
+ return {
277
+ ...fallback,
278
+ status,
279
+ artifactCount: input.artifactCount,
280
+ note: status === "ready" ? input.readyNote : input.partialNote,
281
+ recommendedAction: status === "ready" ? null : fallback.recommendedAction
282
+ };
283
+ }
284
+ function coverageTierStatus(coverage, tiers, predicate) {
285
+ const tierCoverage = coverage?.benchmarks.tierCoverage ?? [];
286
+ if (tierCoverage.length === 0) return null;
287
+ const requested = tiers.map((tier) => {
288
+ const normalized = normalizeTier(tier);
289
+ return normalized ?? tier;
290
+ });
291
+ const matched = requested.map((tier) => tierCoverage.find((entry) => entry.tier === tier)).filter(
292
+ (entry) => entry !== void 0
293
+ );
294
+ if (matched.length === requested.length && matched.every(predicate)) {
295
+ return "ready";
296
+ }
297
+ if ((coverage?.benchmarks.matrices ?? 0) > 0) return "partial";
298
+ return null;
299
+ }
300
+ function readableSourceCoverageStatus(coverage) {
301
+ const sourceKeys = [
302
+ "huggingFace",
303
+ "feed",
304
+ "natural",
305
+ "scenarios",
306
+ "tests",
307
+ "trainingJsonl"
308
+ ];
309
+ const presentSources = sourceKeys.filter(
310
+ (key) => (coverage.dataSources[key] ?? 0) > 0
311
+ );
312
+ if (presentSources.length === 0) return null;
313
+ if (presentSources.every((key) => (coverage.readableSamples[key] ?? 0) > 0)) {
314
+ return "ready";
315
+ }
316
+ return "partial";
317
+ }
318
+ function applyCoverageReadiness(checks, coverage) {
319
+ if (!coverage) return checks;
320
+ return checks.map((item) => {
321
+ if (item.id === "readable_source_samples") {
322
+ return coverageCheck(
323
+ item,
324
+ readableSourceCoverageStatus(coverage),
325
+ {
326
+ artifactCount: coverage.readableSamples.total,
327
+ readyNote: "Analysis coverage includes readable trajectory samples for every collected source category.",
328
+ partialNote: "Analysis coverage found collected trajectory sources that do not all expose readable samples yet."
329
+ }
330
+ );
331
+ }
332
+ if (item.id === "eval_comparison") {
333
+ const harnessComparisons = coverage.benchmarks.scoredComparisons > 0 || coverage.benchmarks.tierCoverage.some((tier) => tier.hasImprovement);
334
+ return coverageCheck(
335
+ item,
336
+ coverage.evals.scoredComparisons > 0 || harnessComparisons ? "ready" : coverage.evals.comparisons > 0 || coverage.benchmarks.comparisons > 0 || coverage.benchmarks.matrices > 0 ? "partial" : null,
337
+ {
338
+ artifactCount: coverage.evals.scoredComparisons > 0 || coverage.evals.comparisons > 0 ? coverage.evals.comparisons : coverage.benchmarks.comparisons || coverage.benchmarks.matrices,
339
+ readyNote: "Analysis coverage includes a scored base-vs-trained Eliza harness or eval comparison.",
340
+ partialNote: "Analysis coverage found comparison artifacts without complete scored Eliza harness improvement metrics."
341
+ }
342
+ );
343
+ }
344
+ if (item.id === "benchmark_matrix") {
345
+ return coverageCheck(
346
+ item,
347
+ coverage.benchmarks.scoredComparisons > 0 ? "ready" : coverage.benchmarks.matrices > 0 ? "partial" : null,
348
+ {
349
+ artifactCount: coverage.benchmarks.matrices,
350
+ readyNote: "Analysis coverage includes benchmark matrix scored comparisons.",
351
+ partialNote: "Analysis coverage found benchmark matrices without scored comparisons."
352
+ }
353
+ );
354
+ }
355
+ if (item.id === "benchmark_case_provenance") {
356
+ return coverageCheck(
357
+ item,
358
+ coverage.benchmarks.caseSamples > 0 ? "ready" : coverage.benchmarks.matrices > 0 ? "partial" : null,
359
+ {
360
+ artifactCount: coverage.benchmarks.caseSamples,
361
+ readyNote: "Analysis coverage includes benchmark case prompts, outputs, and trajectory paths.",
362
+ partialNote: "Analysis coverage found benchmark matrices without readable case provenance."
363
+ }
364
+ );
365
+ }
366
+ if (item.id === "smallest_model_benchmark") {
367
+ return coverageCheck(
368
+ item,
369
+ coverageTierStatus(
370
+ coverage,
371
+ ["2b"],
372
+ (tier) => tier.hasBase && tier.hasTrained
373
+ ),
374
+ {
375
+ artifactCount: coverage.benchmarks.matrices,
376
+ readyNote: "Analysis coverage includes smallest-tier base/trained benchmark comparison.",
377
+ partialNote: "Analysis coverage found benchmark matrices without complete smallest-tier base/trained comparison."
378
+ }
379
+ );
380
+ }
381
+ if (item.id === "all_eliza1_tiers_benchmark") {
382
+ return coverageCheck(
383
+ item,
384
+ coverageTierStatus(
385
+ coverage,
386
+ ELIZA_ONE_BENCHMARK_TIERS,
387
+ (tier) => tier.hasBase && tier.hasTrained
388
+ ),
389
+ {
390
+ artifactCount: coverage.benchmarks.matrices,
391
+ readyNote: "Analysis coverage includes base/trained benchmark comparisons for every Eliza-1 tier.",
392
+ partialNote: "Analysis coverage found benchmark matrices without complete all-tier base/trained comparisons."
393
+ }
394
+ );
395
+ }
396
+ if (item.id === "cerebras_reference") {
397
+ return coverageCheck(
398
+ item,
399
+ coverageTierStatus(
400
+ coverage,
401
+ ["2b"],
402
+ (tier) => tier.hasReference
403
+ ) === "ready" || coverage.benchmarks.tierCoverage.some((tier) => tier.hasReference) ? "ready" : coverage.benchmarks.matrices > 0 ? "partial" : null,
404
+ {
405
+ artifactCount: coverage.benchmarks.matrices,
406
+ readyNote: "Analysis coverage includes a Cerebras reference score.",
407
+ partialNote: "Analysis coverage found benchmark matrices without a Cerebras reference score."
408
+ }
409
+ );
410
+ }
411
+ if (item.id === "base_trained_improvement") {
412
+ return coverageCheck(
413
+ item,
414
+ coverage.benchmarks.tierCoverage.some(
415
+ (tier) => tier.hasBase && tier.hasTrained && tier.hasImprovement
416
+ ) ? "ready" : coverage.benchmarks.matrices > 0 ? "partial" : null,
417
+ {
418
+ artifactCount: coverage.benchmarks.scoredComparisons,
419
+ readyNote: "Analysis coverage includes base/trained benchmark improvement.",
420
+ partialNote: "Analysis coverage found benchmark matrices without base/trained improvement."
421
+ }
422
+ );
423
+ }
424
+ if (item.id === "all_eliza1_tier_improvements") {
425
+ return coverageCheck(
426
+ item,
427
+ coverageTierStatus(
428
+ coverage,
429
+ ELIZA_ONE_BENCHMARK_TIERS,
430
+ (tier) => tier.hasBase && tier.hasTrained && tier.hasImprovement
431
+ ),
432
+ {
433
+ artifactCount: coverage.benchmarks.scoredComparisons,
434
+ readyNote: "Analysis coverage includes percentage improvement for every Eliza-1 tier.",
435
+ partialNote: "Analysis coverage found benchmark matrices without all-tier percentage improvement."
436
+ }
437
+ );
438
+ }
439
+ return item;
440
+ });
441
+ }
442
+ function check(artifacts, input) {
443
+ const readyArtifacts = artifacts.filter(input.ready);
444
+ const partialArtifacts = readyArtifacts.length === 0 && input.partial ? artifacts.filter(input.partial) : [];
445
+ const matched = readyArtifacts.length > 0 ? readyArtifacts : partialArtifacts;
446
+ const status = readyArtifacts.length > 0 ? "ready" : partialArtifacts.length > 0 ? "partial" : "missing";
447
+ return {
448
+ id: input.id,
449
+ label: input.label,
450
+ status,
451
+ artifactCount: matched.length,
452
+ artifactPaths: matched.map((artifact) => artifact.path),
453
+ note: status === "ready" ? input.readyNote : status === "partial" ? input.partialNote ?? input.readyNote : input.missingNote,
454
+ recommendedAction: status === "ready" ? null : input.recommendedAction ?? null
455
+ };
456
+ }
457
+ function buildTrainingReadinessReportPayload(analysis, options = {}) {
458
+ const artifacts = analysis.manifest.artifacts;
459
+ const coverage = analysis.manifest.coverage;
460
+ const checks = applyCoverageReadiness([
461
+ check(artifacts, {
462
+ id: "huggingface_training_data",
463
+ label: "Hugging Face training data",
464
+ ready: (artifact) => artifact.kind === "trajectory_dataset" && (schemaOf(artifact) === "eliza_huggingface_dataset_ingest" || sourceKindOf(artifact) === "huggingface_dataset") && (numberSummary(artifact, "downloadedFiles") ?? 0) > 0 && (numberSummary(artifact, "jsonlRows") ?? 0) > 0,
465
+ partial: (artifact) => artifact.kind === "trajectory_dataset" && (schemaOf(artifact) === "eliza_huggingface_dataset_ingest" || sourceKindOf(artifact) === "huggingface_dataset"),
466
+ readyNote: "Downloaded Hugging Face training rows are represented.",
467
+ partialNote: "A Hugging Face ingest artifact is present, but it has no downloaded JSONL rows.",
468
+ missingNote: "No Hugging Face training dataset ingest manifest was found.",
469
+ recommendedAction: {
470
+ label: "Download Hugging Face training files",
471
+ capability: "terminal-training-ingest-hf-dataset",
472
+ params: { dryRun: false }
473
+ }
474
+ }),
475
+ check(artifacts, {
476
+ id: "feed_generation",
477
+ label: "Feed generated trajectories",
478
+ ready: (artifact) => artifact.kind === "trajectory_dataset" && (schemaOf(artifact) === "feed_training_trajectory_export" || schemaOf(artifact) === "feed_parallel_generation") && !isDryRunArtifact(artifact) && hasPositiveSummary(artifact, [
479
+ "rows",
480
+ "trajectories",
481
+ "parsedTrajectories",
482
+ "agentsCreated"
483
+ ]),
484
+ partial: (artifact) => artifact.kind === "trajectory_dataset" && (schemaOf(artifact) === "feed_training_trajectory_export" || schemaOf(artifact) === "feed_parallel_generation"),
485
+ readyNote: "Feed generation artifacts include generated trajectory data.",
486
+ partialNote: "A feed generation artifact is present, but it is a dry run or has no generated trajectory rows.",
487
+ missingNote: "No feed trajectory generation artifact was found.",
488
+ recommendedAction: {
489
+ label: "Generate feed training trajectories",
490
+ capability: "terminal-training-feed-generate",
491
+ params: {
492
+ dryRun: false,
493
+ archetypes: "trader",
494
+ numAgents: 1,
495
+ ticks: 1,
496
+ parallel: 1
497
+ }
498
+ }
499
+ }),
500
+ check(artifacts, {
501
+ id: "natural_trajectories",
502
+ label: "Natural app trajectories",
503
+ ready: (artifact) => artifact.kind === "trajectory_bundle" && sourceLabelOf(artifact) === "training_collection_natural_trajectories" && hasPositiveSummary(artifact, [
504
+ "sanitizedTrajectoryCount",
505
+ "taskExamples",
506
+ "llmCalls"
507
+ ]),
508
+ partial: (artifact) => artifact.kind === "trajectory_bundle" && sourceLabelOf(artifact) === "training_collection_natural_trajectories",
509
+ readyNote: "Natural app/runtime trajectory bundles include trajectory rows.",
510
+ partialNote: "A natural app trajectory bundle is present, but it has no counted trajectory rows.",
511
+ missingNote: "No natural app/runtime trajectory bundle was found.",
512
+ recommendedAction: {
513
+ label: "Collect natural app/runtime trajectories",
514
+ capability: "terminal-training-run-collection",
515
+ params: {
516
+ includeNaturalTrajectories: true
517
+ }
518
+ }
519
+ }),
520
+ check(artifacts, {
521
+ id: "test_trajectories",
522
+ label: "Test trajectories",
523
+ ready: (artifact) => artifact.kind === "trajectory_dataset" && sourceKindOf(artifact) === "app_core_test_trajectory" && hasPositiveSummary(artifact, ["actions", "llmCalls"]),
524
+ partial: (artifact) => artifact.kind === "trajectory_dataset" && sourceKindOf(artifact) === "app_core_test_trajectory",
525
+ readyNote: "Test trajectory artifacts include action or LLM rows.",
526
+ partialNote: "A test trajectory artifact is present, but it has no counted actions or LLM rows.",
527
+ missingNote: "No test trajectory artifact was found.",
528
+ recommendedAction: {
529
+ label: "Collect app-core test trajectories",
530
+ capability: "terminal-training-run-collection",
531
+ params: {
532
+ includeTestTrajectories: true
533
+ }
534
+ }
535
+ }),
536
+ check(artifacts, {
537
+ id: "scenario_trajectories",
538
+ label: "Scenario trajectories",
539
+ ready: (artifact) => artifact.kind === "scenario_run" && hasPositiveSummary(artifact, ["totalCount", "nativeRows"]) || artifact.kind === "trajectory_dataset" && schemaOf(artifact) === "eliza_scenario_native_export" && hasPositiveSummary(artifact, ["rows", "parsedTrajectories"]),
540
+ partial: (artifact) => artifact.kind === "scenario_run" || artifact.kind === "trajectory_dataset" && schemaOf(artifact) === "eliza_scenario_native_export",
541
+ readyNote: "Scenario run or native scenario export artifacts include scenario rows.",
542
+ partialNote: "A scenario artifact is present, but it has no counted scenario or native trajectory rows.",
543
+ missingNote: "No scenario run or native scenario export was found.",
544
+ recommendedAction: {
545
+ label: "Run scenarios with native trajectory export",
546
+ capability: "terminal-training-run-scenarios",
547
+ params: {
548
+ dryRun: false,
549
+ exportNative: true,
550
+ useDeterministicProxy: true
551
+ }
552
+ }
553
+ }),
554
+ check(artifacts, {
555
+ id: "readable_source_samples",
556
+ label: "Readable trajectory samples",
557
+ ready: (artifact) => (artifact.kind === "trajectory_bundle" || artifact.kind === "trajectory_dataset" || artifact.kind === "scenario_run") && hasReadableSamplePreview(artifact),
558
+ partial: (artifact) => artifact.kind === "trajectory_bundle" || artifact.kind === "trajectory_dataset" || artifact.kind === "scenario_run",
559
+ readyNote: "Trajectory artifacts include readable input/output or trajectory sample previews for the HTML viewer.",
560
+ partialNote: "Trajectory artifacts are present, but none expose readable sample previews yet.",
561
+ missingNote: "No trajectory artifact with readable HTML-viewer samples was found.",
562
+ recommendedAction: {
563
+ label: "Build the training analysis viewer from collected artifacts",
564
+ capability: "terminal-training-build-analysis-index",
565
+ params: {}
566
+ }
567
+ }),
568
+ check(artifacts, {
569
+ id: "eval_comparison",
570
+ label: "Base vs trained Eliza harness eval comparison",
571
+ ready: (artifact) => artifact.kind === "eval" && schemaOf(artifact) === "eliza_eval_comparison_artifact" && hasScoredEvalImprovement(artifact) || artifact.kind === "benchmark_matrix" && hasImprovementComparison(artifact),
572
+ partial: (artifact) => artifact.kind === "eval" && schemaOf(artifact) === "eliza_eval_comparison_artifact" || artifact.kind === "benchmark_matrix",
573
+ readyNote: "A scored base-vs-trained Eliza harness or eval comparison with percentage improvement is present.",
574
+ partialNote: "A comparison artifact is present, but it does not include base score, trained score, and percentage improvement from the Eliza harness.",
575
+ missingNote: "No base-vs-trained Eliza harness eval comparison artifact was found.",
576
+ recommendedAction: actionBenchmarkPairCollectionAction(
577
+ "Run scored base-vs-trained Eliza harness eval comparison",
578
+ ["2b"]
579
+ )
580
+ }),
581
+ check(artifacts, {
582
+ id: "agentic_benchmarks",
583
+ label: "Eliza harness benchmarks",
584
+ ready: (artifact) => artifact.kind === "eval" && isElizaHarnessActionBenchmark(artifact) && (typeof artifact.summary.accuracy === "number" || typeof artifact.summary.score === "number" || typeof artifact.summary.passRate === "number") && ((numberSummary(artifact, "total") ?? 1) > 0 || (numberSummary(artifact, "results") ?? 1) > 0),
585
+ partial: (artifact) => artifact.kind === "eval" && isElizaHarnessActionBenchmark(artifact),
586
+ readyNote: "Agentic benchmark artifacts include scored results.",
587
+ partialNote: "An agentic benchmark artifact is present, but it has no score.",
588
+ missingNote: "No Eliza harness benchmark artifact was found.",
589
+ recommendedAction: {
590
+ label: "Run Eliza action-selection benchmark",
591
+ capability: "terminal-training-run-collection",
592
+ params: {
593
+ includeActionBenchmark: true,
594
+ includeBenchmarkMatrix: true,
595
+ actionBenchmark: {
596
+ dryRun: false,
597
+ useMocks: false,
598
+ runsPerCase: 1,
599
+ provider: "local-llama-cpp",
600
+ benchmark: "eliza_harness_action_selection"
601
+ },
602
+ actionBenchmarkPair: {
603
+ tier: "2b",
604
+ base: { variant: "base" },
605
+ trained: { variant: "trained" }
606
+ }
607
+ }
608
+ }
609
+ }),
610
+ check(artifacts, {
611
+ id: "benchmark_matrix",
612
+ label: "Benchmark matrix",
613
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasPositiveSummary(artifact, ["rows", "comparisons"]) && hasRealBenchmarkMatrixRows(artifact),
614
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
615
+ readyNote: "Benchmark matrix artifact includes rows or comparisons.",
616
+ partialNote: "A benchmark matrix artifact is present, but it has no rows or comparisons.",
617
+ missingNote: "No benchmark matrix artifact was found.",
618
+ recommendedAction: actionBenchmarkPairCollectionAction(
619
+ "Generate benchmark matrix from Eliza harness artifacts",
620
+ ["2b"]
621
+ )
622
+ }),
623
+ check(artifacts, {
624
+ id: "benchmark_case_provenance",
625
+ label: "Benchmark case provenance",
626
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasBenchmarkCaseProvenance(artifact),
627
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
628
+ readyNote: "Benchmark matrix rows include Eliza harness case prompts, actions, and trajectory paths.",
629
+ partialNote: "A benchmark matrix exists, but its rows do not include readable case provenance.",
630
+ missingNote: "No benchmark matrix with Eliza harness case provenance was found.",
631
+ recommendedAction: actionBenchmarkPairCollectionAction(
632
+ "Run Eliza harness benchmark with trajectory capture",
633
+ ["2b"]
634
+ )
635
+ }),
636
+ check(artifacts, {
637
+ id: "smallest_model_benchmark",
638
+ label: "Smallest Eliza-1 benchmark coverage",
639
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasSmallestTierComparison(artifact),
640
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
641
+ readyNote: "Benchmark matrix includes scored coverage for the smallest Eliza-1 tier.",
642
+ partialNote: "A benchmark matrix exists, but it does not prove scored smallest-tier coverage.",
643
+ missingNote: "No benchmark matrix exists for the smallest Eliza-1 tier.",
644
+ recommendedAction: actionBenchmarkPairCollectionAction(
645
+ "Run smallest-tier base/trained Eliza harness benchmark",
646
+ ["2b"]
647
+ )
648
+ }),
649
+ check(artifacts, {
650
+ id: "all_eliza1_tiers_benchmark",
651
+ label: "All Eliza-1 tier benchmark coverage",
652
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasAllEliza1BenchmarkTierComparisons(artifact),
653
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
654
+ readyNote: "Benchmark matrix includes scored coverage for 2B, 4B, 9B, and 27B tiers.",
655
+ partialNote: "A benchmark matrix exists, but it does not prove scored coverage for every Eliza-1 tier.",
656
+ missingNote: "No benchmark matrix exists for all requested Eliza-1 tiers.",
657
+ recommendedAction: actionBenchmarkPairCollectionAction(
658
+ "Run all-tier base/trained Eliza harness benchmarks",
659
+ ELIZA_ONE_BENCHMARK_TIERS
660
+ )
661
+ }),
662
+ check(artifacts, {
663
+ id: "cerebras_reference",
664
+ label: "Cerebras reference benchmark",
665
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasCerebrasReferenceComparison(artifact),
666
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
667
+ readyNote: "Benchmark matrix includes a Cerebras reference comparison.",
668
+ partialNote: "A benchmark matrix exists, but it does not prove a Cerebras reference comparison.",
669
+ missingNote: "No Cerebras reference benchmark artifact was found.",
670
+ recommendedAction: {
671
+ label: "Run benchmark against Cerebras GPT-120b",
672
+ capability: "terminal-training-run-benchmark-vs-cerebras",
673
+ params: {
674
+ tiers: ELIZA_ONE_BENCHMARK_TIER_LIST,
675
+ benchmark: "eliza_harness_action_selection",
676
+ variants: "both",
677
+ dryRun: false
678
+ }
679
+ }
680
+ }),
681
+ check(artifacts, {
682
+ id: "base_trained_improvement",
683
+ label: "Base vs trained improvement metrics",
684
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasImprovementComparison(artifact),
685
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
686
+ readyNote: "Benchmark matrix includes base/trained scores with percentage improvement.",
687
+ partialNote: "A benchmark matrix exists, but it does not prove base/trained percentage improvement.",
688
+ missingNote: "No benchmark matrix exists with base/trained percentage improvement.",
689
+ recommendedAction: actionBenchmarkPairCollectionAction(
690
+ "Run base/trained Eliza harness improvement comparison",
691
+ ["2b"]
692
+ )
693
+ }),
694
+ check(artifacts, {
695
+ id: "all_eliza1_tier_improvements",
696
+ label: "All Eliza-1 tier improvement metrics",
697
+ ready: (artifact) => artifact.kind === "benchmark_matrix" && hasAllEliza1TierImprovementComparisons(artifact),
698
+ partial: (artifact) => artifact.kind === "benchmark_matrix",
699
+ readyNote: "Benchmark matrix includes percentage improvement for 2B, 4B, 9B, and 27B tiers.",
700
+ partialNote: "A benchmark matrix exists, but it does not prove percentage improvement for every Eliza-1 tier.",
701
+ missingNote: "No benchmark matrix exists with percentage improvement for every requested Eliza-1 tier.",
702
+ recommendedAction: actionBenchmarkPairCollectionAction(
703
+ "Run all-tier base/trained Eliza harness improvement comparison",
704
+ ELIZA_ONE_BENCHMARK_TIERS
705
+ )
706
+ }),
707
+ buildModelTrackingCheck(artifacts, coverage),
708
+ check(artifacts, {
709
+ id: "collection_manifest",
710
+ label: "Collection manifest",
711
+ ready: (artifact) => artifact.kind === "collection_run",
712
+ readyNote: "A collection manifest ties the run together.",
713
+ missingNote: "No training collection manifest was found.",
714
+ recommendedAction: {
715
+ label: "Run training collection",
716
+ capability: "terminal-training-run-collection",
717
+ params: {}
718
+ }
719
+ })
720
+ ], coverage);
721
+ const counts = {
722
+ checks: checks.length,
723
+ ready: checks.filter((item) => item.status === "ready").length,
724
+ partial: checks.filter((item) => item.status === "partial").length,
725
+ missing: checks.filter((item) => item.status === "missing").length,
726
+ artifacts: artifacts.length
727
+ };
728
+ const status = counts.missing === 0 && counts.partial === 0 ? "ready" : counts.ready > 0 || counts.partial > 0 ? "partial" : "missing";
729
+ const outputDir = options.outputDir ?? analysis.outputDir;
730
+ const reportPath = options.reportPath ?? join(outputDir, "training-readiness-report.json");
731
+ return {
732
+ schema: TRAINING_READINESS_REPORT_SCHEMA,
733
+ schemaVersion: TRAINING_READINESS_REPORT_VERSION,
734
+ generatedAt: options.generatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
735
+ outputDir,
736
+ reportPath,
737
+ analysisManifestPath: analysis.manifestPath,
738
+ analysisIndexHtmlPath: analysis.indexHtmlPath,
739
+ status,
740
+ counts,
741
+ checks
742
+ };
743
+ }
744
+ async function writeTrainingReadinessReport(analysis, options = {}) {
745
+ const report = buildTrainingReadinessReportPayload(analysis, options);
746
+ await mkdir(report.outputDir, { recursive: true });
747
+ await writeFile(
748
+ report.reportPath,
749
+ `${JSON.stringify(report, null, 2)}
750
+ `,
751
+ "utf8"
752
+ );
753
+ return {
754
+ outputDir: report.outputDir,
755
+ reportPath: report.reportPath,
756
+ report
757
+ };
758
+ }
759
+ export {
760
+ TRAINING_READINESS_REPORT_SCHEMA,
761
+ TRAINING_READINESS_REPORT_VERSION,
762
+ buildTrainingReadinessReportPayload,
763
+ writeTrainingReadinessReport
764
+ };
765
+ //# sourceMappingURL=training-readiness-report.js.map