@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 @@
1
+ {"version":3,"sources":["../../src/core/training-collection-runner.ts"],"sourcesContent":["import { existsSync } from \"node:fs\";\nimport { mkdir, readdir, readFile, stat, writeFile } from \"node:fs/promises\";\nimport { basename, dirname, join, resolve } from \"node:path\";\nimport type { Trajectory } from \"@elizaos/agent\";\nimport {\n type ActionBenchmarkRunOptions,\n type ActionBenchmarkRunResult,\n runActionBenchmark,\n} from \"./action-benchmark-runner.js\";\nimport {\n type BenchmarkMatrixArtifactResult,\n type BenchmarkMatrixArtifactSource,\n writeBenchmarkMatrixArtifactFromArtifacts,\n} from \"./benchmark-matrix-artifact.js\";\nimport {\n type BenchmarkVsCerebrasRunOptions,\n type BenchmarkVsCerebrasRunResult,\n runBenchmarkVsCerebras,\n} from \"./benchmark-vs-cerebras-runner.js\";\nimport {\n canonicalElizaOneTierSort,\n ELIZA_ONE_BENCHMARK_TIERS,\n elizaOneActionBenchmarkPairs,\n elizaOneBenchmarkModelId,\n parseElizaOneBenchmarkTiers,\n} from \"./eliza1-benchmark-recipe.js\";\nimport {\n type StageEliza1BundleOptions,\n type StageEliza1BundleResult,\n stageEliza1Bundle,\n} from \"./eliza1-bundle-stager.js\";\nimport {\n EVAL_COMPARISON_ARTIFACT_SCHEMA,\n type EvalComparisonRunOptions,\n type EvalComparisonRunResult,\n runLocalEvalComparison,\n} from \"./eval-comparison-artifact.js\";\nimport {\n type FeedGenerationRunOptions,\n type FeedGenerationRunResult,\n runFeedGeneration,\n} from \"./feed-generation-runner.js\";\nimport {\n type HuggingFaceDatasetIngestResult,\n type IngestHuggingFaceDatasetOptions,\n ingestHuggingFaceDataset,\n} from \"./huggingface-dataset-ingest.js\";\nimport {\n runScenarios,\n type ScenarioRunOptions,\n type ScenarioRunResult,\n} from \"./scenario-runner.js\";\nimport {\n type CollectTestTrajectoriesOptions,\n collectTestTrajectories,\n type TestTrajectoryCollectionResult,\n} from \"./test-trajectory-collector.js\";\nimport {\n type BuildTrainingAnalysisIndexOptions,\n buildTrainingAnalysisIndex,\n type TrainingAnalysisIndex,\n} from \"./training-analysis-index.js\";\nimport { trainingStateRoot } from \"./training-config.js\";\nimport {\n type TrainingReadinessReport,\n writeTrainingReadinessReport,\n} from \"./training-readiness-report.js\";\nimport {\n type BuildTrajectoryExportBundleOptions,\n buildTrajectoryExportBundle,\n type TrajectoryExportBundle,\n} from \"./trajectory-export-bundle.js\";\nimport { discoverWorkspaceRoot } from \"./workspace-runtime.js\";\n\nexport const TRAINING_COLLECTION_RUN_SCHEMA = \"eliza_training_collection_run\";\nexport const TRAINING_COLLECTION_RUN_VERSION = 1;\nexport const TRAINING_COLLECTION_INDEX_SCHEMA =\n \"eliza_training_collection_index\";\nexport const TRAINING_COLLECTION_INDEX_VERSION = 1;\n\nexport interface TrainingCollectionRunOptions {\n preflightOnly?: boolean;\n preflightProbe?: boolean;\n outputDir?: string;\n workspaceRoot?: string;\n includeHuggingFace?: boolean;\n includeFeed?: boolean;\n includeNaturalTrajectories?: boolean;\n includeTestTrajectories?: boolean;\n includeScenarios?: boolean;\n includeEvalComparison?: boolean;\n includeActionBenchmark?: boolean;\n includeBenchmarkVsCerebras?: boolean;\n includeEliza1ModelRegistry?: boolean;\n includeEliza1BundleStage?: boolean;\n includeBenchmarkMatrix?: boolean;\n huggingFace?: IngestHuggingFaceDatasetOptions;\n feed?: FeedGenerationRunOptions;\n naturalTrajectories?: Omit<\n BuildTrajectoryExportBundleOptions,\n \"outputDir\"\n > & {\n outputDir?: string;\n trajectories?: Trajectory[];\n };\n testTrajectories?: CollectTestTrajectoriesOptions;\n scenarios?: ScenarioRunOptions;\n evalComparison?: EvalComparisonRunOptions;\n actionBenchmark?: ActionBenchmarkRunOptions;\n actionBenchmarkPair?: ActionBenchmarkPairOptions;\n actionBenchmarkPairs?: ActionBenchmarkPairOptions[] | string;\n benchmarkVsCerebras?: BenchmarkVsCerebrasRunOptions;\n eliza1BundleStage?: StageEliza1BundleOptions;\n benchmarkMatrix?: {\n artifacts?: BenchmarkMatrixArtifactSource[];\n outputDir?: string;\n generatedAt?: string;\n referenceModelId?: string;\n source?: Record<string, unknown>;\n };\n analysis?: Omit<BuildTrainingAnalysisIndexOptions, \"roots\" | \"outputDir\"> & {\n roots?: string[];\n outputDir?: string;\n };\n now?: () => Date;\n}\n\nexport interface ActionBenchmarkPairOptions {\n label?: string;\n tier?: string;\n base?: ActionBenchmarkRunOptions;\n trained?: ActionBenchmarkRunOptions;\n}\n\nexport interface ActionBenchmarkPairRunRecord {\n label: string;\n tier: string | null;\n runs: {\n base: ActionBenchmarkRunResult | null;\n trained: ActionBenchmarkRunResult | null;\n };\n matrixSources: BenchmarkMatrixArtifactSource[];\n}\n\nexport interface ActionBenchmarkPairRunResult {\n outputDir: string;\n pairs: ActionBenchmarkPairRunRecord[];\n runs: {\n base: ActionBenchmarkRunResult | null;\n trained: ActionBenchmarkRunResult | null;\n };\n matrixSources: BenchmarkMatrixArtifactSource[];\n}\n\nconst DEFAULT_ACTION_BENCHMARK_PAIR_TIER = \"2b\";\n\nexport interface TrainingCollectionStep<T = unknown> {\n id:\n | \"huggingface\"\n | \"feed\"\n | \"natural_trajectories\"\n | \"test_trajectories\"\n | \"scenarios\"\n | \"eval_comparison\"\n | \"action_benchmark\"\n | \"benchmark_vs_cerebras\"\n | \"eliza1_model_registry\"\n | \"eliza1_bundle_stage\"\n | \"benchmark_matrix\";\n status: \"skipped\" | \"succeeded\" | \"failed\";\n outputDir: string | null;\n error: string | null;\n result: T | null;\n}\n\nfunction resultRecord(step: TrainingCollectionStep): Record<string, unknown> {\n return step.result &&\n typeof step.result === \"object\" &&\n !Array.isArray(step.result)\n ? (step.result as Record<string, unknown>)\n : {};\n}\n\nfunction autoBenchmarkMatrixSources(\n steps: readonly TrainingCollectionStep[],\n explicit: readonly BenchmarkMatrixArtifactSource[] = [],\n): BenchmarkMatrixArtifactSource[] {\n const sources: BenchmarkMatrixArtifactSource[] = [...explicit];\n for (const step of steps) {\n if (step.status !== \"succeeded\") continue;\n const result = resultRecord(step);\n if (\n step.id === \"eval_comparison\" &&\n typeof result.artifactPath === \"string\"\n ) {\n sources.push({ path: result.artifactPath });\n }\n if (\n step.id === \"benchmark_vs_cerebras\" &&\n typeof result.matrixArtifactPath === \"string\" &&\n existsSync(result.matrixArtifactPath)\n ) {\n sources.push({ path: result.matrixArtifactPath });\n }\n if (step.id === \"action_benchmark\" && Array.isArray(result.matrixSources)) {\n for (const matrixSource of result.matrixSources) {\n if (\n matrixSource &&\n typeof matrixSource === \"object\" &&\n !Array.isArray(matrixSource) &&\n typeof (matrixSource as Record<string, unknown>).path === \"string\" &&\n existsSync(\n (matrixSource as Record<string, unknown>).path as string,\n ) &&\n !sources.some(\n (source) =>\n source.path ===\n ((matrixSource as Record<string, unknown>).path as string),\n )\n ) {\n sources.push(matrixSource as BenchmarkMatrixArtifactSource);\n }\n }\n }\n if (\n step.id === \"action_benchmark\" &&\n result.matrixSource &&\n typeof result.matrixSource === \"object\" &&\n !Array.isArray(result.matrixSource) &&\n typeof (result.matrixSource as Record<string, unknown>).path ===\n \"string\" &&\n existsSync(\n (result.matrixSource as Record<string, unknown>).path as string,\n ) &&\n !sources.some(\n (source) =>\n source.path ===\n ((result.matrixSource as Record<string, unknown>).path as string),\n )\n ) {\n sources.push(result.matrixSource as BenchmarkMatrixArtifactSource);\n }\n }\n return sources.filter(\n (source, index, all) =>\n all.findIndex((candidate) => candidate.path === source.path) === index,\n );\n}\n\nfunction safePathPart(value: string): string {\n return value.replace(/[^a-zA-Z0-9._-]+/g, \"-\").replace(/^-+|-+$/g, \"\");\n}\n\nfunction actionBenchmarkPairLabel(\n pair: ActionBenchmarkPairOptions,\n index: number,\n): string {\n return (\n safePathPart(pair.label?.trim() || pair.tier?.trim() || \"\") ||\n `pair-${index + 1}`\n );\n}\n\nfunction explicitActionBenchmarkPairs(\n options: TrainingCollectionRunOptions,\n): ActionBenchmarkPairOptions[] {\n const pairs = actionBenchmarkPairsOption(options.actionBenchmarkPairs);\n if (pairs.length > 0) return pairs;\n return options.actionBenchmarkPair ? [options.actionBenchmarkPair] : [];\n}\n\nfunction actionBenchmarkPairsOption(\n value: TrainingCollectionRunOptions[\"actionBenchmarkPairs\"],\n): ActionBenchmarkPairOptions[] {\n if (typeof value === \"string\") {\n return elizaOneActionBenchmarkPairs(parseElizaOneBenchmarkTiers(value, []));\n }\n if (value && value.length > 0) {\n return value;\n }\n return [];\n}\n\nfunction shouldUseDefaultActionBenchmarkPair(\n options: TrainingCollectionRunOptions,\n): boolean {\n if (!boolWithDefault(options.includeActionBenchmark, true)) return false;\n if (!boolWithDefault(options.includeBenchmarkMatrix, true)) return false;\n if (explicitActionBenchmarkPairs(options).length > 0) return false;\n\n const actionBenchmark = options.actionBenchmark;\n return !(\n actionBenchmark?.variant ||\n actionBenchmark?.modelId?.trim() ||\n actionBenchmark?.runtimeModel?.trim()\n );\n}\n\nfunction defaultActionBenchmarkPair(\n options: TrainingCollectionRunOptions,\n): ActionBenchmarkPairOptions {\n const tier =\n options.actionBenchmark?.tier?.trim() || DEFAULT_ACTION_BENCHMARK_PAIR_TIER;\n return {\n tier,\n base: { variant: \"base\" },\n trained: { variant: \"trained\" },\n };\n}\n\nfunction effectiveActionBenchmarkPairs(\n options: TrainingCollectionRunOptions,\n): ActionBenchmarkPairOptions[] {\n const explicit = explicitActionBenchmarkPairs(options);\n if (explicit.length > 0) return explicit;\n return shouldUseDefaultActionBenchmarkPair(options)\n ? [defaultActionBenchmarkPair(options)]\n : [];\n}\n\nasync function runActionBenchmarkPair(input: {\n outputDir: string;\n workspaceRoot?: string;\n common?: ActionBenchmarkRunOptions;\n pair: ActionBenchmarkPairOptions;\n label: string;\n preserveSinglePairLayout?: boolean;\n}): Promise<ActionBenchmarkPairRunRecord> {\n const { common, outputDir, workspaceRoot, pair, label } = input;\n const tier = pair.tier?.trim() || common?.tier;\n const baseOutputDir =\n pair.base?.outputDir ??\n (input.preserveSinglePairLayout\n ? join(outputDir, \"base\")\n : join(outputDir, label, \"base\"));\n const trainedOutputDir =\n pair.trained?.outputDir ??\n (input.preserveSinglePairLayout\n ? join(outputDir, \"trained\")\n : join(outputDir, label, \"trained\"));\n const base = pair.base\n ? await runActionBenchmark({\n ...(common ?? {}),\n ...pair.base,\n workspaceRoot:\n pair.base.workspaceRoot ?? common?.workspaceRoot ?? workspaceRoot,\n outputDir: baseOutputDir,\n modelId:\n pair.base.modelId ??\n elizaOneBenchmarkModelId(tier, \"base\") ??\n common?.modelId,\n runtimeModel:\n pair.base.runtimeModel ??\n elizaOneBenchmarkModelId(tier, \"base\") ??\n common?.runtimeModel,\n tier: pair.base.tier ?? tier,\n variant: pair.base.variant ?? \"base\",\n })\n : null;\n const trained = pair.trained\n ? await runActionBenchmark({\n ...(common ?? {}),\n ...pair.trained,\n workspaceRoot:\n pair.trained.workspaceRoot ?? common?.workspaceRoot ?? workspaceRoot,\n outputDir: trainedOutputDir,\n modelId:\n pair.trained.modelId ??\n elizaOneBenchmarkModelId(tier, \"trained\") ??\n common?.modelId,\n runtimeModel:\n pair.trained.runtimeModel ??\n elizaOneBenchmarkModelId(tier, \"trained\") ??\n common?.runtimeModel,\n tier: pair.trained.tier ?? tier,\n variant: pair.trained.variant ?? \"trained\",\n })\n : null;\n return {\n label,\n tier: tier ?? null,\n runs: { base, trained },\n matrixSources: [base?.matrixSource, trained?.matrixSource].filter(\n (source): source is BenchmarkMatrixArtifactSource => source != null,\n ),\n };\n}\n\nasync function runActionBenchmarkCollectionStep(input: {\n outputDir: string;\n workspaceRoot?: string;\n options: TrainingCollectionRunOptions;\n}): Promise<ActionBenchmarkRunResult | ActionBenchmarkPairRunResult> {\n const { outputDir, workspaceRoot, options } = input;\n const explicitPairs = actionBenchmarkPairsOption(\n options.actionBenchmarkPairs,\n );\n if (explicitPairs.length > 0) {\n const pairs: ActionBenchmarkPairRunRecord[] = [];\n for (const [index, pair] of explicitPairs.entries()) {\n pairs.push(\n await runActionBenchmarkPair({\n outputDir,\n workspaceRoot,\n common: options.actionBenchmark,\n pair: {\n ...pair,\n base: pair.base ?? {},\n trained: pair.trained ?? {},\n },\n label: actionBenchmarkPairLabel(pair, index),\n }),\n );\n }\n return {\n outputDir,\n pairs,\n runs: pairs[0]?.runs ?? { base: null, trained: null },\n matrixSources: pairs.flatMap((pair) => pair.matrixSources),\n };\n }\n const actionBenchmarkPairs = effectiveActionBenchmarkPairs(options);\n if (actionBenchmarkPairs.length === 1) {\n const actionBenchmarkPair = actionBenchmarkPairs[0];\n const pair = await runActionBenchmarkPair({\n outputDir,\n workspaceRoot,\n common: options.actionBenchmark,\n pair: {\n ...actionBenchmarkPair,\n base: actionBenchmarkPair.base ?? {},\n trained: actionBenchmarkPair.trained ?? {},\n },\n label: actionBenchmarkPairLabel(actionBenchmarkPair, 0),\n preserveSinglePairLayout: true,\n });\n return {\n outputDir,\n pairs: [pair],\n runs: pair.runs,\n matrixSources: pair.matrixSources,\n };\n }\n return runActionBenchmark({\n ...(options.actionBenchmark ?? {}),\n workspaceRoot: options.actionBenchmark?.workspaceRoot ?? workspaceRoot,\n outputDir: options.actionBenchmark?.outputDir ?? outputDir,\n });\n}\n\nexport interface TrainingCollectionRunManifest {\n schema: typeof TRAINING_COLLECTION_RUN_SCHEMA;\n schemaVersion: typeof TRAINING_COLLECTION_RUN_VERSION;\n generatedAt: string;\n outputDir: string;\n manifestPath: string;\n readmePath: string;\n provenance: TrainingCollectionRunProvenance;\n recipe: TrainingCollectionRecipe;\n analysis: {\n outputDir: string;\n indexHtmlPath: string;\n manifestPath: string;\n artifactCount: number;\n };\n readiness: {\n outputDir: string;\n reportPath: string;\n status: TrainingReadinessReport[\"status\"];\n ready: number;\n partial: number;\n missing: number;\n };\n evidence: TrainingCollectionEvidenceSummary;\n steps: TrainingCollectionStep[];\n}\n\nexport interface TrainingCollectionRunProvenance {\n generatedBy: \"plugin-training\";\n workspaceRoot: string | null;\n trainingStateRoot: string;\n analysisRoots: string[];\n outputLayout: {\n collection: string;\n analysis: string;\n steps: string;\n };\n}\n\nexport interface TrainingCollectionRecipe {\n include: {\n huggingFace: boolean;\n feed: boolean;\n naturalTrajectories: boolean;\n testTrajectories: boolean;\n scenarios: boolean;\n evalComparison: boolean;\n actionBenchmark: boolean;\n benchmarkVsCerebras: boolean;\n eliza1ModelRegistry: boolean;\n eliza1BundleStage: boolean;\n benchmarkMatrix: boolean;\n };\n sources: {\n huggingFace: Record<string, unknown>;\n feed: Record<string, unknown>;\n naturalTrajectories: Record<string, unknown>;\n testTrajectories: Record<string, unknown>;\n scenarios: Record<string, unknown>;\n };\n evals: {\n evalComparison: Record<string, unknown>;\n actionBenchmark: Record<string, unknown>;\n actionBenchmarkPair: Record<string, unknown> | null;\n actionBenchmarkPairs: Record<string, unknown>[];\n benchmarkVsCerebras: Record<string, unknown>;\n benchmarkMatrix: Record<string, unknown>;\n };\n training: {\n eliza1ModelRegistry: Record<string, unknown>;\n eliza1BundleStage: Record<string, unknown>;\n };\n}\n\nexport interface TrainingCollectionRunResult {\n outputDir: string;\n manifestPath: string;\n readmePath: string;\n collectionIndex: TrainingCollectionIndex;\n manifest: TrainingCollectionRunManifest;\n analysis: TrainingAnalysisIndex;\n}\n\nexport interface ListTrainingCollectionsOptions {\n root?: string;\n limit?: number;\n}\n\nexport interface TrainingCollectionRunSummary {\n generatedAt: string;\n outputDir: string;\n manifestPath: string;\n readmePath: string;\n analysisIndexHtmlPath: string;\n readinessStatus: TrainingReadinessReport[\"status\"];\n readiness: {\n ready: number;\n partial: number;\n missing: number;\n };\n readinessGaps: TrainingCollectionEvidenceSummary[\"readinessGaps\"];\n artifactCount: number;\n stepCounts: Record<TrainingCollectionStep[\"status\"], number>;\n dataSources: TrainingCollectionEvidenceSummary[\"dataSources\"];\n sourceSamples: {\n huggingFace: TrainingCollectionSourceSample[];\n feed: TrainingCollectionSourceSample[];\n natural: TrainingCollectionSourceSample[];\n scenarios: TrainingCollectionSourceSample[];\n tests: TrainingCollectionSourceSample[];\n trainingJsonl: TrainingCollectionSourceSample[];\n };\n sourceArtifacts: Array<{\n category:\n | \"huggingface\"\n | \"feed\"\n | \"natural\"\n | \"scenario\"\n | \"test\"\n | \"training_jsonl\";\n title: string;\n path: string;\n schema: string | null;\n }>;\n evidenceArtifacts: Array<{\n category: \"eval\" | \"benchmark\" | \"model\";\n title: string;\n path: string;\n schema: string | null;\n }>;\n training: {\n trainingRuns: number;\n models: number;\n modelInventory: TrainingCollectionEvidenceSummary[\"training\"][\"modelInventory\"];\n };\n benchmarks: {\n actionBenchmarkPairs: number;\n benchmarkComparisons: number;\n caseSamples: number;\n tiers: string[];\n comparisonInventory: TrainingCollectionEvidenceSummary[\"benchmarks\"][\"comparisonInventory\"];\n baselineProgress: TrainingCollectionEvidenceSummary[\"benchmarks\"][\"baselineProgress\"];\n };\n evals: {\n evalArtifacts: number;\n evalComparisons: number;\n actionBenchmarks: number;\n benchmarkMatrices: number;\n comparisonInventory: TrainingCollectionEvidenceSummary[\"evals\"][\"comparisonInventory\"];\n };\n coverage: TrainingCollectionEvidenceSummary[\"coverage\"];\n}\n\nexport interface ListTrainingCollectionsResult {\n root: string;\n indexJsonPath: string;\n indexHtmlPath: string;\n collections: TrainingCollectionRunSummary[];\n}\n\nexport interface TrainingCollectionIndex {\n schema: typeof TRAINING_COLLECTION_INDEX_SCHEMA;\n schemaVersion: typeof TRAINING_COLLECTION_INDEX_VERSION;\n generatedAt: string;\n root: string;\n indexJsonPath: string;\n indexHtmlPath: string;\n collections: TrainingCollectionRunSummary[];\n}\n\nexport interface TrainingCollectionEvidenceSummary {\n preflight: TrainingCollectionPreflightSummary;\n viewerHtmlPath: string;\n analysisManifestPath: string;\n readinessReportPath: string;\n artifactCounts: TrainingAnalysisIndex[\"manifest\"][\"counts\"];\n coverage: {\n dataSources: TrainingAnalysisIndex[\"manifest\"][\"coverage\"][\"dataSources\"];\n readableSamples: TrainingAnalysisIndex[\"manifest\"][\"coverage\"][\"readableSamples\"];\n evals: TrainingAnalysisIndex[\"manifest\"][\"coverage\"][\"evals\"];\n benchmarks: TrainingAnalysisIndex[\"manifest\"][\"coverage\"][\"benchmarks\"];\n models: {\n artifacts: number;\n stagedBundles: number;\n inventoryCount: number;\n };\n };\n stepCounts: Record<TrainingCollectionStep[\"status\"], number>;\n stepArtifacts: TrainingCollectionStepEvidence[];\n dataSources: {\n huggingFaceDatasets: number;\n feedDatasets: number;\n naturalTrajectoryBundles: number;\n scenarioRuns: number;\n scenarioNativeDatasets: number;\n testTrajectories: number;\n trainingJsonlDatasets: number;\n };\n feed: {\n runs: Array<{\n title: string;\n path: string;\n schema: string | null;\n sourceKind: string | null;\n archetype: string | null;\n archetypes: unknown;\n trajectories: number | null;\n totalTicks: number | null;\n durationMs: number | null;\n errors: number | null;\n exportPath: string | null;\n outputDir: string | null;\n }>;\n archetypeStats: Array<{\n title: string;\n path: string;\n archetype: string;\n agents: number | null;\n trajectories: number | null;\n avgTicksPerAgent: number | null;\n }>;\n trajectorySamples: Array<{\n title: string;\n path: string;\n trajectoryId: string | null;\n agentId: string | null;\n archetype: string | null;\n scenarioId: string | null;\n score: number | null;\n finalPnl: number | null;\n steps: number | null;\n firstStep: unknown;\n firstInput: unknown;\n firstOutput: unknown;\n reasoning: unknown;\n }>;\n };\n sourceSamples: {\n huggingFace: TrainingCollectionSourceSample[];\n feed: TrainingCollectionSourceSample[];\n natural: TrainingCollectionSourceSample[];\n scenarios: TrainingCollectionSourceSample[];\n tests: TrainingCollectionSourceSample[];\n trainingJsonl: TrainingCollectionSourceSample[];\n };\n training: {\n trainingRuns: number;\n models: number;\n modelInventory: Array<{\n title: string;\n path: string;\n schema: string | null;\n model: string | null;\n tier: string | null;\n variant: string | null;\n outputPath: string | null;\n baseModel: string | null;\n repoId: string | null;\n baseEvalScore: number | null;\n trainedEvalScore: number | null;\n evalImprovementPercent: number | null;\n }>;\n };\n evals: {\n evalArtifacts: number;\n actionBenchmarks: number;\n evalComparisons: number;\n benchmarkMatrices: number;\n comparisonInventory: Array<{\n title: string;\n path: string;\n baseModel: string | null;\n trainedModel: string | null;\n backend: string | null;\n baseScore: number | null;\n trainedScore: number | null;\n improvementAbsolute: number | null;\n improvementPercent: number | null;\n baseLatencyMs: number | null;\n trainedLatencyMs: number | null;\n latencyDeltaMs: number | null;\n promptCount: number | null;\n distinctResponseCount: number | null;\n reportPath: string | null;\n }>;\n };\n artifactLinks: Array<{\n category:\n | \"huggingface\"\n | \"feed\"\n | \"natural\"\n | \"scenario\"\n | \"test\"\n | \"training_jsonl\"\n | \"eval\"\n | \"benchmark\"\n | \"model\"\n | \"other\";\n kind: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number][\"kind\"];\n title: string;\n path: string;\n schema: string | null;\n }>;\n benchmarks: {\n actionBenchmarkPairs: number;\n actionBenchmarkMatrixSources: number;\n benchmarkRows: number;\n benchmarkComparisons: number;\n tiers: string[];\n comparisonInventory: Array<{\n tier: string | null;\n benchmark: string | null;\n baseModelId: string | null;\n trainedModelId: string | null;\n referenceModelId: string | null;\n baseScore: number | null;\n trainedScore: number | null;\n improvementPercent: number | null;\n referenceScore: number | null;\n trainedVsReferencePercent: number | null;\n dryRun: boolean;\n useMocks: boolean;\n modelBacked: boolean;\n }>;\n improvementComparisons: Array<{\n tier: string | null;\n benchmark: string | null;\n baseScore: number | null;\n trainedScore: number | null;\n improvementPercent: number | null;\n referenceScore: number | null;\n trainedVsReferencePercent: number | null;\n modelBacked: boolean;\n }>;\n baselineProgress: {\n tierOrder: string[];\n establishedTiers: string[];\n remainingTiers: string[];\n nextTier: string | null;\n smallestTierEstablished: boolean;\n allTiersEstablished: boolean;\n };\n caseSamples: Array<{\n tier: string | null;\n variant: string | null;\n modelId: string | null;\n benchmark: string | null;\n score: number | null;\n caseId: string | null;\n prompt: string | null;\n expectedAction: string | null;\n actualAction: string | null;\n pass: boolean;\n response: string | null;\n latencyMs: number | null;\n trajectoryPath: string | null;\n useMocks: boolean;\n }>;\n };\n benchmarkReadiness: {\n smallestTier: TrainingReadinessReport[\"status\"];\n allEliza1Tiers: TrainingReadinessReport[\"status\"];\n allEliza1TierImprovements: TrainingReadinessReport[\"status\"];\n cerebrasReference: TrainingReadinessReport[\"status\"];\n baseTrainedImprovement: TrainingReadinessReport[\"status\"];\n };\n readinessGaps: Array<{\n id: string;\n label: string;\n status: TrainingReadinessReport[\"status\"];\n note: string;\n recommendedCapability: string | null;\n recommendedParams: Record<string, unknown> | null;\n }>;\n}\n\nexport interface TrainingCollectionPreflightSummary {\n liveRequired: boolean;\n checks: Array<{\n id: string;\n label: string;\n status: \"ok\" | \"missing\" | \"warning\" | \"skipped\";\n detail: string;\n path?: string | null;\n }>;\n}\n\ntype TrainingCollectionPreflightCheck =\n TrainingCollectionPreflightSummary[\"checks\"][number];\n\nexport interface TrainingCollectionStepEvidence {\n stepId: TrainingCollectionStep[\"id\"];\n status: TrainingCollectionStep[\"status\"];\n outputDir: string | null;\n command: string[] | null;\n exitCode: number | null;\n stdout: string | null;\n stderr: string | null;\n paths: Array<{\n label: string;\n path: string;\n }>;\n}\n\nexport interface TrainingCollectionSourceSample {\n title: string;\n path: string;\n schema: string | null;\n sourceKind: string | null;\n trajectoryId: string | null;\n scenarioId: string | null;\n task: string | null;\n input: unknown;\n output: unknown;\n model: string | null;\n systemPrompt?: unknown;\n callId?: string | null;\n}\n\nfunction safeTimestamp(value: string): string {\n return value.replace(/[:.]/g, \"-\");\n}\n\nfunction boolWithDefault(\n value: boolean | undefined,\n fallback: boolean,\n): boolean {\n return typeof value === \"boolean\" ? value : fallback;\n}\n\nfunction liveActionBenchmarkRequested(\n options: TrainingCollectionRunOptions,\n): boolean {\n return (\n boolWithDefault(options.includeActionBenchmark, true) &&\n options.actionBenchmark?.dryRun === false\n );\n}\n\nfunction liveEvalComparisonRequested(\n options: TrainingCollectionRunOptions,\n): boolean {\n return (\n boolWithDefault(options.includeEvalComparison, false) &&\n options.evalComparison?.dryRun === false\n );\n}\n\nfunction liveFeedGenerationRequested(\n options: TrainingCollectionRunOptions,\n): boolean {\n return (\n boolWithDefault(options.includeFeed, true) && options.feed?.dryRun === false\n );\n}\n\nfunction liveBenchmarkVsCerebrasRequested(\n options: TrainingCollectionRunOptions,\n): boolean {\n return (\n boolWithDefault(options.includeBenchmarkVsCerebras, false) &&\n options.benchmarkVsCerebras?.dryRun === false\n );\n}\n\nfunction fileCheck(\n id: string,\n label: string,\n path: string,\n): TrainingCollectionPreflightCheck {\n return existsSync(path)\n ? {\n id,\n label,\n status: \"ok\",\n detail: \"found\",\n path,\n }\n : {\n id,\n label,\n status: \"missing\",\n detail: \"required file was not found\",\n path,\n };\n}\n\nfunction endpointProbeUrl(baseUrl: string): string {\n const url = new URL(baseUrl);\n const normalizedPath = url.pathname.replace(/\\/+$/, \"\");\n url.pathname = `${normalizedPath || \"\"}/models`;\n return url.toString();\n}\n\nasync function probeOpenAICompatibleEndpoint(\n baseUrl: string,\n): Promise<TrainingCollectionPreflightCheck> {\n const url = endpointProbeUrl(baseUrl);\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), 2_000);\n try {\n const response = await fetch(url, {\n method: \"GET\",\n signal: controller.signal,\n });\n return {\n id: \"action_benchmark_endpoint\",\n label: \"Action benchmark endpoint\",\n status: response.ok ? \"ok\" : \"warning\",\n detail: response.ok\n ? `OpenAI-compatible endpoint responded at ${url}`\n : `endpoint responded with HTTP ${response.status} at ${url}`,\n };\n } catch (err) {\n return {\n id: \"action_benchmark_endpoint\",\n label: \"Action benchmark endpoint\",\n status: \"missing\",\n detail:\n err instanceof Error && err.name === \"AbortError\"\n ? `timed out probing OpenAI-compatible endpoint at ${url}`\n : `could not reach OpenAI-compatible endpoint at ${url}`,\n };\n } finally {\n clearTimeout(timeout);\n }\n}\n\nexport function buildTrainingCollectionPreflight(input: {\n options: TrainingCollectionRunOptions;\n workspaceRoot?: string;\n trainingRoot?: string;\n}): TrainingCollectionPreflightSummary {\n const { options, workspaceRoot, trainingRoot } = input;\n const checks: TrainingCollectionPreflightSummary[\"checks\"] = [];\n const actionLive = liveActionBenchmarkRequested(options);\n const evalLive = liveEvalComparisonRequested(options);\n const feedLive = liveFeedGenerationRequested(options);\n const cerebrasLive = liveBenchmarkVsCerebrasRequested(options);\n const liveRequired = actionLive || evalLive || feedLive || cerebrasLive;\n const resolvedWorkspaceRoot =\n workspaceRoot ?? discoverWorkspaceRoot() ?? process.cwd();\n const resolvedTrainingRoot =\n trainingRoot ?? join(resolvedWorkspaceRoot, \"packages\", \"training\");\n\n checks.push(\n fileCheck(\n \"app_core_action_benchmark\",\n \"App-core Eliza harness benchmark\",\n join(\n resolvedWorkspaceRoot,\n \"packages\",\n \"app-core\",\n \"test\",\n \"benchmarks\",\n \"action-selection.real.test.ts\",\n ),\n ),\n );\n checks.push(\n fileCheck(\n \"local_eval_compare_script\",\n \"Local base-vs-trained eval script\",\n join(resolvedTrainingRoot, \"scripts\", \"rl\", \"compare_local_models.py\"),\n ),\n );\n checks.push(\n fileCheck(\n \"benchmark_vs_cerebras_script\",\n \"Benchmark-vs-Cerebras script\",\n join(resolvedTrainingRoot, \"scripts\", \"benchmark_vs_cerebras.py\"),\n ),\n );\n\n if (actionLive) {\n const provider = options.actionBenchmark?.provider ?? \"local-llama-cpp\";\n const baseUrl =\n options.actionBenchmark?.baseUrl ?? \"http://localhost:11434/v1\";\n checks.push({\n id: \"action_benchmark_provider\",\n label: \"Action benchmark provider\",\n status: provider === \"local-llama-cpp\" ? \"warning\" : \"ok\",\n detail:\n provider === \"local-llama-cpp\"\n ? `local provider selected; verify OpenAI-compatible endpoint is serving at ${baseUrl}`\n : `provider ${provider} selected`,\n });\n } else {\n checks.push({\n id: \"action_benchmark_provider\",\n label: \"Action benchmark provider\",\n status: \"skipped\",\n detail: \"live action benchmark not requested\",\n });\n }\n\n if (feedLive) {\n checks.push({\n id: \"feed_database_url\",\n label: \"Feed database URL\",\n status: process.env.DATABASE_URL ? \"ok\" : \"missing\",\n detail: process.env.DATABASE_URL\n ? \"DATABASE_URL is set for live feed generation\"\n : \"DATABASE_URL is required for live packages/feed train parallel generation\",\n });\n } else {\n checks.push({\n id: \"feed_database_url\",\n label: \"Feed database URL\",\n status: \"skipped\",\n detail: \"live feed generation not requested\",\n });\n }\n\n if (cerebrasLive) {\n checks.push({\n id: \"cerebras_api_key\",\n label: \"Cerebras API key\",\n status: process.env.CEREBRAS_API_KEY ? \"ok\" : \"missing\",\n detail: process.env.CEREBRAS_API_KEY\n ? \"CEREBRAS_API_KEY is set\"\n : \"CEREBRAS_API_KEY is required for live Cerebras reference runs\",\n });\n } else {\n checks.push({\n id: \"cerebras_api_key\",\n label: \"Cerebras API key\",\n status: \"skipped\",\n detail: \"live Cerebras reference run not requested\",\n });\n }\n\n if (evalLive) {\n checks.push({\n id: \"eval_model_inputs\",\n label: \"Eval comparison model inputs\",\n status:\n options.evalComparison?.manifestPath ||\n (options.evalComparison?.model &&\n options.evalComparison?.trainedModelPath &&\n options.evalComparison?.backend)\n ? \"ok\"\n : \"missing\",\n detail:\n \"requires manifestPath or model, trainedModelPath, and backend for live eval comparison\",\n });\n } else {\n checks.push({\n id: \"eval_model_inputs\",\n label: \"Eval comparison model inputs\",\n status: \"skipped\",\n detail: \"live local eval comparison not requested\",\n });\n }\n\n return { liveRequired, checks };\n}\n\nexport async function buildTrainingCollectionPreflightWithProbes(input: {\n options: TrainingCollectionRunOptions;\n workspaceRoot?: string;\n trainingRoot?: string;\n}): Promise<TrainingCollectionPreflightSummary> {\n const preflight = buildTrainingCollectionPreflight(input);\n if (\n !input.options.preflightProbe ||\n !liveActionBenchmarkRequested(input.options)\n ) {\n return preflight;\n }\n const provider = input.options.actionBenchmark?.provider ?? \"local-llama-cpp\";\n if (provider !== \"local-llama-cpp\") {\n return preflight;\n }\n const baseUrl =\n input.options.actionBenchmark?.baseUrl ?? \"http://localhost:11434/v1\";\n try {\n preflight.checks.push(await probeOpenAICompatibleEndpoint(baseUrl));\n } catch (err) {\n preflight.checks.push({\n id: \"action_benchmark_endpoint\",\n label: \"Action benchmark endpoint\",\n status: \"warning\",\n detail: `endpoint probe failed before request: ${String(err)}`,\n });\n }\n return preflight;\n}\n\nfunction stepOutputDir(outputDir: string, step: string): string {\n return join(outputDir, step);\n}\n\nexport const ELIZA1_MODEL_REGISTRY_ENTRY_SCHEMA = \"eliza1_model_registry_entry\";\n\nexport interface Eliza1ModelRegistryResult {\n outputDir: string;\n generatedAt: string;\n manifests: Array<{\n tier: string;\n variant: \"base\" | \"trained\";\n modelId: string;\n manifestPath: string;\n outputPath: string;\n baseModel: string | null;\n }>;\n}\n\nasync function writeEliza1ModelRegistryArtifacts(input: {\n outputDir: string;\n generatedAt: string;\n}): Promise<Eliza1ModelRegistryResult> {\n await mkdir(input.outputDir, { recursive: true });\n const manifests: Eliza1ModelRegistryResult[\"manifests\"] = [];\n for (const tier of ELIZA_ONE_BENCHMARK_TIERS) {\n for (const variant of [\"base\", \"trained\"] as const) {\n const modelId = elizaOneBenchmarkModelId(tier, variant);\n if (!modelId) continue;\n const baseModel =\n variant === \"trained\"\n ? (elizaOneBenchmarkModelId(tier, \"base\") ?? null)\n : null;\n const outputPath = `hf://elizaos/${modelId}`;\n const repoId = `elizaos/${modelId}`;\n const manifestPath = join(\n input.outputDir,\n `${tier}-${variant}-model-manifest.json`,\n );\n const manifest = {\n schema: ELIZA1_MODEL_REGISTRY_ENTRY_SCHEMA,\n schemaVersion: 1,\n generatedAt: input.generatedAt,\n source: { kind: \"eliza1_model_registry\" },\n modelId,\n model_name: modelId,\n output_path: outputPath,\n baseModel,\n tier,\n variant,\n family: \"eliza-1\",\n repoId,\n registry: {\n provider: \"huggingface\",\n repoId,\n },\n };\n await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\\n`);\n manifests.push({\n tier,\n variant,\n modelId,\n manifestPath,\n outputPath,\n baseModel,\n });\n }\n }\n return {\n outputDir: input.outputDir,\n generatedAt: input.generatedAt,\n manifests,\n };\n}\n\nfunction schemaOfArtifact(\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n): string | undefined {\n const schema = artifact.summary.schema;\n return typeof schema === \"string\" ? schema : undefined;\n}\n\nfunction sourceKindOfArtifact(\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n): string | undefined {\n const source = artifact.summary.source;\n if (typeof source === \"string\") return source;\n if (!source || typeof source !== \"object\" || Array.isArray(source)) {\n return undefined;\n }\n const kind = (source as Record<string, unknown>).kind;\n return typeof kind === \"string\" ? kind : undefined;\n}\n\nfunction artifactEvidenceCategory(\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n):\n | \"huggingface\"\n | \"feed\"\n | \"natural\"\n | \"scenario\"\n | \"test\"\n | \"training_jsonl\"\n | \"eval\"\n | \"benchmark\"\n | \"model\"\n | \"other\" {\n const schema = schemaOfArtifact(artifact);\n const sourceKind = sourceKindOfArtifact(artifact);\n if (schema === \"eliza_huggingface_dataset_ingest\") return \"huggingface\";\n if (\n schema === \"feed_training_trajectory_export\" ||\n schema === \"feed_parallel_generation\"\n ) {\n return \"feed\";\n }\n if (\n artifact.kind === \"trajectory_bundle\" &&\n sourceKind === \"training_collection_natural_trajectories\"\n ) {\n return \"natural\";\n }\n if (\n artifact.kind === \"scenario_run\" ||\n schema === \"eliza_scenario_native_export\"\n ) {\n return \"scenario\";\n }\n if (sourceKind === \"app_core_test_trajectory\") return \"test\";\n if (schema === \"eliza_training_jsonl_dataset\") return \"training_jsonl\";\n if (artifact.kind === \"benchmark_matrix\") return \"benchmark\";\n if (artifact.kind === \"model\") return \"model\";\n if (artifact.kind === \"eval\") return \"eval\";\n return \"other\";\n}\n\nfunction countArtifacts(\n analysis: TrainingAnalysisIndex,\n predicate: (\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n ) => boolean,\n): number {\n return analysis.manifest.artifacts.filter(predicate).length;\n}\n\nfunction readinessStatus(\n readiness: TrainingReadinessReport,\n id: string,\n): TrainingReadinessReport[\"status\"] {\n return readiness.checks.find((check) => check.id === id)?.status ?? \"missing\";\n}\n\nfunction summarizeStepCounts(\n steps: readonly TrainingCollectionStep[],\n): Record<TrainingCollectionStep[\"status\"], number> {\n return {\n skipped: steps.filter((step) => step.status === \"skipped\").length,\n succeeded: steps.filter((step) => step.status === \"succeeded\").length,\n failed: steps.filter((step) => step.status === \"failed\").length,\n };\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | null {\n return value && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction stringOrNull(value: unknown): string | null {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : null;\n}\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction booleanFlagFromRecords(\n key: string,\n ...records: Array<Record<string, unknown> | null | undefined>\n): boolean {\n return records.some((record) => record?.[key] === true);\n}\n\nfunction benchmarkRecordIsDryRun(record: Record<string, unknown>): boolean {\n const source = recordValue(record.source);\n const metrics = recordValue(record.metrics);\n const raw = recordValue(record.raw);\n const rawSource = recordValue(raw?.source);\n return booleanFlagFromRecords(\n \"dryRun\",\n record,\n source,\n metrics,\n raw,\n rawSource,\n );\n}\n\nfunction benchmarkRecordUsesMocks(record: Record<string, unknown>): boolean {\n const source = recordValue(record.source);\n const metrics = recordValue(record.metrics);\n const raw = recordValue(record.raw);\n const rawSource = recordValue(raw?.source);\n return booleanFlagFromRecords(\n \"useMocks\",\n record,\n source,\n metrics,\n raw,\n rawSource,\n );\n}\n\nfunction normalizeBenchmarkTier(value: unknown): string | null {\n const tier = stringOrNull(value);\n if (!tier) return null;\n return tier;\n}\n\nfunction benchmarkComparisonHasModelBackedRows(\n comparison: Record<string, unknown>,\n rows: readonly unknown[],\n): boolean {\n const tier = normalizeBenchmarkTier(comparison.tier);\n const benchmark = stringOrNull(comparison.benchmark);\n if (!tier || !benchmark) return false;\n const hasVariant = (variant: \"base\" | \"trained\") =>\n rows\n .map(recordValue)\n .filter((row): row is Record<string, unknown> => Boolean(row))\n .some(\n (row) =>\n row.variant === variant &&\n normalizeBenchmarkTier(row.tier) === tier &&\n stringOrNull(row.benchmark) === benchmark &&\n numberOrNull(row.score) !== null &&\n !benchmarkRecordIsDryRun(row) &&\n !benchmarkRecordUsesMocks(row),\n );\n return hasVariant(\"base\") && hasVariant(\"trained\");\n}\n\nfunction benchmarkComparisonUsesMocks(\n comparison: Record<string, unknown>,\n rows: readonly unknown[],\n): boolean {\n const tier = normalizeBenchmarkTier(comparison.tier);\n const benchmark = stringOrNull(comparison.benchmark);\n if (!tier || !benchmark) return false;\n return rows\n .map(recordValue)\n .filter((row): row is Record<string, unknown> => Boolean(row))\n .some(\n (row) =>\n (row.variant === \"base\" || row.variant === \"trained\") &&\n normalizeBenchmarkTier(row.tier) === tier &&\n stringOrNull(row.benchmark) === benchmark &&\n benchmarkRecordUsesMocks(row),\n );\n}\n\nfunction sanitizeRecipeValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map(sanitizeRecipeValue);\n if (!value || typeof value !== \"object\") return value;\n const out: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n if (/token|secret|password|api[_-]?key/i.test(key)) continue;\n if (key === \"trajectories\") {\n out.trajectoryCount = Array.isArray(item) ? item.length : 0;\n continue;\n }\n out[key] = sanitizeRecipeValue(item);\n }\n return out;\n}\n\nfunction sanitizeRecipeRecord(value: unknown): Record<string, unknown> {\n const sanitized = sanitizeRecipeValue(value);\n return sanitized && typeof sanitized === \"object\" && !Array.isArray(sanitized)\n ? (sanitized as Record<string, unknown>)\n : {};\n}\n\nfunction isPathLikeKey(key: string): boolean {\n return (\n /(?:path|dir)$/i.test(key) ||\n key === \"outputDir\" ||\n key === \"matrixOutputDir\" ||\n key === \"trajectoryDir\"\n );\n}\n\nfunction collectCommand(value: unknown): string[] | null {\n if (!value || typeof value !== \"object\") return null;\n if (Array.isArray(value)) {\n for (const item of value) {\n const command = collectCommand(item);\n if (command) return command;\n }\n return null;\n }\n const record = value as Record<string, unknown>;\n if (\n Array.isArray(record.command) &&\n record.command.every((part) => typeof part === \"string\")\n ) {\n return record.command as string[];\n }\n for (const item of Object.values(record)) {\n const command = collectCommand(item);\n if (command) return command;\n }\n return null;\n}\n\nfunction collectStepPaths(\n value: unknown,\n prefix = \"\",\n depth = 0,\n): Array<{ label: string; path: string }> {\n if (!value || typeof value !== \"object\" || depth > 4) return [];\n if (Array.isArray(value)) {\n return value.flatMap((item, index) =>\n collectStepPaths(item, `${prefix}[${index}]`, depth + 1),\n );\n }\n const out: Array<{ label: string; path: string }> = [];\n for (const [key, item] of Object.entries(value as Record<string, unknown>)) {\n const label = prefix ? `${prefix}.${key}` : key;\n if (typeof item === \"string\" && item.trim() && isPathLikeKey(key)) {\n out.push({ label, path: item.trim() });\n continue;\n }\n out.push(...collectStepPaths(item, label, depth + 1));\n }\n return out;\n}\n\nfunction outputExcerpt(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (!trimmed) return null;\n return trimmed.length > 2000 ? `${trimmed.slice(0, 2000)}...` : trimmed;\n}\n\nfunction collectOutputText(\n value: unknown,\n key: \"stdout\" | \"stderr\",\n depth = 0,\n): string | null {\n if (!value || typeof value !== \"object\" || depth > 5) return null;\n const excerpts: string[] = [];\n const visit = (item: unknown, itemDepth: number) => {\n if (!item || typeof item !== \"object\" || itemDepth > 5) return;\n if (Array.isArray(item)) {\n for (const child of item) visit(child, itemDepth + 1);\n return;\n }\n const record = item as Record<string, unknown>;\n const excerpt = outputExcerpt(record[key]);\n if (excerpt && !excerpts.includes(excerpt)) excerpts.push(excerpt);\n if (excerpts.length >= 4) return;\n for (const child of Object.values(record)) {\n visit(child, itemDepth + 1);\n if (excerpts.length >= 4) return;\n }\n };\n visit(value, depth);\n return excerpts.length > 0 ? excerpts.join(\"\\n---\\n\") : null;\n}\n\nfunction summarizeStepArtifacts(\n steps: readonly TrainingCollectionStep[],\n): TrainingCollectionStepEvidence[] {\n return steps.map((step) => {\n const result = resultRecord(step);\n const uniquePaths = Array.from(\n new Map(\n collectStepPaths(result).map((entry) => [\n `${entry.label}:${entry.path}`,\n entry,\n ]),\n ).values(),\n ).slice(0, 32);\n return {\n stepId: step.id,\n status: step.status,\n outputDir: step.outputDir,\n command: collectCommand(result),\n exitCode: numberOrNull(result.exitCode),\n stdout:\n outputExcerpt(result.stdout) ?? collectOutputText(result, \"stdout\"),\n stderr:\n outputExcerpt(result.stderr) ?? collectOutputText(result, \"stderr\"),\n paths: uniquePaths,\n };\n });\n}\n\nfunction buildCollectionRecipe(\n options: TrainingCollectionRunOptions,\n): TrainingCollectionRecipe {\n const defaultPair = shouldUseDefaultActionBenchmarkPair(options)\n ? defaultActionBenchmarkPair(options)\n : undefined;\n const actionBenchmarkPair = options.actionBenchmarkPair ?? defaultPair;\n return {\n include: {\n huggingFace: boolWithDefault(options.includeHuggingFace, true),\n feed: boolWithDefault(options.includeFeed, true),\n naturalTrajectories: boolWithDefault(\n options.includeNaturalTrajectories,\n false,\n ),\n testTrajectories: boolWithDefault(options.includeTestTrajectories, false),\n scenarios: boolWithDefault(options.includeScenarios, true),\n evalComparison: boolWithDefault(options.includeEvalComparison, false),\n actionBenchmark: boolWithDefault(options.includeActionBenchmark, true),\n benchmarkVsCerebras: boolWithDefault(\n options.includeBenchmarkVsCerebras,\n false,\n ),\n eliza1ModelRegistry: boolWithDefault(\n options.includeEliza1ModelRegistry,\n true,\n ),\n eliza1BundleStage: boolWithDefault(\n options.includeEliza1BundleStage,\n false,\n ),\n benchmarkMatrix: boolWithDefault(options.includeBenchmarkMatrix, true),\n },\n sources: {\n huggingFace: sanitizeRecipeRecord(options.huggingFace),\n feed: sanitizeRecipeRecord(options.feed),\n naturalTrajectories: sanitizeRecipeRecord(options.naturalTrajectories),\n testTrajectories: sanitizeRecipeRecord(options.testTrajectories),\n scenarios: sanitizeRecipeRecord(options.scenarios),\n },\n evals: {\n evalComparison: sanitizeRecipeRecord(options.evalComparison),\n actionBenchmark: sanitizeRecipeRecord(options.actionBenchmark),\n actionBenchmarkPair: actionBenchmarkPair\n ? sanitizeRecipeRecord(actionBenchmarkPair)\n : null,\n actionBenchmarkPairs: actionBenchmarkPairsOption(\n options.actionBenchmarkPairs,\n ).map(sanitizeRecipeRecord),\n benchmarkVsCerebras: sanitizeRecipeRecord(options.benchmarkVsCerebras),\n benchmarkMatrix: sanitizeRecipeRecord(options.benchmarkMatrix),\n },\n training: {\n eliza1ModelRegistry: {},\n eliza1BundleStage: sanitizeRecipeRecord(options.eliza1BundleStage),\n },\n };\n}\n\nfunction summarizeBenchmarkEvidence(input: {\n analysis: TrainingAnalysisIndex;\n steps: readonly TrainingCollectionStep[];\n}): TrainingCollectionEvidenceSummary[\"benchmarks\"] {\n const actionBenchmarkResult = recordValue(\n input.steps.find((step) => step.id === \"action_benchmark\")?.result,\n );\n const actionBenchmarkPairs = Array.isArray(actionBenchmarkResult?.pairs)\n ? actionBenchmarkResult.pairs.length\n : 0;\n const actionBenchmarkMatrixSources = Array.isArray(\n actionBenchmarkResult?.matrixSources,\n )\n ? actionBenchmarkResult.matrixSources.length\n : 0;\n const matrixArtifacts = input.analysis.manifest.artifacts.filter(\n (artifact) => artifact.kind === \"benchmark_matrix\",\n );\n const rows = matrixArtifacts.flatMap((artifact) =>\n Array.isArray(recordValue(artifact.payload)?.rows)\n ? (recordValue(artifact.payload)?.rows as unknown[])\n : [],\n );\n const comparisons = matrixArtifacts.flatMap((artifact) =>\n Array.isArray(recordValue(artifact.payload)?.comparisons)\n ? (recordValue(artifact.payload)?.comparisons as unknown[])\n : [],\n );\n const tiers = Array.from(\n new Set(\n comparisons\n .map((comparison) => stringOrNull(recordValue(comparison)?.tier))\n .filter((tier): tier is string => tier !== null),\n ),\n ).sort(canonicalElizaOneTierSort);\n const comparisonInventory = comparisons\n .map(recordValue)\n .filter((comparison): comparison is Record<string, unknown> =>\n Boolean(comparison),\n )\n .map((comparison) => {\n const modelBacked = benchmarkComparisonHasModelBackedRows(\n comparison,\n rows,\n );\n return {\n tier: stringOrNull(comparison.tier),\n benchmark: stringOrNull(comparison.benchmark),\n baseModelId: stringOrNull(comparison.baseModelId),\n trainedModelId: stringOrNull(comparison.trainedModelId),\n referenceModelId: stringOrNull(comparison.referenceModelId),\n baseScore: numberOrNull(comparison.baseScore),\n trainedScore: numberOrNull(comparison.trainedScore),\n improvementPercent: numberOrNull(comparison.improvementPercent),\n referenceScore: numberOrNull(comparison.referenceScore),\n trainedVsReferencePercent: numberOrNull(\n comparison.trainedVsReferencePercent,\n ),\n dryRun: comparison.dryRun === true,\n useMocks: benchmarkComparisonUsesMocks(comparison, rows),\n modelBacked,\n };\n });\n const improvementComparisons = comparisonInventory\n .filter(\n (comparison) =>\n comparison.dryRun !== true &&\n comparison.modelBacked &&\n (comparison.baseScore !== null ||\n comparison.trainedScore !== null ||\n comparison.improvementPercent !== null),\n )\n .map((comparison) => ({\n tier: comparison.tier,\n benchmark: comparison.benchmark,\n baseScore: comparison.baseScore,\n trainedScore: comparison.trainedScore,\n improvementPercent: comparison.improvementPercent,\n referenceScore: comparison.referenceScore,\n trainedVsReferencePercent: comparison.trainedVsReferencePercent,\n modelBacked: true,\n }));\n const establishedTiers = Array.from(\n new Set(\n improvementComparisons\n .map((comparison) => normalizeBenchmarkTier(comparison.tier))\n .filter(\n (tier): tier is string =>\n tier !== null &&\n (ELIZA_ONE_BENCHMARK_TIERS as readonly string[]).includes(tier),\n ),\n ),\n ).sort(canonicalElizaOneTierSort);\n const remainingTiers = ELIZA_ONE_BENCHMARK_TIERS.filter(\n (tier) => !establishedTiers.includes(tier),\n );\n return {\n actionBenchmarkPairs,\n actionBenchmarkMatrixSources,\n benchmarkRows: rows.length,\n benchmarkComparisons: comparisons.length,\n tiers,\n comparisonInventory,\n improvementComparisons,\n baselineProgress: {\n tierOrder: [...ELIZA_ONE_BENCHMARK_TIERS],\n establishedTiers,\n remainingTiers,\n nextTier: remainingTiers[0] ?? null,\n smallestTierEstablished: establishedTiers.includes(\"2b\"),\n allTiersEstablished: remainingTiers.length === 0,\n },\n caseSamples: rows\n .map(recordValue)\n .filter((row): row is Record<string, unknown> => Boolean(row))\n .flatMap((row) => {\n const raw = recordValue(row.raw);\n const caseSamples = Array.isArray(raw?.caseSamples)\n ? raw.caseSamples\n : [];\n return caseSamples\n .map(recordValue)\n .filter((sample): sample is Record<string, unknown> =>\n Boolean(sample),\n )\n .map((sample) => ({\n tier: stringOrNull(row.tier),\n variant: stringOrNull(row.variant),\n modelId: stringOrNull(row.modelId),\n benchmark: stringOrNull(row.benchmark),\n score: numberOrNull(row.score),\n caseId: stringOrNull(sample.caseId),\n prompt: stringOrNull(sample.prompt),\n expectedAction: stringOrNull(sample.expectedAction),\n actualAction: stringOrNull(sample.actualAction),\n pass: sample.pass === true,\n response: stringOrNull(sample.response),\n latencyMs: numberOrNull(sample.latencyMs),\n trajectoryPath: stringOrNull(sample.trajectoryPath),\n useMocks: benchmarkRecordUsesMocks(row),\n }));\n })\n .slice(0, 24),\n };\n}\n\nfunction summarizeModelInventory(\n analysis: TrainingAnalysisIndex,\n): TrainingCollectionEvidenceSummary[\"training\"][\"modelInventory\"] {\n return analysis.manifest.artifacts\n .filter((artifact) => artifact.kind === \"model\")\n .filter((artifact) => {\n const summary = artifact.summary;\n return (\n stringOrNull(summary.model) !== null ||\n stringOrNull(summary.outputPath) !== null\n );\n })\n .map((artifact) => {\n const summary = artifact.summary;\n return {\n title: artifact.title,\n path: artifact.path,\n schema: schemaOfArtifact(artifact) ?? null,\n model: stringOrNull(summary.model),\n tier: stringOrNull(summary.tier),\n variant: stringOrNull(summary.variant),\n outputPath: stringOrNull(summary.outputPath),\n baseModel: stringOrNull(summary.baseModel),\n repoId: stringOrNull(summary.repoId),\n baseEvalScore: numberOrNull(summary.baseEvalScore),\n trainedEvalScore: numberOrNull(summary.trainedEvalScore),\n evalImprovementPercent: numberOrNull(summary.evalImprovementPercent),\n };\n })\n .sort((left, right) => {\n const byTier = canonicalElizaOneTierSort(\n left.tier ?? \"\",\n right.tier ?? \"\",\n );\n if (byTier !== 0) return byTier;\n const byVariant =\n (left.variant === \"trained\" ? 1 : 0) -\n (right.variant === \"trained\" ? 1 : 0);\n if (byVariant !== 0) return byVariant;\n return left.title.localeCompare(right.title);\n });\n}\n\nfunction summarizeEvalComparisonInventory(\n analysis: TrainingAnalysisIndex,\n): TrainingCollectionEvidenceSummary[\"evals\"][\"comparisonInventory\"] {\n return analysis.manifest.artifacts\n .filter(\n (artifact) =>\n artifact.kind === \"eval\" &&\n schemaOfArtifact(artifact) === EVAL_COMPARISON_ARTIFACT_SCHEMA,\n )\n .map((artifact) => {\n const summary = artifact.summary;\n return {\n title: artifact.title,\n path: artifact.path,\n baseModel: stringOrNull(summary.baseModel),\n trainedModel: stringOrNull(summary.trainedModel),\n backend: stringOrNull(summary.backend),\n baseScore: numberOrNull(summary.baseScore),\n trainedScore: numberOrNull(summary.trainedScore),\n improvementAbsolute: numberOrNull(summary.improvementAbsolute),\n improvementPercent: numberOrNull(summary.improvementPercent),\n baseLatencyMs: numberOrNull(summary.baseLatencyMs),\n trainedLatencyMs: numberOrNull(summary.trainedLatencyMs),\n latencyDeltaMs: numberOrNull(summary.latencyDeltaMs),\n promptCount: numberOrNull(summary.promptCount),\n distinctResponseCount: numberOrNull(summary.distinctResponseCount),\n reportPath: stringOrNull(summary.reportPath),\n };\n })\n .sort((left, right) => left.title.localeCompare(right.title));\n}\n\nfunction summarizeFeedEvidence(\n analysis: TrainingAnalysisIndex,\n): TrainingCollectionEvidenceSummary[\"feed\"] {\n const feedArtifacts = analysis.manifest.artifacts.filter(\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n (schemaOfArtifact(artifact) === \"feed_training_trajectory_export\" ||\n schemaOfArtifact(artifact) === \"feed_parallel_generation\"),\n );\n const runs: TrainingCollectionEvidenceSummary[\"feed\"][\"runs\"] = [];\n const archetypeStats: TrainingCollectionEvidenceSummary[\"feed\"][\"archetypeStats\"] =\n [];\n const trajectorySamples: TrainingCollectionEvidenceSummary[\"feed\"][\"trajectorySamples\"] =\n [];\n\n for (const artifact of feedArtifacts) {\n const summary = artifact.summary;\n const source = recordValue(summary.source) ?? {};\n runs.push({\n title: artifact.title,\n path: artifact.path,\n schema: schemaOfArtifact(artifact) ?? null,\n sourceKind: stringOrNull(source.kind),\n archetype: stringOrNull(source.archetype),\n archetypes: source.archetypes ?? null,\n trajectories: numberOrNull(summary.trajectories),\n totalTicks: numberOrNull(summary.totalTicks),\n durationMs: numberOrNull(summary.durationMs),\n errors: numberOrNull(summary.errors),\n exportPath: stringOrNull(summary.exportPath),\n outputDir: stringOrNull(summary.outputDir),\n });\n\n const stats = recordValue(summary.archetypeStats);\n if (stats) {\n for (const [archetype, value] of Object.entries(stats)) {\n const row = recordValue(value) ?? {};\n archetypeStats.push({\n title: artifact.title,\n path: artifact.path,\n archetype,\n agents: numberOrNull(row.agents),\n trajectories: numberOrNull(row.trajectories),\n avgTicksPerAgent: numberOrNull(row.avgTicksPerAgent),\n });\n }\n }\n\n const samples = Array.isArray(summary.feedSamplePreviews)\n ? summary.feedSamplePreviews\n : [];\n for (const sample of samples) {\n const row = recordValue(sample);\n if (!row) continue;\n trajectorySamples.push({\n title: artifact.title,\n path: artifact.path,\n trajectoryId: stringOrNull(row.trajectoryId),\n agentId: stringOrNull(row.agentId),\n archetype: stringOrNull(row.archetype),\n scenarioId: stringOrNull(row.scenarioId),\n score: numberOrNull(row.score),\n finalPnl: numberOrNull(row.finalPnl),\n steps: numberOrNull(row.steps),\n firstStep: row.firstStep ?? null,\n firstInput: row.firstInput ?? null,\n firstOutput: row.firstOutput ?? null,\n reasoning: row.reasoning ?? null,\n });\n }\n }\n\n return { runs, archetypeStats, trajectorySamples };\n}\n\nfunction collectionSourceSample(\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n row: Record<string, unknown>,\n): TrainingCollectionSourceSample {\n const source = recordValue(artifact.summary.source) ?? {};\n return {\n title: artifact.title,\n path: artifact.path,\n schema: schemaOfArtifact(artifact) ?? null,\n sourceKind:\n stringOrNull(source.kind) ?? stringOrNull(artifact.summary.source),\n trajectoryId: stringOrNull(row.trajectoryId),\n scenarioId: stringOrNull(row.scenarioId),\n task:\n stringOrNull(row.task) ??\n stringOrNull(row.taskType) ??\n stringOrNull(row.purpose),\n input: row.input ?? row.llmInput ?? row.firstInput ?? row.firstStep ?? null,\n output:\n row.output ?? row.llmOutput ?? row.firstOutput ?? row.reasoning ?? null,\n model: stringOrNull(row.model) ?? stringOrNull(row.provider),\n systemPrompt: row.systemPrompt ?? null,\n callId: stringOrNull(row.callId),\n };\n}\n\nfunction appendSamplesFromSummary(\n target: TrainingCollectionSourceSample[],\n artifact: TrainingAnalysisIndex[\"manifest\"][\"artifacts\"][number],\n key: string,\n): void {\n const samples = Array.isArray(artifact.summary[key])\n ? artifact.summary[key]\n : [];\n for (const sample of samples) {\n const row = recordValue(sample);\n if (!row) continue;\n target.push(collectionSourceSample(artifact, row));\n }\n}\n\nfunction summarizeSourceSamples(\n analysis: TrainingAnalysisIndex,\n): TrainingCollectionEvidenceSummary[\"sourceSamples\"] {\n const samples: TrainingCollectionEvidenceSummary[\"sourceSamples\"] = {\n huggingFace: [],\n feed: [],\n natural: [],\n scenarios: [],\n tests: [],\n trainingJsonl: [],\n };\n\n for (const artifact of analysis.manifest.artifacts) {\n const schema = schemaOfArtifact(artifact);\n if (schema === \"eliza_huggingface_dataset_ingest\") {\n appendSamplesFromSummary(\n samples.huggingFace,\n artifact,\n \"hfSamplePreviews\",\n );\n } else if (\n artifact.kind === \"trajectory_dataset\" &&\n (schema === \"feed_training_trajectory_export\" ||\n schema === \"feed_parallel_generation\")\n ) {\n appendSamplesFromSummary(samples.feed, artifact, \"feedSamplePreviews\");\n } else if (\n artifact.kind === \"trajectory_bundle\" &&\n sourceKindOfArtifact(artifact) ===\n \"training_collection_natural_trajectories\"\n ) {\n const callPreviews = Array.isArray(artifact.summary.llmCallPreviews)\n ? artifact.summary.llmCallPreviews\n : [];\n appendSamplesFromSummary(\n samples.natural,\n artifact,\n callPreviews.length > 0 ? \"llmCallPreviews\" : \"samplePreviews\",\n );\n } else if (artifact.kind === \"scenario_run\") {\n appendSamplesFromSummary(samples.scenarios, artifact, \"turnPreviews\");\n } else if (schema === \"eliza_scenario_native_export\") {\n appendSamplesFromSummary(\n samples.scenarios,\n artifact,\n \"scenarioNativeSamplePreviews\",\n );\n } else if (\n schema === \"eliza_test_trajectory_record\" &&\n sourceKindOfArtifact(artifact) === \"app_core_test_trajectory\"\n ) {\n appendSamplesFromSummary(samples.tests, artifact, \"testSamplePreviews\");\n } else if (schema === \"eliza_training_jsonl_dataset\") {\n appendSamplesFromSummary(\n samples.trainingJsonl,\n artifact,\n \"samplePreviews\",\n );\n }\n }\n\n return {\n huggingFace: samples.huggingFace.slice(0, 12),\n feed: samples.feed.slice(0, 12),\n natural: samples.natural.slice(0, 12),\n scenarios: samples.scenarios.slice(0, 12),\n tests: samples.tests.slice(0, 12),\n trainingJsonl: samples.trainingJsonl.slice(0, 12),\n };\n}\n\nfunction buildCollectionEvidenceSummary(input: {\n analysis: TrainingAnalysisIndex;\n readiness: TrainingReadinessReport;\n steps: readonly TrainingCollectionStep[];\n preflight: TrainingCollectionPreflightSummary;\n}): TrainingCollectionEvidenceSummary {\n const { analysis, readiness, steps, preflight } = input;\n return {\n preflight,\n viewerHtmlPath: analysis.indexHtmlPath,\n analysisManifestPath: analysis.manifestPath,\n readinessReportPath: readiness.reportPath,\n artifactCounts: analysis.manifest.counts,\n coverage: {\n dataSources: analysis.manifest.coverage.dataSources,\n readableSamples: analysis.manifest.coverage.readableSamples,\n evals: analysis.manifest.coverage.evals,\n benchmarks: analysis.manifest.coverage.benchmarks,\n models: {\n artifacts: analysis.manifest.coverage.models.artifacts,\n stagedBundles: analysis.manifest.coverage.models.stagedBundles,\n inventoryCount: analysis.manifest.coverage.models.inventory.length,\n },\n },\n stepCounts: summarizeStepCounts(steps),\n stepArtifacts: summarizeStepArtifacts(steps),\n dataSources: {\n huggingFaceDatasets: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n schemaOfArtifact(artifact) === \"eliza_huggingface_dataset_ingest\",\n ),\n feedDatasets: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n (schemaOfArtifact(artifact) === \"feed_training_trajectory_export\" ||\n schemaOfArtifact(artifact) === \"feed_parallel_generation\"),\n ),\n naturalTrajectoryBundles: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_bundle\" &&\n sourceKindOfArtifact(artifact) ===\n \"training_collection_natural_trajectories\",\n ),\n scenarioRuns: countArtifacts(\n analysis,\n (artifact) => artifact.kind === \"scenario_run\",\n ),\n scenarioNativeDatasets: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n schemaOfArtifact(artifact) === \"eliza_scenario_native_export\",\n ),\n testTrajectories: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n sourceKindOfArtifact(artifact) === \"app_core_test_trajectory\",\n ),\n trainingJsonlDatasets: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n schemaOfArtifact(artifact) === \"eliza_training_jsonl_dataset\",\n ),\n },\n feed: summarizeFeedEvidence(analysis),\n sourceSamples: summarizeSourceSamples(analysis),\n training: {\n trainingRuns: analysis.manifest.counts.trainingRuns,\n models: analysis.manifest.counts.models,\n modelInventory: summarizeModelInventory(analysis),\n },\n evals: {\n evalArtifacts: analysis.manifest.counts.evals,\n actionBenchmarks: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"eval\" &&\n schemaOfArtifact(artifact) ===\n \"eliza_action_selection_benchmark_report\",\n ),\n evalComparisons: countArtifacts(\n analysis,\n (artifact) =>\n artifact.kind === \"eval\" &&\n schemaOfArtifact(artifact) === EVAL_COMPARISON_ARTIFACT_SCHEMA,\n ),\n benchmarkMatrices: analysis.manifest.counts.benchmarkMatrices,\n comparisonInventory: summarizeEvalComparisonInventory(analysis),\n },\n artifactLinks: analysis.manifest.artifacts.map((artifact) => ({\n category: artifactEvidenceCategory(artifact),\n kind: artifact.kind,\n title: artifact.title,\n path: artifact.path,\n schema: schemaOfArtifact(artifact) ?? null,\n })),\n benchmarks: summarizeBenchmarkEvidence({ analysis, steps }),\n benchmarkReadiness: {\n smallestTier: readinessStatus(readiness, \"smallest_model_benchmark\"),\n allEliza1Tiers: readinessStatus(readiness, \"all_eliza1_tiers_benchmark\"),\n allEliza1TierImprovements: readinessStatus(\n readiness,\n \"all_eliza1_tier_improvements\",\n ),\n cerebrasReference: readinessStatus(readiness, \"cerebras_reference\"),\n baseTrainedImprovement: readinessStatus(\n readiness,\n \"base_trained_improvement\",\n ),\n },\n readinessGaps: readiness.checks\n .filter((check) => check.status !== \"ready\")\n .map((check) => ({\n id: check.id,\n label: check.label,\n status: check.status,\n note: check.note,\n recommendedCapability: check.recommendedAction?.capability ?? null,\n recommendedParams: check.recommendedAction?.params ?? null,\n })),\n };\n}\n\nfunction markdownInline(value: unknown): string {\n if (value === null || value === undefined || value === \"\") return \"n/a\";\n if (typeof value === \"string\") {\n return value.replace(/\\r?\\n/g, \" \").replace(/\\|/g, \"\\\\|\");\n }\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return JSON.stringify(value).replace(/\\r?\\n/g, \" \").replace(/\\|/g, \"\\\\|\");\n}\n\nfunction markdownPathLink(value: unknown): string {\n const path = typeof value === \"string\" ? value.trim() : \"\";\n if (!path) return \"n/a\";\n const label = basename(path) || path;\n const href = /^[a-z][a-z0-9+.-]*:\\/\\//i.test(path) ? path : fileHref(path);\n return `[${label.replace(/\\]/g, \"\\\\]\")}](${href.replace(/\\)/g, \"%29\")})`;\n}\n\nfunction markdownTable(\n headers: readonly string[],\n rows: readonly (readonly unknown[])[],\n): string {\n if (rows.length === 0) return \"_None._\\n\";\n return [\n `| ${headers.map(markdownInline).join(\" | \")} |`,\n `| ${headers.map(() => \"---\").join(\" | \")} |`,\n ...rows.map((row) => `| ${row.map(markdownInline).join(\" | \")} |`),\n \"\",\n ].join(\"\\n\");\n}\n\nfunction escapeHtml(value: unknown): string {\n return String(value ?? \"\")\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n}\n\nfunction fileHref(path: string): string {\n return encodeURI(`file://${path}`);\n}\n\nfunction compactCollectionIndexValue(value: unknown): string {\n const raw =\n typeof value === \"string\"\n ? value\n : value === null || value === undefined\n ? \"\"\n : JSON.stringify(value);\n return raw.length > 180 ? `${raw.slice(0, 177)}...` : raw;\n}\n\nfunction isTrainingCollectionManifest(\n value: unknown,\n): value is TrainingCollectionRunManifest {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return (\n record.schema === TRAINING_COLLECTION_RUN_SCHEMA &&\n record.schemaVersion === TRAINING_COLLECTION_RUN_VERSION &&\n typeof record.generatedAt === \"string\" &&\n typeof record.outputDir === \"string\" &&\n typeof record.manifestPath === \"string\" &&\n typeof record.readmePath === \"string\" &&\n record.analysis !== null &&\n typeof record.analysis === \"object\" &&\n !Array.isArray(record.analysis) &&\n typeof (record.analysis as Record<string, unknown>).indexHtmlPath ===\n \"string\" &&\n record.readiness !== null &&\n typeof record.readiness === \"object\" &&\n !Array.isArray(record.readiness) &&\n record.evidence !== null &&\n typeof record.evidence === \"object\" &&\n !Array.isArray(record.evidence)\n );\n}\n\nfunction emptyCollectionCoverage(): TrainingCollectionEvidenceSummary[\"coverage\"] {\n return {\n dataSources: {\n huggingFace: 0,\n feed: 0,\n natural: 0,\n scenarios: 0,\n tests: 0,\n trainingJsonl: 0,\n },\n readableSamples: {\n huggingFace: 0,\n feed: 0,\n natural: 0,\n scenarios: 0,\n tests: 0,\n trainingJsonl: 0,\n total: 0,\n },\n evals: {\n artifacts: 0,\n comparisons: 0,\n scoredComparisons: 0,\n },\n benchmarks: {\n matrices: 0,\n comparisons: 0,\n scoredComparisons: 0,\n caseSamples: 0,\n tiers: [],\n allEliza1TiersCovered: false,\n tierCoverage: [],\n },\n models: {\n artifacts: 0,\n stagedBundles: 0,\n inventoryCount: 0,\n },\n };\n}\n\nfunction collectionCoverage(\n evidence: TrainingCollectionRunManifest[\"evidence\"],\n): TrainingCollectionEvidenceSummary[\"coverage\"] {\n return evidence.coverage ?? emptyCollectionCoverage();\n}\n\nfunction collectionBaselineProgress(\n benchmarks: Partial<TrainingCollectionEvidenceSummary[\"benchmarks\"]>,\n): TrainingCollectionEvidenceSummary[\"benchmarks\"][\"baselineProgress\"] {\n const existing =\n benchmarks.baselineProgress &&\n typeof benchmarks.baselineProgress === \"object\"\n ? benchmarks.baselineProgress\n : null;\n if (\n existing &&\n Array.isArray(existing.tierOrder) &&\n Array.isArray(existing.establishedTiers) &&\n Array.isArray(existing.remainingTiers)\n ) {\n return {\n tierOrder: existing.tierOrder,\n establishedTiers: existing.establishedTiers,\n remainingTiers: existing.remainingTiers,\n nextTier: existing.nextTier ?? null,\n smallestTierEstablished: existing.smallestTierEstablished === true,\n allTiersEstablished: existing.allTiersEstablished === true,\n };\n }\n const establishedTiers = Array.from(\n new Set(\n (benchmarks.improvementComparisons ?? [])\n .map((comparison) => normalizeBenchmarkTier(comparison.tier))\n .filter(\n (tier): tier is string =>\n tier !== null &&\n (ELIZA_ONE_BENCHMARK_TIERS as readonly string[]).includes(tier),\n ),\n ),\n ).sort(canonicalElizaOneTierSort);\n const remainingTiers = ELIZA_ONE_BENCHMARK_TIERS.filter(\n (tier) => !establishedTiers.includes(tier),\n );\n return {\n tierOrder: [...ELIZA_ONE_BENCHMARK_TIERS],\n establishedTiers,\n remainingTiers,\n nextTier: remainingTiers[0] ?? null,\n smallestTierEstablished: establishedTiers.includes(\"2b\"),\n allTiersEstablished: remainingTiers.length === 0,\n };\n}\n\nfunction summarizeCollectionManifest(\n manifest: TrainingCollectionRunManifest,\n): TrainingCollectionRunSummary {\n const coverage = collectionCoverage(manifest.evidence);\n const trainingEvidence = manifest.evidence.training ?? {\n trainingRuns: 0,\n models: 0,\n modelInventory: [],\n };\n const baselineProgress = collectionBaselineProgress(\n manifest.evidence.benchmarks,\n );\n const benchmarkComparisonInventory =\n manifest.evidence.benchmarks.comparisonInventory?.length > 0\n ? manifest.evidence.benchmarks.comparisonInventory\n : (manifest.evidence.benchmarks.improvementComparisons ?? []).map(\n (comparison) => ({\n tier: comparison.tier,\n benchmark: comparison.benchmark,\n baseModelId: null,\n trainedModelId: null,\n referenceModelId: null,\n baseScore: comparison.baseScore,\n trainedScore: comparison.trainedScore,\n improvementPercent: comparison.improvementPercent,\n referenceScore: comparison.referenceScore,\n trainedVsReferencePercent: comparison.trainedVsReferencePercent,\n dryRun: false,\n useMocks: false,\n modelBacked: comparison.modelBacked,\n }),\n );\n const sourceArtifacts = (manifest.evidence.artifactLinks ?? [])\n .filter(\n (\n artifact,\n ): artifact is typeof artifact & {\n category:\n | \"huggingface\"\n | \"feed\"\n | \"natural\"\n | \"scenario\"\n | \"test\"\n | \"training_jsonl\";\n } =>\n artifact.category === \"huggingface\" ||\n artifact.category === \"feed\" ||\n artifact.category === \"natural\" ||\n artifact.category === \"scenario\" ||\n artifact.category === \"test\" ||\n artifact.category === \"training_jsonl\",\n )\n .slice(0, 12)\n .map((artifact) => ({\n category: artifact.category,\n title: artifact.title,\n path: artifact.path,\n schema: artifact.schema,\n }));\n const evidenceSourceSamples = manifest.evidence.sourceSamples ?? {\n huggingFace: [],\n feed: [],\n natural: [],\n scenarios: [],\n tests: [],\n trainingJsonl: [],\n };\n const sourceSamples = {\n huggingFace: (evidenceSourceSamples.huggingFace ?? []).slice(0, 3),\n feed: (evidenceSourceSamples.feed ?? []).slice(0, 3),\n natural: (evidenceSourceSamples.natural ?? []).slice(0, 3),\n scenarios: (evidenceSourceSamples.scenarios ?? []).slice(0, 3),\n tests: (evidenceSourceSamples.tests ?? []).slice(0, 3),\n trainingJsonl: (evidenceSourceSamples.trainingJsonl ?? []).slice(0, 3),\n };\n const evidenceArtifacts = (manifest.evidence.artifactLinks ?? [])\n .filter(\n (\n artifact,\n ): artifact is typeof artifact & {\n category: \"eval\" | \"benchmark\" | \"model\";\n } =>\n artifact.category === \"eval\" ||\n artifact.category === \"benchmark\" ||\n artifact.category === \"model\",\n )\n .slice(0, 12)\n .map((artifact) => ({\n category: artifact.category,\n title: artifact.title,\n path: artifact.path,\n schema: artifact.schema,\n }));\n return {\n generatedAt: manifest.generatedAt,\n outputDir: manifest.outputDir,\n manifestPath: manifest.manifestPath,\n readmePath: manifest.readmePath,\n analysisIndexHtmlPath: manifest.analysis.indexHtmlPath,\n readinessStatus: manifest.readiness.status,\n readiness: {\n ready: manifest.readiness.ready,\n partial: manifest.readiness.partial,\n missing: manifest.readiness.missing,\n },\n readinessGaps: (manifest.evidence.readinessGaps ?? []).slice(0, 8),\n artifactCount: manifest.analysis.artifactCount,\n stepCounts: manifest.evidence.stepCounts,\n dataSources: manifest.evidence.dataSources,\n sourceSamples,\n sourceArtifacts,\n evidenceArtifacts,\n training: {\n trainingRuns: trainingEvidence.trainingRuns,\n models: trainingEvidence.models,\n modelInventory: (trainingEvidence.modelInventory ?? []).slice(0, 5),\n },\n benchmarks: {\n actionBenchmarkPairs: manifest.evidence.benchmarks.actionBenchmarkPairs,\n benchmarkComparisons: manifest.evidence.benchmarks.benchmarkComparisons,\n caseSamples: manifest.evidence.benchmarks.caseSamples?.length ?? 0,\n tiers: manifest.evidence.benchmarks.tiers,\n comparisonInventory: benchmarkComparisonInventory.slice(0, 5),\n baselineProgress,\n },\n evals: {\n evalArtifacts: manifest.evidence.evals.evalArtifacts,\n evalComparisons: manifest.evidence.evals.evalComparisons,\n actionBenchmarks: manifest.evidence.evals.actionBenchmarks,\n benchmarkMatrices: manifest.evidence.evals.benchmarkMatrices,\n comparisonInventory:\n manifest.evidence.evals.comparisonInventory?.slice(0, 5) ?? [],\n },\n coverage,\n };\n}\n\nasync function readCollectionManifestSummary(\n manifestPath: string,\n): Promise<TrainingCollectionRunSummary | null> {\n try {\n const parsed = JSON.parse(await readFile(manifestPath, \"utf8\")) as unknown;\n if (!isTrainingCollectionManifest(parsed)) return null;\n return summarizeCollectionManifest(parsed);\n } catch {\n return null;\n }\n}\n\nasync function discoverCollectionManifestPaths(\n root: string,\n): Promise<string[]> {\n try {\n const rootStat = await stat(root);\n if (!rootStat.isDirectory()) return [];\n } catch {\n return [];\n }\n\n const paths = new Set<string>();\n const rootManifest = join(root, \"collection-manifest.json\");\n if (existsSync(rootManifest)) {\n paths.add(rootManifest);\n }\n\n for (const entry of await readdir(root, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n const manifestPath = join(root, entry.name, \"collection-manifest.json\");\n if (existsSync(manifestPath)) {\n paths.add(manifestPath);\n }\n }\n return [...paths];\n}\n\nexport async function listTrainingCollections(\n options: ListTrainingCollectionsOptions = {},\n): Promise<ListTrainingCollectionsResult> {\n const root = resolve(\n options.root ?? join(trainingStateRoot(), \"collections\"),\n );\n const indexJsonPath = join(root, \"collection-index.json\");\n const indexHtmlPath = join(root, \"collection-index.html\");\n const limit =\n typeof options.limit === \"number\" && Number.isFinite(options.limit)\n ? Math.max(1, Math.floor(options.limit))\n : 20;\n const summaries = (\n await Promise.all(\n (\n await discoverCollectionManifestPaths(root)\n ).map((manifestPath) => readCollectionManifestSummary(manifestPath)),\n )\n ).filter((summary): summary is TrainingCollectionRunSummary => !!summary);\n\n summaries.sort((a, b) => {\n const generatedDelta =\n Date.parse(b.generatedAt) - Date.parse(a.generatedAt);\n if (Number.isFinite(generatedDelta) && generatedDelta !== 0) {\n return generatedDelta;\n }\n return b.outputDir.localeCompare(a.outputDir);\n });\n\n return {\n root,\n indexJsonPath,\n indexHtmlPath,\n collections: summaries.slice(0, limit),\n };\n}\n\nfunction buildCollectionIndexHtml(index: TrainingCollectionIndex): string {\n const rows = index.collections\n .map((collection) => {\n const sourceSummary = [\n `hf:${collection.dataSources.huggingFaceDatasets}`,\n `feed:${collection.dataSources.feedDatasets}`,\n `natural:${collection.dataSources.naturalTrajectoryBundles}`,\n `scenarios:${collection.dataSources.scenarioRuns}`,\n `native:${collection.dataSources.scenarioNativeDatasets}`,\n `tests:${collection.dataSources.testTrajectories}`,\n `jsonl:${collection.dataSources.trainingJsonlDatasets}`,\n ].join(\" \");\n const sourceLinks =\n collection.sourceArtifacts.length > 0\n ? collection.sourceArtifacts\n .slice(0, 6)\n .map(\n (artifact) =>\n `<a href=\"${escapeHtml(fileHref(artifact.path))}\">${escapeHtml(`${artifact.category}:${artifact.title}`)}</a>`,\n )\n .join(\" \")\n : \"<span>no source artifacts</span>\";\n const sourceSampleRows = [\n [\"hf\", collection.sourceSamples.huggingFace],\n [\"feed\", collection.sourceSamples.feed],\n [\"natural\", collection.sourceSamples.natural],\n [\"scenarios\", collection.sourceSamples.scenarios],\n [\"tests\", collection.sourceSamples.tests],\n [\"jsonl\", collection.sourceSamples.trainingJsonl],\n ].flatMap(([category, samples]) =>\n (samples as TrainingCollectionSourceSample[])\n .slice(0, 2)\n .map((sample) =>\n [\n category,\n sample.trajectoryId ?? sample.scenarioId ?? sample.title,\n sample.task ?? sample.sourceKind ?? sample.schema ?? \"sample\",\n `input:${compactCollectionIndexValue(sample.input) || \"n/a\"}`,\n `output:${compactCollectionIndexValue(sample.output) || \"n/a\"}`,\n ].join(\" \"),\n ),\n );\n const sourceSampleSummary =\n sourceSampleRows.length > 0 ? sourceSampleRows.join(\" | \") : \"none\";\n const gapSummary =\n collection.readinessGaps.length > 0\n ? collection.readinessGaps\n .slice(0, 4)\n .map((gap) =>\n [\n `${gap.id}:${gap.status}`,\n gap.recommendedCapability\n ? `->${gap.recommendedCapability}`\n : null,\n gap.recommendedParams\n ? ` params=${JSON.stringify(gap.recommendedParams)}`\n : null,\n ]\n .filter(Boolean)\n .join(\"\"),\n )\n .join(\" | \")\n : \"none\";\n const benchmarkSummary = [\n `pairs:${collection.benchmarks.actionBenchmarkPairs}`,\n `comparisons:${collection.benchmarks.benchmarkComparisons}`,\n `cases:${collection.benchmarks.caseSamples}`,\n `tiers:${collection.benchmarks.tiers.join(\",\") || \"none\"}`,\n ].join(\" \");\n const baselineSummary = [\n `established:${collection.benchmarks.baselineProgress.establishedTiers.join(\",\") || \"none\"}`,\n `next:${collection.benchmarks.baselineProgress.nextTier ?? \"none\"}`,\n `remaining:${collection.benchmarks.baselineProgress.remainingTiers.join(\",\") || \"none\"}`,\n ].join(\" \");\n const benchmarkHighlights =\n collection.benchmarks.comparisonInventory.length > 0\n ? collection.benchmarks.comparisonInventory\n .slice(0, 3)\n .map((comparison) =>\n [\n comparison.tier ?? \"tier\",\n comparison.benchmark ?? \"benchmark\",\n `base:${comparison.baseScore ?? \"n/a\"}`,\n `trained:${comparison.trainedScore ?? \"n/a\"}`,\n `reference:${comparison.referenceScore ?? \"n/a\"}`,\n `improvement:${comparison.improvementPercent ?? \"n/a\"}%`,\n `vs-reference:${comparison.trainedVsReferencePercent ?? \"n/a\"}%`,\n comparison.dryRun\n ? \"dry-run\"\n : comparison.modelBacked\n ? \"model-backed\"\n : comparison.useMocks\n ? \"mocked\"\n : \"unverified\",\n ].join(\" \"),\n )\n .join(\" | \")\n : \"none\";\n const benchmarkLinks =\n collection.evidenceArtifacts.filter(\n (artifact) => artifact.category === \"benchmark\",\n ).length > 0\n ? collection.evidenceArtifacts\n .filter((artifact) => artifact.category === \"benchmark\")\n .slice(0, 4)\n .map(\n (artifact) =>\n `<a href=\"${escapeHtml(fileHref(artifact.path))}\">${escapeHtml(`${artifact.category}:${artifact.title}`)}</a>`,\n )\n .join(\" \")\n : \"<span>no benchmark artifacts</span>\";\n const evalSummary = [\n `evals:${collection.evals.evalArtifacts}`,\n `comparisons:${collection.evals.evalComparisons}`,\n `action:${collection.evals.actionBenchmarks}`,\n `matrices:${collection.evals.benchmarkMatrices}`,\n ].join(\" \");\n const evalLinks =\n collection.evidenceArtifacts.filter(\n (artifact) => artifact.category === \"eval\",\n ).length > 0\n ? collection.evidenceArtifacts\n .filter((artifact) => artifact.category === \"eval\")\n .slice(0, 4)\n .map(\n (artifact) =>\n `<a href=\"${escapeHtml(fileHref(artifact.path))}\">${escapeHtml(`${artifact.category}:${artifact.title}`)}</a>`,\n )\n .join(\" \")\n : \"<span>no eval artifacts</span>\";\n const modelSummary = [\n `runs:${collection.training.trainingRuns}`,\n `models:${collection.training.models}`,\n `inventory:${collection.training.modelInventory.length}`,\n `tracked:${collection.coverage.models.inventoryCount}`,\n ].join(\" \");\n const modelHighlights =\n collection.training.modelInventory.length > 0\n ? collection.training.modelInventory\n .slice(0, 3)\n .map((model) =>\n [\n model.tier ?? \"tier\",\n model.variant ?? \"variant\",\n model.model ?? \"model\",\n `base:${model.baseModel ?? \"n/a\"}`,\n `output:${model.outputPath ?? \"n/a\"}`,\n `improvement:${model.evalImprovementPercent ?? \"n/a\"}%`,\n ].join(\" \"),\n )\n .join(\" | \")\n : \"none\";\n const modelLinks =\n collection.evidenceArtifacts.filter(\n (artifact) => artifact.category === \"model\",\n ).length > 0\n ? collection.evidenceArtifacts\n .filter((artifact) => artifact.category === \"model\")\n .slice(0, 4)\n .map(\n (artifact) =>\n `<a href=\"${escapeHtml(fileHref(artifact.path))}\">${escapeHtml(`${artifact.category}:${artifact.title}`)}</a>`,\n )\n .join(\" \")\n : \"<span>no model artifacts</span>\";\n const coverageSummary = [\n `samples:${collection.coverage.readableSamples.total}`,\n `scored-evals:${collection.coverage.evals.scoredComparisons}/${collection.coverage.evals.comparisons}`,\n `scored-bench:${collection.coverage.benchmarks.scoredComparisons}/${collection.coverage.benchmarks.comparisons}`,\n `all-tiers:${collection.coverage.benchmarks.allEliza1TiersCovered ? \"yes\" : \"no\"}`,\n ].join(\" \");\n return `<tr>\n <td>${escapeHtml(collection.generatedAt)}</td>\n <td>${escapeHtml(collection.readinessStatus)}<br><span>${escapeHtml(`ready:${collection.readiness.ready} partial:${collection.readiness.partial} missing:${collection.readiness.missing}`)}</span></td>\n <td>${escapeHtml(gapSummary)}</td>\n <td>${escapeHtml(sourceSummary)}<br><span>${escapeHtml(sourceSampleSummary)}</span><br>${sourceLinks}</td>\n <td>${escapeHtml(`${benchmarkSummary} ${baselineSummary}`)}<br><span>${escapeHtml(benchmarkHighlights)}</span><br>${benchmarkLinks}</td>\n <td>${escapeHtml(evalSummary)}<br>${evalLinks}</td>\n <td>${escapeHtml(modelSummary)}<br><span>${escapeHtml(modelHighlights)}</span><br>${modelLinks}</td>\n <td>${escapeHtml(coverageSummary)}</td>\n <td>${escapeHtml(collection.artifactCount)}</td>\n <td><a href=\"${escapeHtml(fileHref(collection.analysisIndexHtmlPath))}\">viewer</a> <a href=\"${escapeHtml(fileHref(collection.readmePath))}\">readme</a> <a href=\"${escapeHtml(fileHref(collection.manifestPath))}\">manifest</a></td>\n <td><code>${escapeHtml(collection.outputDir)}</code></td>\n </tr>`;\n })\n .join(\"\\n\");\n return `<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <title>Eliza Training Collections</title>\n <style>\n body { font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif; margin: 0; color: #111827; background: #f8fafc; }\n main { max-width: 1200px; margin: 0 auto; padding: 32px 20px; }\n h1 { margin: 0 0 6px; font-size: 28px; }\n .meta { color: #64748b; font-size: 13px; margin-bottom: 20px; }\n table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid #dbe3ef; }\n th, td { border-bottom: 1px solid #e5edf7; padding: 10px; text-align: left; vertical-align: top; font-size: 13px; }\n th { background: #eef3f8; font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: #475569; }\n tr:hover { background: #f8fbff; }\n code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; word-break: break-all; }\n a { color: #0f766e; margin-right: 8px; }\n span { color: #64748b; }\n </style>\n</head>\n<body>\n <main>\n <h1>Eliza Training Collections</h1>\n <div class=\"meta\">Generated ${escapeHtml(index.generatedAt)} · root <code>${escapeHtml(index.root)}</code> · ${index.collections.length} runs · <a href=\"${escapeHtml(fileHref(index.indexJsonPath))}\">JSON index</a></div>\n <table>\n <thead>\n <tr>\n <th>Generated</th>\n <th>Readiness</th>\n <th>Gaps</th>\n <th>Sources</th>\n <th>Benchmarks</th>\n <th>Evals</th>\n <th>Models</th>\n <th>Coverage</th>\n <th>Artifacts</th>\n <th>Links</th>\n <th>Output</th>\n </tr>\n </thead>\n <tbody>\n ${rows || '<tr><td colspan=\"11\">No collection runs found.</td></tr>'}\n </tbody>\n </table>\n </main>\n</body>\n</html>\n`;\n}\n\nexport async function writeTrainingCollectionIndex(\n options: ListTrainingCollectionsOptions & { generatedAt?: string } = {},\n): Promise<TrainingCollectionIndex> {\n const listed = await listTrainingCollections(options);\n await mkdir(listed.root, { recursive: true });\n const index: TrainingCollectionIndex = {\n schema: TRAINING_COLLECTION_INDEX_SCHEMA,\n schemaVersion: TRAINING_COLLECTION_INDEX_VERSION,\n generatedAt: options.generatedAt ?? new Date().toISOString(),\n root: listed.root,\n indexJsonPath: listed.indexJsonPath,\n indexHtmlPath: listed.indexHtmlPath,\n collections: listed.collections,\n };\n await writeFile(\n index.indexJsonPath,\n `${JSON.stringify(index, null, 2)}\\n`,\n \"utf8\",\n );\n await writeFile(index.indexHtmlPath, buildCollectionIndexHtml(index), \"utf8\");\n return index;\n}\n\nfunction buildCollectionReadme(\n manifest: TrainingCollectionRunManifest,\n): string {\n const evidence = manifest.evidence;\n const sourceSamples = evidence.sourceSamples;\n const coverage = collectionCoverage(evidence);\n const sampleCounts = [\n [\"Hugging Face\", sourceSamples.huggingFace.length],\n [\"Feed\", sourceSamples.feed.length],\n [\"Natural\", sourceSamples.natural.length],\n [\"Scenarios\", sourceSamples.scenarios.length],\n [\"Tests\", sourceSamples.tests.length],\n [\"Training JSONL\", sourceSamples.trainingJsonl.length],\n ];\n const sampleRows = (\n [\n [\"Hugging Face\", sourceSamples.huggingFace],\n [\"Feed\", sourceSamples.feed],\n [\"Natural\", sourceSamples.natural],\n [\"Scenarios\", sourceSamples.scenarios],\n [\"Tests\", sourceSamples.tests],\n [\"Training JSONL\", sourceSamples.trainingJsonl],\n ] as const\n ).flatMap(([source, samples]) =>\n samples\n .slice(0, 6)\n .map((sample) => [\n source,\n sample.title,\n sample.task ?? sample.scenarioId ?? sample.sourceKind,\n sample.trajectoryId,\n sample.model,\n sample.input,\n sample.output,\n markdownPathLink(sample.path),\n ]),\n );\n const benchmarkReadiness = evidence.benchmarkReadiness;\n const baselineProgress = evidence.benchmarks.baselineProgress;\n const preflightRows = evidence.preflight.checks.map((check) => [\n check.status,\n check.id,\n check.label,\n check.detail,\n markdownPathLink(check.path),\n ]);\n const modelRows = evidence.training.modelInventory\n .slice(0, 12)\n .map((model) => [\n model.tier,\n model.variant,\n model.model,\n model.baseModel,\n model.baseEvalScore,\n model.trainedEvalScore,\n markdownPathLink(model.outputPath),\n model.evalImprovementPercent,\n ]);\n const comparisonRows = evidence.benchmarks.comparisonInventory\n .slice(0, 12)\n .map((comparison) => [\n comparison.tier,\n comparison.benchmark,\n comparison.baseScore,\n comparison.trainedScore,\n comparison.referenceScore,\n comparison.improvementPercent,\n comparison.trainedVsReferencePercent,\n comparison.dryRun\n ? \"dry-run\"\n : comparison.modelBacked\n ? \"model-backed\"\n : comparison.useMocks\n ? \"mocked\"\n : \"unverified\",\n ]);\n const evalComparisonRows = evidence.evals.comparisonInventory\n .slice(0, 12)\n .map((comparison) => [\n comparison.baseModel,\n comparison.trainedModel,\n comparison.backend,\n comparison.baseScore,\n comparison.trainedScore,\n comparison.improvementPercent,\n comparison.baseLatencyMs,\n comparison.trainedLatencyMs,\n markdownPathLink(comparison.reportPath),\n ]);\n const caseRows = evidence.benchmarks.caseSamples\n .slice(0, 12)\n .map((sample) => [\n sample.tier,\n sample.variant,\n sample.caseId,\n sample.pass,\n sample.prompt,\n sample.expectedAction,\n sample.actualAction,\n markdownPathLink(sample.trajectoryPath),\n ]);\n const gapRows = evidence.readinessGaps.map((gap) => [\n gap.status,\n gap.id,\n gap.note,\n gap.recommendedCapability,\n gap.recommendedParams,\n ]);\n const artifactRows = evidence.artifactLinks\n .slice(0, 24)\n .map((artifact) => [\n artifact.category,\n artifact.kind,\n artifact.schema,\n artifact.title,\n markdownPathLink(artifact.path),\n ]);\n const stepArtifactRows = evidence.stepArtifacts.flatMap((step) => {\n const command = step.command?.join(\" \") ?? null;\n if (step.paths.length === 0) {\n return [\n [\n step.stepId,\n step.status,\n command,\n step.exitCode,\n step.stdout,\n step.stderr,\n \"n/a\",\n markdownPathLink(step.outputDir),\n ],\n ];\n }\n return step.paths\n .slice(0, 8)\n .map((path) => [\n step.stepId,\n step.status,\n command,\n step.exitCode,\n step.stdout,\n step.stderr,\n path.label,\n markdownPathLink(path.path),\n ]);\n });\n\n return `# Eliza Training Collection\n\nGenerated: ${manifest.generatedAt}\n\n## Entry Points\n\n- Output directory: ${markdownPathLink(manifest.outputDir)}\n- Collection manifest: ${markdownPathLink(manifest.manifestPath)}\n- Run summary: ${markdownPathLink(manifest.readmePath)}\n- Analysis viewer: ${markdownPathLink(manifest.analysis.indexHtmlPath)}\n- Analysis manifest: ${markdownPathLink(manifest.analysis.manifestPath)}\n- Readiness report: ${markdownPathLink(manifest.readiness.reportPath)}\n\n## Provenance\n\n- Generated by: ${manifest.provenance.generatedBy}\n- Workspace root: ${manifest.provenance.workspaceRoot ?? \"n/a\"}\n- Training state root: ${manifest.provenance.trainingStateRoot}\n- Analysis roots: ${manifest.provenance.analysisRoots.join(\", \")}\n- Output layout: collection=${manifest.provenance.outputLayout.collection} analysis=${manifest.provenance.outputLayout.analysis} steps=${manifest.provenance.outputLayout.steps}\n\n## Readiness\n\n- Status: ${manifest.readiness.status}\n- Checks: ready=${manifest.readiness.ready} partial=${manifest.readiness.partial} missing=${manifest.readiness.missing}\n- Benchmark readiness: smallest=${benchmarkReadiness.smallestTier} all-tiers=${benchmarkReadiness.allEliza1Tiers} improvement=${benchmarkReadiness.baseTrainedImprovement} all-tier-improvements=${benchmarkReadiness.allEliza1TierImprovements} cerebras=${benchmarkReadiness.cerebrasReference}\n\n## Live Preflight\n\n- Live work requested: ${evidence.preflight.liveRequired ? \"yes\" : \"no\"}\n\n${markdownTable([\"Status\", \"Check\", \"Label\", \"Detail\", \"Path\"], preflightRows)}\n\n## Coverage\n\n- Data sources: hf=${coverage.dataSources.huggingFace} feed=${coverage.dataSources.feed} natural=${coverage.dataSources.natural} scenarios=${coverage.dataSources.scenarios} tests=${coverage.dataSources.tests} jsonl=${coverage.dataSources.trainingJsonl}\n- Readable samples: total=${coverage.readableSamples.total} hf=${coverage.readableSamples.huggingFace} feed=${coverage.readableSamples.feed} natural=${coverage.readableSamples.natural} scenarios=${coverage.readableSamples.scenarios} tests=${coverage.readableSamples.tests} jsonl=${coverage.readableSamples.trainingJsonl}\n- Eval comparisons: scored=${coverage.evals.scoredComparisons}/${coverage.evals.comparisons} artifacts=${coverage.evals.artifacts}\n- Benchmark comparisons: scored=${coverage.benchmarks.scoredComparisons}/${coverage.benchmarks.comparisons} matrices=${coverage.benchmarks.matrices} case-samples=${coverage.benchmarks.caseSamples} all-tiers=${coverage.benchmarks.allEliza1TiersCovered ? \"yes\" : \"no\"}\n- Benchmark tiers: ${coverage.benchmarks.tiers.join(\", \") || \"none\"}\n- Model inventory: artifacts=${coverage.models.artifacts} inventory=${coverage.models.inventoryCount} staged-bundles=${coverage.models.stagedBundles}\n\n## Baseline Progression\n\n- Tier order: ${baselineProgress.tierOrder.join(\" -> \")}\n- Established tiers: ${baselineProgress.establishedTiers.join(\", \") || \"none\"}\n- Remaining tiers: ${baselineProgress.remainingTiers.join(\", \") || \"none\"}\n- Next tier: ${baselineProgress.nextTier ?? \"none\"}\n- Smallest tier established: ${baselineProgress.smallestTierEstablished ? \"yes\" : \"no\"}\n- All tiers established: ${baselineProgress.allTiersEstablished ? \"yes\" : \"no\"}\n\n## Steps\n\n${markdownTable(\n [\"Step\", \"Status\", \"Output\", \"Error\"],\n manifest.steps.map((step) => [\n step.id,\n step.status,\n markdownPathLink(step.outputDir),\n step.error,\n ]),\n)}\n## Step Artifacts\n\n${markdownTable(\n [\n \"Step\",\n \"Status\",\n \"Command\",\n \"Exit\",\n \"Stdout\",\n \"Stderr\",\n \"Path Label\",\n \"Path\",\n ],\n stepArtifactRows,\n)}\n## Data Sources\n\n${markdownTable(\n [\"Source\", \"Count\"],\n [\n [\"Hugging Face datasets\", evidence.dataSources.huggingFaceDatasets],\n [\"Feed datasets\", evidence.dataSources.feedDatasets],\n [\n \"Natural trajectory bundles\",\n evidence.dataSources.naturalTrajectoryBundles,\n ],\n [\"Scenario runs\", evidence.dataSources.scenarioRuns],\n [\"Scenario native datasets\", evidence.dataSources.scenarioNativeDatasets],\n [\"Test trajectories\", evidence.dataSources.testTrajectories],\n [\"Training JSONL datasets\", evidence.dataSources.trainingJsonlDatasets],\n ],\n)}\n## Source Samples\n\n${markdownTable([\"Source\", \"Samples\"], sampleCounts)}\n## Source Sample Preview\n\n${markdownTable(\n [\"Source\", \"Title\", \"Task\", \"Trajectory\", \"Model\", \"Input\", \"Output\", \"Path\"],\n sampleRows,\n)}\n## Model Inventory\n\n${markdownTable(\n [\n \"Tier\",\n \"Variant\",\n \"Model\",\n \"Base Model\",\n \"Base Score\",\n \"Trained Score\",\n \"Output\",\n \"Eval Improvement %\",\n ],\n modelRows,\n)}\n## Benchmark Comparisons\n\n${markdownTable(\n [\n \"Tier\",\n \"Benchmark\",\n \"Base\",\n \"Trained\",\n \"Reference\",\n \"Improvement %\",\n \"Vs Reference %\",\n \"Evidence\",\n ],\n comparisonRows,\n)}\n## Eval Comparisons\n\n${markdownTable(\n [\n \"Base Model\",\n \"Trained Model\",\n \"Backend\",\n \"Base Score\",\n \"Trained Score\",\n \"Improvement %\",\n \"Base Latency\",\n \"Trained Latency\",\n \"Report\",\n ],\n evalComparisonRows,\n)}\n## Benchmark Case Samples\n\n${markdownTable(\n [\n \"Tier\",\n \"Variant\",\n \"Case\",\n \"Pass\",\n \"Input\",\n \"Expected\",\n \"Actual\",\n \"Trajectory\",\n ],\n caseRows,\n)}\n## Readiness Gaps\n\n${markdownTable([\"Status\", \"Check\", \"Note\", \"Recommended Capability\", \"Recommended Params\"], gapRows)}\n## Evidence Artifacts\n\n${markdownTable([\"Category\", \"Kind\", \"Schema\", \"Title\", \"Path\"], artifactRows)}\n`;\n}\n\nasync function writeCollectionReadme(\n manifest: TrainingCollectionRunManifest,\n): Promise<string> {\n const readmePath = join(manifest.outputDir, \"README.md\");\n await writeFile(readmePath, buildCollectionReadme(manifest), \"utf8\");\n return readmePath;\n}\n\nasync function runStep<T>(\n id: TrainingCollectionStep<T>[\"id\"],\n enabled: boolean,\n outputDir: string,\n run: (outputDir: string) => Promise<T & { outputDir?: string }>,\n): Promise<TrainingCollectionStep<T>> {\n if (!enabled) {\n return {\n id,\n status: \"skipped\",\n outputDir: null,\n error: null,\n result: null,\n };\n }\n const dir = stepOutputDir(outputDir, id);\n try {\n const result = await run(dir);\n return {\n id,\n status: \"succeeded\",\n outputDir: result.outputDir ?? dir,\n error: null,\n result,\n };\n } catch (err) {\n return {\n id,\n status: \"failed\",\n outputDir: dir,\n error: err instanceof Error ? err.message : String(err),\n result: null,\n };\n }\n}\n\nexport async function runTrainingCollection(\n options: TrainingCollectionRunOptions = {},\n): Promise<TrainingCollectionRunResult> {\n const generatedAt = (options.now?.() ?? new Date()).toISOString();\n const stateRoot = trainingStateRoot();\n const outputDir =\n options.outputDir ??\n join(stateRoot, \"collections\", safeTimestamp(generatedAt));\n const workspaceRoot = options.workspaceRoot\n ? resolve(options.workspaceRoot)\n : discoverWorkspaceRoot();\n const trainingRoot = workspaceRoot\n ? join(workspaceRoot, \"packages\", \"training\")\n : undefined;\n await mkdir(outputDir, { recursive: true });\n\n const steps: TrainingCollectionStep[] = [];\n steps.push(\n await runStep<HuggingFaceDatasetIngestResult>(\n \"huggingface\",\n boolWithDefault(options.includeHuggingFace, true),\n outputDir,\n (dir) =>\n ingestHuggingFaceDataset({\n ...(options.huggingFace ?? {}),\n outputDir: options.huggingFace?.outputDir ?? dir,\n }),\n ),\n );\n steps.push(\n await runStep<FeedGenerationRunResult>(\n \"feed\",\n boolWithDefault(options.includeFeed, true),\n outputDir,\n (dir) =>\n runFeedGeneration({\n ...(options.feed ?? {}),\n workspaceRoot: options.feed?.workspaceRoot ?? workspaceRoot,\n outputDir: options.feed?.outputDir ?? dir,\n }),\n ),\n );\n steps.push(\n await runStep<TrajectoryExportBundle>(\n \"natural_trajectories\",\n boolWithDefault(options.includeNaturalTrajectories, false),\n outputDir,\n (dir) =>\n buildTrajectoryExportBundle({\n ...(options.naturalTrajectories ?? {}),\n outputDir: options.naturalTrajectories?.outputDir ?? dir,\n source: {\n kind: \"training_collection_natural_trajectories\",\n ...(options.naturalTrajectories?.source ?? {}),\n },\n }),\n ),\n );\n steps.push(\n await runStep<TestTrajectoryCollectionResult>(\n \"test_trajectories\",\n boolWithDefault(options.includeTestTrajectories, false),\n outputDir,\n (dir) =>\n collectTestTrajectories({\n ...(options.testTrajectories ?? {}),\n workspaceRoot:\n options.testTrajectories?.workspaceRoot ?? workspaceRoot,\n outputDir: options.testTrajectories?.outputDir ?? dir,\n generatedAt: options.testTrajectories?.generatedAt ?? generatedAt,\n syntheticFallback:\n options.testTrajectories?.syntheticFallback ?? true,\n }),\n ),\n );\n steps.push(\n await runStep<ScenarioRunResult>(\n \"scenarios\",\n boolWithDefault(options.includeScenarios, true),\n outputDir,\n (dir) =>\n runScenarios({\n ...(options.scenarios ?? {}),\n workspaceRoot: options.scenarios?.workspaceRoot ?? workspaceRoot,\n outputDir: options.scenarios?.outputDir ?? dir,\n }),\n ),\n );\n steps.push(\n await runStep<EvalComparisonRunResult>(\n \"eval_comparison\",\n boolWithDefault(options.includeEvalComparison, false),\n outputDir,\n (dir) =>\n runLocalEvalComparison({\n ...(options.evalComparison ?? {}),\n trainingRoot: options.evalComparison?.trainingRoot ?? trainingRoot,\n outputDir: options.evalComparison?.outputDir ?? dir,\n }),\n ),\n );\n steps.push(\n await runStep<ActionBenchmarkRunResult | ActionBenchmarkPairRunResult>(\n \"action_benchmark\",\n boolWithDefault(options.includeActionBenchmark, true),\n outputDir,\n (dir) =>\n runActionBenchmarkCollectionStep({\n outputDir: dir,\n workspaceRoot,\n options,\n }),\n ),\n );\n steps.push(\n await runStep<BenchmarkVsCerebrasRunResult>(\n \"benchmark_vs_cerebras\",\n boolWithDefault(options.includeBenchmarkVsCerebras, false),\n outputDir,\n (dir) =>\n runBenchmarkVsCerebras({\n ...(options.benchmarkVsCerebras ?? {}),\n trainingRoot:\n options.benchmarkVsCerebras?.trainingRoot ?? trainingRoot,\n outputDir: options.benchmarkVsCerebras?.outputDir ?? dir,\n matrixOutputDir:\n options.benchmarkVsCerebras?.matrixOutputDir ?? join(dir, \"matrix\"),\n }),\n ),\n );\n steps.push(\n await runStep<Eliza1ModelRegistryResult>(\n \"eliza1_model_registry\",\n boolWithDefault(options.includeEliza1ModelRegistry, true),\n outputDir,\n (dir) =>\n writeEliza1ModelRegistryArtifacts({\n outputDir: dir,\n generatedAt,\n }),\n ),\n );\n steps.push(\n await runStep<StageEliza1BundleResult>(\n \"eliza1_bundle_stage\",\n boolWithDefault(options.includeEliza1BundleStage, false),\n outputDir,\n (dir) =>\n stageEliza1Bundle({\n ...(options.eliza1BundleStage ?? {}),\n trainingRoot: options.eliza1BundleStage?.trainingRoot ?? trainingRoot,\n outputDir: options.eliza1BundleStage?.outputDir ?? dir,\n }),\n ),\n );\n steps.push(\n await runStep<BenchmarkMatrixArtifactResult>(\n \"benchmark_matrix\",\n boolWithDefault(options.includeBenchmarkMatrix, true),\n outputDir,\n async (dir) => {\n const artifacts = autoBenchmarkMatrixSources(\n steps,\n options.benchmarkMatrix?.artifacts,\n );\n if (artifacts.length === 0) {\n throw new Error(\n \"No benchmark artifacts available for benchmark matrix generation\",\n );\n }\n return writeBenchmarkMatrixArtifactFromArtifacts({\n artifacts,\n outputDir: options.benchmarkMatrix?.outputDir ?? dir,\n generatedAt: options.benchmarkMatrix?.generatedAt ?? generatedAt,\n referenceModelId: options.benchmarkMatrix?.referenceModelId,\n source: options.benchmarkMatrix?.source ?? {\n kind: \"training_collection_benchmark_matrix\",\n collectionOutputDir: outputDir,\n },\n });\n },\n ),\n );\n\n const analysisRoots = [outputDir, ...(options.analysis?.roots ?? [])];\n let analysis = await buildTrainingAnalysisIndex({\n ...(options.analysis ?? {}),\n roots: analysisRoots,\n outputDir: options.analysis?.outputDir ?? join(outputDir, \"analysis\"),\n });\n const manifestPath = join(outputDir, \"collection-manifest.json\");\n const readmePath = join(outputDir, \"README.md\");\n const preflight = await buildTrainingCollectionPreflightWithProbes({\n options,\n workspaceRoot,\n trainingRoot,\n });\n const manifest: TrainingCollectionRunManifest = {\n schema: TRAINING_COLLECTION_RUN_SCHEMA,\n schemaVersion: TRAINING_COLLECTION_RUN_VERSION,\n generatedAt,\n outputDir,\n manifestPath,\n readmePath,\n provenance: {\n generatedBy: \"plugin-training\",\n workspaceRoot: workspaceRoot ?? null,\n trainingStateRoot: stateRoot,\n analysisRoots,\n outputLayout: {\n collection: outputDir,\n analysis: options.analysis?.outputDir ?? join(outputDir, \"analysis\"),\n steps: outputDir,\n },\n },\n recipe: buildCollectionRecipe(options),\n analysis: {\n outputDir: analysis.outputDir,\n indexHtmlPath: analysis.indexHtmlPath,\n manifestPath: analysis.manifestPath,\n artifactCount: analysis.manifest.counts.artifacts,\n },\n readiness: {\n outputDir: join(outputDir, \"analysis\"),\n reportPath: join(outputDir, \"analysis\", \"training-readiness-report.json\"),\n status: \"missing\",\n ready: 0,\n partial: 0,\n missing: 0,\n },\n evidence: {\n preflight,\n viewerHtmlPath: analysis.indexHtmlPath,\n analysisManifestPath: analysis.manifestPath,\n readinessReportPath: join(\n outputDir,\n \"analysis\",\n \"training-readiness-report.json\",\n ),\n artifactCounts: analysis.manifest.counts,\n coverage: {\n dataSources: analysis.manifest.coverage.dataSources,\n readableSamples: analysis.manifest.coverage.readableSamples,\n evals: analysis.manifest.coverage.evals,\n benchmarks: analysis.manifest.coverage.benchmarks,\n models: {\n artifacts: analysis.manifest.coverage.models.artifacts,\n stagedBundles: analysis.manifest.coverage.models.stagedBundles,\n inventoryCount: analysis.manifest.coverage.models.inventory.length,\n },\n },\n stepCounts: summarizeStepCounts(steps),\n stepArtifacts: summarizeStepArtifacts(steps),\n dataSources: {\n huggingFaceDatasets: 0,\n feedDatasets: 0,\n naturalTrajectoryBundles: 0,\n scenarioRuns: 0,\n scenarioNativeDatasets: 0,\n testTrajectories: 0,\n trainingJsonlDatasets: 0,\n },\n feed: { runs: [], archetypeStats: [], trajectorySamples: [] },\n sourceSamples: {\n huggingFace: [],\n feed: [],\n natural: [],\n scenarios: [],\n tests: [],\n trainingJsonl: [],\n },\n training: { trainingRuns: 0, models: 0, modelInventory: [] },\n evals: {\n evalArtifacts: 0,\n actionBenchmarks: 0,\n evalComparisons: 0,\n benchmarkMatrices: 0,\n comparisonInventory: [],\n },\n artifactLinks: [],\n benchmarks: {\n actionBenchmarkPairs: 0,\n actionBenchmarkMatrixSources: 0,\n benchmarkRows: 0,\n benchmarkComparisons: 0,\n tiers: [],\n comparisonInventory: [],\n improvementComparisons: [],\n baselineProgress: {\n tierOrder: [...ELIZA_ONE_BENCHMARK_TIERS],\n establishedTiers: [],\n remainingTiers: [...ELIZA_ONE_BENCHMARK_TIERS],\n nextTier: ELIZA_ONE_BENCHMARK_TIERS[0] ?? null,\n smallestTierEstablished: false,\n allTiersEstablished: false,\n },\n caseSamples: [],\n },\n benchmarkReadiness: {\n smallestTier: \"missing\",\n allEliza1Tiers: \"missing\",\n allEliza1TierImprovements: \"missing\",\n cerebrasReference: \"missing\",\n baseTrainedImprovement: \"missing\",\n },\n readinessGaps: [],\n },\n steps,\n };\n await writeFile(\n manifestPath,\n `${JSON.stringify(manifest, null, 2)}\\n`,\n \"utf8\",\n );\n analysis = await buildTrainingAnalysisIndex({\n ...(options.analysis ?? {}),\n roots: analysisRoots,\n outputDir: options.analysis?.outputDir ?? join(outputDir, \"analysis\"),\n });\n manifest.analysis = {\n outputDir: analysis.outputDir,\n indexHtmlPath: analysis.indexHtmlPath,\n manifestPath: analysis.manifestPath,\n artifactCount: analysis.manifest.counts.artifacts,\n };\n const readiness = await writeTrainingReadinessReport(analysis, {\n outputDir: analysis.outputDir,\n generatedAt,\n });\n manifest.readiness = {\n outputDir: readiness.outputDir,\n reportPath: readiness.reportPath,\n status: readiness.report.status,\n ready: readiness.report.counts.ready,\n partial: readiness.report.counts.partial,\n missing: readiness.report.counts.missing,\n };\n manifest.evidence = buildCollectionEvidenceSummary({\n analysis,\n readiness: readiness.report,\n steps,\n preflight: manifest.evidence.preflight,\n });\n analysis = await buildTrainingAnalysisIndex({\n ...(options.analysis ?? {}),\n roots: analysisRoots,\n outputDir: options.analysis?.outputDir ?? join(outputDir, \"analysis\"),\n });\n manifest.analysis = {\n outputDir: analysis.outputDir,\n indexHtmlPath: analysis.indexHtmlPath,\n manifestPath: analysis.manifestPath,\n artifactCount: analysis.manifest.counts.artifacts,\n };\n manifest.evidence = buildCollectionEvidenceSummary({\n analysis,\n readiness: readiness.report,\n steps,\n preflight: manifest.evidence.preflight,\n });\n await writeFile(\n manifestPath,\n `${JSON.stringify(manifest, null, 2)}\\n`,\n \"utf8\",\n );\n await writeCollectionReadme(manifest);\n const collectionIndex = await writeTrainingCollectionIndex({\n root: dirname(outputDir),\n generatedAt,\n });\n return {\n outputDir,\n manifestPath,\n readmePath,\n collectionIndex,\n manifest,\n analysis,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Auto-training configuration: persisted at `<state>/training/config.json`.
3
+ *
4
+ * Self-contained on purpose. The agent-wide config schema is large and changes
5
+ * coordinated across multiple teams; auto-training has a small, stable surface
6
+ * that is easier to evolve from a dedicated file. Loader merges file contents
7
+ * over typed defaults; absent fields fall through to the defaults.
8
+ */
9
+ import { type TrajectoryTrainingTask } from "./trajectory-task-datasets.js";
10
+ export type TrainingBackend = "native";
11
+ export declare const ALL_TRAINING_BACKENDS: readonly TrainingBackend[];
12
+ export declare const ALL_TRAINING_TASKS: readonly TrajectoryTrainingTask[];
13
+ export interface PerTaskOverride {
14
+ threshold?: number;
15
+ cooldownHours?: number;
16
+ backend?: TrainingBackend;
17
+ }
18
+ export interface TrainingConfig {
19
+ /** Auto-train enabled by default. */
20
+ autoTrain: boolean;
21
+ /** Trajectory count per task that triggers a run. */
22
+ triggerThreshold: number;
23
+ /** Minimum hours between consecutive runs for the same task. */
24
+ triggerCooldownHours: number;
25
+ /**
26
+ * Backends to dispatch to on threshold/cron firings. Empty list means
27
+ * "no backend configured" — counters still tick, but threshold-fired
28
+ * training is skipped (with a logger note). Manual triggers always allow
29
+ * the caller to specify a backend explicitly.
30
+ *
31
+ * Defaults to `["native"]`, the in-process optimizer backend.
32
+ */
33
+ backends: TrainingBackend[];
34
+ perTaskOverrides?: Partial<Record<TrajectoryTrainingTask, PerTaskOverride>>;
35
+ }
36
+ export declare const DEFAULT_TRAINING_CONFIG: TrainingConfig;
37
+ export declare function trainingStateRoot(): string;
38
+ export declare function trainingConfigPath(): string;
39
+ /**
40
+ * Merge an arbitrary JSON object over the typed defaults. Unknown keys are
41
+ * dropped; invalid types fall back to the default value for that field.
42
+ */
43
+ export declare function normalizeTrainingConfig(input: unknown): TrainingConfig;
44
+ export declare function loadTrainingConfig(): TrainingConfig;
45
+ export declare function saveTrainingConfig(config: TrainingConfig): void;
46
+ export interface ResolvedTaskPolicy {
47
+ threshold: number;
48
+ cooldownMs: number;
49
+ backend: TrainingBackend | null;
50
+ }
51
+ export declare function resolveTaskPolicy(config: TrainingConfig, task: TrajectoryTrainingTask): ResolvedTaskPolicy;
52
+ //# sourceMappingURL=training-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-config.d.ts","sourceRoot":"","sources":["../../src/core/training-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEvC,eAAO,MAAM,qBAAqB,EAAE,SAAS,eAAe,EAElD,CAAC;AAKX,eAAO,MAAM,kBAAkB,EAAE,SAAS,sBAAsB,EACjC,CAAC;AAEhC,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;;;;;OAOG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC,CAAC;CAC7E;AAED,eAAO,MAAM,uBAAuB,EAAE,cASlB,CAAC;AAErB,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAuCD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CA8BtE;AAED,wBAAgB,kBAAkB,IAAI,cAAc,CAKnD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAK/D;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,sBAAsB,GAC3B,kBAAkB,CAUpB"}
@@ -0,0 +1,117 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname, join } from "node:path";
3
+ import { resolveStateDir } from "@elizaos/core";
4
+ import {
5
+ ALL_TRAJECTORY_TRAINING_TASKS
6
+ } from "./trajectory-task-datasets.js";
7
+ const ALL_TRAINING_BACKENDS = [
8
+ "native"
9
+ ];
10
+ const ALL_TRAINING_TASKS = ALL_TRAJECTORY_TRAINING_TASKS;
11
+ const DEFAULT_TRAINING_CONFIG = Object.freeze({
12
+ autoTrain: true,
13
+ triggerThreshold: 100,
14
+ triggerCooldownHours: 12,
15
+ // Native is the default-on backend. It runs in-process against the
16
+ // configured runtime model and writes optimized prompts into the
17
+ // OptimizedPromptService store. Operators can prepend other non-Google
18
+ // backends when they want hosted training instead.
19
+ backends: ["native"]
20
+ });
21
+ function trainingStateRoot() {
22
+ return join(resolveStateDir(), "training");
23
+ }
24
+ function trainingConfigPath() {
25
+ return join(trainingStateRoot(), "config.json");
26
+ }
27
+ function isFiniteNumber(value) {
28
+ return typeof value === "number" && Number.isFinite(value);
29
+ }
30
+ function isStringRecord(value) {
31
+ return typeof value === "object" && value !== null && !Array.isArray(value);
32
+ }
33
+ function coerceBackend(value) {
34
+ return typeof value === "string" && ALL_TRAINING_BACKENDS.includes(value) ? value : null;
35
+ }
36
+ function coercePerTaskOverrides(value) {
37
+ if (!isStringRecord(value)) return void 0;
38
+ const out = {};
39
+ for (const task of ALL_TRAINING_TASKS) {
40
+ const raw = value[task];
41
+ if (!isStringRecord(raw)) continue;
42
+ const override = {};
43
+ if (isFiniteNumber(raw.threshold) && raw.threshold > 0) {
44
+ override.threshold = Math.floor(raw.threshold);
45
+ }
46
+ if (isFiniteNumber(raw.cooldownHours) && raw.cooldownHours >= 0) {
47
+ override.cooldownHours = raw.cooldownHours;
48
+ }
49
+ const backend = coerceBackend(raw.backend);
50
+ if (backend) override.backend = backend;
51
+ if (Object.keys(override).length > 0) out[task] = override;
52
+ }
53
+ return Object.keys(out).length > 0 ? out : void 0;
54
+ }
55
+ function normalizeTrainingConfig(input) {
56
+ const base = {
57
+ autoTrain: DEFAULT_TRAINING_CONFIG.autoTrain,
58
+ triggerThreshold: DEFAULT_TRAINING_CONFIG.triggerThreshold,
59
+ triggerCooldownHours: DEFAULT_TRAINING_CONFIG.triggerCooldownHours,
60
+ backends: [...DEFAULT_TRAINING_CONFIG.backends]
61
+ };
62
+ if (!isStringRecord(input)) return base;
63
+ if (typeof input.autoTrain === "boolean") base.autoTrain = input.autoTrain;
64
+ if (isFiniteNumber(input.triggerThreshold) && input.triggerThreshold > 0) {
65
+ base.triggerThreshold = Math.floor(input.triggerThreshold);
66
+ }
67
+ if (isFiniteNumber(input.triggerCooldownHours) && input.triggerCooldownHours >= 0) {
68
+ base.triggerCooldownHours = input.triggerCooldownHours;
69
+ }
70
+ if (Array.isArray(input.backends)) {
71
+ const seen = /* @__PURE__ */ new Set();
72
+ for (const entry of input.backends) {
73
+ const backend = coerceBackend(entry);
74
+ if (backend && !seen.has(backend)) seen.add(backend);
75
+ }
76
+ base.backends = [...seen];
77
+ }
78
+ const overrides = coercePerTaskOverrides(input.perTaskOverrides);
79
+ if (overrides) base.perTaskOverrides = overrides;
80
+ return base;
81
+ }
82
+ function loadTrainingConfig() {
83
+ const path = trainingConfigPath();
84
+ if (!existsSync(path)) return normalizeTrainingConfig(void 0);
85
+ const raw = readFileSync(path, "utf-8");
86
+ return normalizeTrainingConfig(JSON.parse(raw));
87
+ }
88
+ function saveTrainingConfig(config) {
89
+ const path = trainingConfigPath();
90
+ mkdirSync(dirname(path), { recursive: true });
91
+ const normalized = normalizeTrainingConfig(config);
92
+ writeFileSync(path, `${JSON.stringify(normalized, null, 2)}
93
+ `, "utf-8");
94
+ }
95
+ function resolveTaskPolicy(config, task) {
96
+ const override = config.perTaskOverrides?.[task];
97
+ const threshold = override?.threshold ?? config.triggerThreshold;
98
+ const cooldownHours = override?.cooldownHours ?? config.triggerCooldownHours;
99
+ const backend = override?.backend ?? config.backends[0] ?? null;
100
+ return {
101
+ threshold,
102
+ cooldownMs: Math.max(0, cooldownHours * 36e5),
103
+ backend
104
+ };
105
+ }
106
+ export {
107
+ ALL_TRAINING_BACKENDS,
108
+ ALL_TRAINING_TASKS,
109
+ DEFAULT_TRAINING_CONFIG,
110
+ loadTrainingConfig,
111
+ normalizeTrainingConfig,
112
+ resolveTaskPolicy,
113
+ saveTrainingConfig,
114
+ trainingConfigPath,
115
+ trainingStateRoot
116
+ };
117
+ //# sourceMappingURL=training-config.js.map