@elizaos/plugin-training 2.0.3-beta.5 → 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/cli.ts"],"sourcesContent":["/**\n * CLI entry point for the training data pipeline.\n *\n * Usage (from repo root):\n * bun run eliza/plugins/plugin-training/src/core/cli.ts generate --variants 5 --output ./training-data\n * bun run eliza/plugins/plugin-training/src/core/cli.ts validate --input ./training-data/raw_samples.json\n * bun run eliza/plugins/plugin-training/src/core/cli.ts export-trajectories --output ./training-data/trajectories.jsonl\n * Or: `cd eliza/packages/agent && bun run training:cli` (delegates to this file).\n */\n\nimport { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { parseArgs } from \"node:util\";\nimport { AGENT_CONTEXTS, type AgentContext } from \"./context-types.js\";\nimport {\n createAnthropicTeacher,\n createCerebrasTeacher,\n createOpenAITeacher,\n exportToElizaNativeJSONL,\n type GenerationConfig,\n generateDataset,\n type TeacherModel,\n type TrainingSample,\n} from \"./dataset-generator.js\";\nimport {\n ELIZA_ONE_BENCHMARK_TIER_LIST,\n elizaOneActionBenchmarkPairs,\n elizaOneBenchmarkModelId,\n parseElizaOneBenchmarkTiers,\n} from \"./eliza1-benchmark-recipe.js\";\nimport {\n type CompareMode,\n comparePrompts,\n formatComparisonSummary,\n type ScorerKind,\n} from \"./prompt-compare.js\";\nimport { formatQualityReport, validateDataset } from \"./replay-validator.js\";\nimport {\n buildRoleplayEpisodes,\n exportRoleplayEpisodes,\n} from \"./roleplay-trajectories.js\";\nimport { ALL_BLUEPRINTS, BLUEPRINT_STATS } from \"./scenario-blueprints.js\";\nimport {\n buildTrainingCollectionPreflightWithProbes,\n type ListTrainingCollectionsResult,\n listTrainingCollections,\n runTrainingCollection,\n type TrainingCollectionPreflightSummary,\n type TrainingCollectionRunOptions,\n type TrainingCollectionRunResult,\n} from \"./training-collection-runner.js\";\nimport {\n buildTaskRecord,\n type TrajectoryTrainingTask,\n} from \"./trajectory-task-datasets.js\";\nimport { discoverWorkspaceRoot } from \"./workspace-runtime.js\";\n\nconst AGENT_DECISIONS = [\"RESPOND\", \"IGNORE\", \"STOP\"] as const;\ntype AgentDecision = (typeof AGENT_DECISIONS)[number];\n\nfunction parseAgentContexts(\n value: string | undefined,\n): AgentContext[] | undefined {\n if (!value) return undefined;\n const out: AgentContext[] = [];\n for (const entry of value.split(\",\")) {\n const trimmed = entry.trim();\n if (trimmed && (AGENT_CONTEXTS as readonly string[]).includes(trimmed)) {\n out.push(trimmed as AgentContext);\n }\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction parseAgentDecisions(\n value: string | undefined,\n): AgentDecision[] | undefined {\n if (!value) return undefined;\n const out: AgentDecision[] = [];\n for (const entry of value.split(\",\")) {\n const trimmed = entry.trim();\n if (trimmed && (AGENT_DECISIONS as readonly string[]).includes(trimmed)) {\n out.push(trimmed as AgentDecision);\n }\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction parseCliTierList(value: string | undefined): string[] {\n return parseElizaOneBenchmarkTiers(value);\n}\n\nfunction optionalPositiveInteger(\n value: string | undefined,\n): number | undefined {\n if (!value) return undefined;\n const parsed = Number.parseInt(value, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction parseCerebrasVariants(\n value: string | undefined,\n): \"trained\" | \"base\" | \"both\" {\n if (value === \"trained\" || value === \"base\" || value === \"both\") {\n return value;\n }\n if (value) {\n throw new Error(\n `Invalid --cerebras-variants value ${JSON.stringify(value)}; expected trained, base, or both`,\n );\n }\n return \"both\";\n}\n\nfunction parseActionBenchmarkVariant(\n value: string | undefined,\n): \"reference\" | \"base\" | \"trained\" | undefined {\n if (value === undefined) return undefined;\n if (value === \"reference\" || value === \"base\" || value === \"trained\") {\n return value;\n }\n throw new Error(\n `Invalid --benchmark-variant value ${JSON.stringify(value)}; expected reference, base, or trained`,\n );\n}\n\nfunction parseBenchmarkVsCerebrasBenchmark(\n value: string,\n): \"eliza_harness_action_selection\" | \"clawbench\" | \"hermes\" | \"all\" {\n if (\n value === \"eliza_harness_action_selection\" ||\n value === \"clawbench\" ||\n value === \"hermes\" ||\n value === \"all\"\n ) {\n return value;\n }\n throw new Error(\n `Invalid --benchmark value ${JSON.stringify(value)}; expected eliza_harness_action_selection, clawbench, hermes, or all`,\n );\n}\n\nfunction getTeacherModel(): TeacherModel {\n // Standing direction: training defaults to Cerebras gpt-oss-120b. The\n // teacher generates synthetic conversations; the agent under test is\n // unaffected.\n const trainProvider =\n process.env.TRAIN_MODEL_PROVIDER?.trim() ??\n process.env.TRAINING_PROVIDER?.trim();\n const cerebrasKey = process.env.CEREBRAS_API_KEY;\n if (trainProvider === \"cerebras\" && cerebrasKey) {\n console.log(\"Using Cerebras gpt-oss-120b as teacher model\");\n return createCerebrasTeacher();\n }\n\n const anthropicKey = process.env.ANTHROPIC_API_KEY;\n const openaiKey = process.env.OPENAI_API_KEY;\n\n if (anthropicKey) {\n console.log(\"Using Anthropic Claude Sonnet 4 as teacher model\");\n return createAnthropicTeacher(anthropicKey);\n }\n\n if (openaiKey) {\n console.log(\"Using OpenAI GPT-5 as teacher model\");\n return createOpenAITeacher(openaiKey);\n }\n\n throw new Error(\n \"No teacher model API key found. Set CEREBRAS_API_KEY (preferred), ANTHROPIC_API_KEY, or OPENAI_API_KEY.\",\n );\n}\n\nasync function cmdGenerate(args: string[]) {\n const { values } = parseArgs({\n args,\n options: {\n variants: { type: \"string\", default: \"5\" },\n output: { type: \"string\", default: \"./training-data\" },\n concurrency: { type: \"string\", default: \"5\" },\n contexts: { type: \"string\" },\n decisions: { type: \"string\" },\n limitBlueprints: { type: \"string\" },\n },\n });\n\n const variantsRaw = values.variants;\n const outputDir = values.output;\n const concurrencyRaw = values.concurrency;\n if (\n typeof variantsRaw !== \"string\" ||\n typeof outputDir !== \"string\" ||\n typeof concurrencyRaw !== \"string\"\n ) {\n throw new Error(\"Missing required generate options\");\n }\n\n const variantsPerBlueprint = parseInt(variantsRaw, 10);\n const concurrency = parseInt(concurrencyRaw, 10);\n\n const filterContexts = parseAgentContexts(values.contexts);\n const filterDecisions = parseAgentDecisions(values.decisions);\n const limitBlueprints = values.limitBlueprints\n ? parseInt(values.limitBlueprints, 10)\n : undefined;\n\n const teacher = getTeacherModel();\n\n const blueprintCount = limitBlueprints\n ? Math.min(limitBlueprints, ALL_BLUEPRINTS.length)\n : ALL_BLUEPRINTS.length;\n\n console.log(`\\nScenario blueprints: ${ALL_BLUEPRINTS.length}`);\n console.log(`Manual blueprints: ${BLUEPRINT_STATS.manualCount}`);\n console.log(\n `Generated blueprints: ${BLUEPRINT_STATS.totalCount - BLUEPRINT_STATS.manualCount}`,\n );\n console.log(`Variants per blueprint: ${variantsPerBlueprint}`);\n console.log(\n `Expected total samples: ${blueprintCount * variantsPerBlueprint}`,\n );\n console.log(`Output directory: ${outputDir}`);\n console.log(`Teacher model: ${teacher.name}`);\n console.log(`Concurrency: ${concurrency}`);\n if (filterContexts)\n console.log(`Filter contexts: ${filterContexts.join(\", \")}`);\n if (filterDecisions)\n console.log(`Filter decisions: ${filterDecisions.join(\", \")}`);\n if (limitBlueprints) console.log(`Limit blueprints: ${limitBlueprints}`);\n console.log(\"\");\n\n const config: GenerationConfig = {\n variantsPerBlueprint,\n teacher,\n outputDir,\n concurrency,\n filterContexts,\n filterDecisions,\n limitBlueprints,\n onProgress: (completed, total, sample) => {\n const pct = ((completed / total) * 100).toFixed(1);\n process.stdout.write(\n `\\r[${pct}%] ${completed}/${total} - ${sample.blueprintId} (${sample.expectedOutput.decision}/${sample.expectedOutput.primaryContext})`,\n );\n },\n };\n\n console.log(\"Generating synthetic training data...\\n\");\n const samples = await generateDataset(config);\n console.log(`\\n\\nGenerated ${samples.length} samples.`);\n\n // Validate\n console.log(\"\\nValidating dataset...\");\n const report = validateDataset(samples);\n console.log(formatQualityReport(report));\n\n // Export\n console.log(\"\\nExporting to eliza_native_v1 JSONL format...\");\n const paths = await exportToElizaNativeJSONL(samples, outputDir);\n console.log(` Combined: ${paths.combinedPath}`);\n console.log(` Should-respond only: ${paths.shouldRespondPath}`);\n console.log(` Context routing: ${paths.contextRoutingPath}`);\n const roleplayPaths = await exportRoleplayEpisodes(\n buildRoleplayEpisodes(samples),\n samples,\n outputDir,\n );\n console.log(` Roleplay episodes: ${roleplayPaths.episodesPath}`);\n console.log(` Roleplay manifest: ${roleplayPaths.manifestPath}`);\n console.log(\"\\nDone!\");\n}\n\nasync function cmdCompare(args: string[]) {\n const { values } = parseArgs({\n args,\n options: {\n baseline: { type: \"string\" },\n variant: { type: \"string\" },\n dataset: { type: \"string\" },\n task: { type: \"string\" },\n scorer: { type: \"string\" },\n mode: { type: \"string\" },\n \"max-examples\": { type: \"string\" },\n tolerance: { type: \"string\" },\n output: { type: \"string\", short: \"o\" },\n temperature: { type: \"string\" },\n \"max-tokens\": { type: \"string\" },\n },\n });\n\n if (!values.baseline || !values.variant || !values.dataset) {\n console.error(\n \"Usage: compare --baseline <prompt.txt> --variant <prompt.txt> --dataset <dataset.jsonl> [options]\",\n );\n console.error(\"\");\n console.error(\"Options:\");\n console.error(\n \" --task <task> One of: should_respond, context_routing, action_planner, response, media_description, view_context\",\n );\n console.error(\n \" --scorer <kind> agreement | planner_action (default: derived from --task)\",\n );\n console.error(\n \" --mode <mode> vs_historical (default) | pairwise\",\n );\n console.error(\" --max-examples N Cap evaluations (default: all)\");\n console.error(\n \" --tolerance N Pass threshold delta (default: 0.02)\",\n );\n console.error(\" --temperature N Sampling temperature (default: 0)\");\n console.error(\" --max-tokens N Per-completion cap (default: 512)\");\n console.error(\" -o, --output <path> Write JSON result to file\");\n console.error(\"\");\n console.error(\n \"Requires ANTHROPIC_API_KEY or OPENAI_API_KEY for the model adapter.\",\n );\n process.exit(1);\n }\n\n const [baselinePrompt, variantPrompt] = await Promise.all([\n readFile(values.baseline, \"utf-8\"),\n readFile(values.variant, \"utf-8\"),\n ]);\n\n const teacher = getTeacherModel();\n const adapter = {\n async complete(input: {\n system?: string;\n user: string;\n temperature?: number;\n maxTokens?: number;\n }): Promise<string> {\n // Teacher model fixes its own temperature/max_tokens, but the\n // scorer asks for 0/512 by default. Re-using the teacher here\n // keeps adapter wiring trivial; if you need stricter\n // determinism, plug a different adapter via the API.\n return await teacher.generate(input.system ?? \"\", input.user);\n },\n };\n\n const task = values.task as TrajectoryTrainingTask | undefined;\n const scorer = values.scorer as ScorerKind | undefined;\n const mode = values.mode as CompareMode | undefined;\n const maxExamples = values[\"max-examples\"]\n ? Number.parseInt(values[\"max-examples\"], 10)\n : undefined;\n const temperature = values.temperature\n ? Number.parseFloat(values.temperature)\n : undefined;\n const maxTokens = values[\"max-tokens\"]\n ? Number.parseInt(values[\"max-tokens\"], 10)\n : undefined;\n\n console.log(\n `[compare] baseline=${values.baseline} variant=${values.variant}`,\n );\n console.log(\n `[compare] dataset=${values.dataset} task=${task ?? \"(any)\"} mode=${mode ?? \"vs_historical\"}`,\n );\n console.log(`[compare] adapter=${teacher.name}`);\n\n const result = await comparePrompts({\n baselinePrompt,\n variantPrompt,\n dataset: values.dataset,\n task,\n scorer,\n mode,\n maxExamples,\n temperature,\n maxTokens,\n adapter,\n });\n\n console.log(\"\");\n console.log(formatComparisonSummary(result));\n\n if (values.output) {\n await writeFile(values.output, JSON.stringify(result, null, 2));\n console.log(`[compare] wrote result to ${values.output}`);\n }\n\n if (!result.passed) {\n process.exit(2);\n }\n}\n\ninterface RecordedMessage {\n role: string;\n content: string | unknown;\n}\n\ninterface RecordedStage {\n stageId?: string;\n kind?: string;\n startedAt?: number;\n endedAt?: number;\n model?: {\n modelType?: string;\n modelName?: string;\n provider?: string;\n messages?: RecordedMessage[];\n response?: string | unknown;\n toolCalls?: unknown[];\n };\n}\n\ninterface RecordedTrajectory {\n trajectoryId: string;\n agentId: string;\n rootMessage?: { text?: string };\n startedAt?: number;\n status?: string;\n stages?: RecordedStage[];\n}\n\n/**\n * Map RecordedStage.kind / model.modelType to a TrajectoryTrainingTask bucket.\n * Returns null if the stage doesn't fit a known eval task.\n */\nfunction classifyStage(stage: RecordedStage): TrajectoryTrainingTask | null {\n const kind = stage.kind?.toLowerCase() ?? \"\";\n const modelType = stage.model?.modelType?.toLowerCase() ?? \"\";\n if (kind === \"messagehandler\" || modelType.includes(\"response_handler\")) {\n return \"should_respond\";\n }\n if (kind === \"planner\" || modelType.includes(\"planner\")) {\n return \"action_planner\";\n }\n if (kind === \"tool\" || kind === \"action\") {\n return \"response\";\n }\n if (modelType.includes(\"vision\") || modelType.includes(\"image\")) {\n return \"media_description\";\n }\n return null;\n}\n\nfunction stringifyContent(value: unknown): string {\n if (typeof value === \"string\") return value;\n if (value === null || value === undefined) return \"\";\n return JSON.stringify(value);\n}\n\nfunction stageToJsonlRow(stage: RecordedStage): Record<string, unknown> | null {\n const messages = stage.model?.messages ?? [];\n const response = stage.model?.response;\n if (messages.length === 0) return null;\n if (!response && !stage.model?.toolCalls) return null;\n const normalizedMessages = messages.map((m) => ({\n role: m.role,\n content: stringifyContent(m.content),\n }));\n const systemMsg = normalizedMessages.find((m) => m.role === \"system\");\n const responseText = stringifyContent(response);\n const toolCalls = stage.model?.toolCalls;\n return {\n format: \"eliza_native_v1\",\n boundary: \"vercel_ai_sdk.generateText\",\n request: {\n system: systemMsg?.content ?? \"\",\n messages: normalizedMessages,\n },\n response: toolCalls\n ? { text: responseText, toolCalls }\n : { text: responseText },\n };\n}\n\nasync function cmdExportTrajectories(args: string[]) {\n const { values } = parseArgs({\n args,\n options: {\n input: { type: \"string\", short: \"i\" },\n output: { type: \"string\", short: \"o\" },\n \"max-per-task\": { type: \"string\" },\n },\n });\n const inputDir =\n values.input ??\n process.env.ELIZA_TRAJECTORY_DIR ??\n join(\n process.env.ELIZA_STATE_DIR ?? join(homedir(), \".eliza\"),\n \"trajectories\",\n );\n const outputDir = values.output ?? \"./training-data\";\n const cap = values[\"max-per-task\"]\n ? Number.parseInt(values[\"max-per-task\"], 10)\n : Number.POSITIVE_INFINITY;\n\n if (!existsSync(inputDir)) {\n console.error(`[export-trajectories] input dir not found: ${inputDir}`);\n process.exit(1);\n }\n\n await mkdir(outputDir, { recursive: true });\n console.log(`[export-trajectories] reading from ${inputDir}`);\n console.log(`[export-trajectories] writing to ${outputDir}`);\n\n const buckets = buildTaskRecord<Record<string, unknown>[]>(() => []);\n\n const agentDirs = readdirSync(inputDir).filter((name) => {\n const full = join(inputDir, name);\n return statSync(full).isDirectory();\n });\n\n let totalTrajectories = 0;\n let totalStages = 0;\n let droppedStages = 0;\n for (const agentDir of agentDirs) {\n const agentPath = join(inputDir, agentDir);\n const files = readdirSync(agentPath).filter((f) => f.endsWith(\".json\"));\n for (const file of files) {\n let traj: RecordedTrajectory;\n try {\n traj = JSON.parse(\n readFileSync(join(agentPath, file), \"utf-8\"),\n ) as RecordedTrajectory;\n } catch {\n continue;\n }\n totalTrajectories += 1;\n for (const stage of traj.stages ?? []) {\n totalStages += 1;\n const task = classifyStage(stage);\n if (!task) {\n droppedStages += 1;\n continue;\n }\n if (buckets[task].length >= cap) continue;\n const row = stageToJsonlRow(stage);\n if (!row) {\n droppedStages += 1;\n continue;\n }\n buckets[task].push(row);\n }\n }\n }\n\n for (const task of Object.keys(buckets) as TrajectoryTrainingTask[]) {\n const path = join(outputDir, `${task}_trajectories.jsonl`);\n const lines = buckets[task].map((row) => JSON.stringify(row));\n await writeFile(path, `${lines.join(\"\\n\")}\\n`);\n console.log(\n `[export-trajectories] ${task}: wrote ${buckets[task].length} examples to ${path}`,\n );\n }\n console.log(\n `[export-trajectories] summary: ${totalTrajectories} trajectories, ${totalStages} stages (${droppedStages} unclassified)`,\n );\n}\n\nexport function buildRunCollectionOptionsFromCliArgs(\n args: string[],\n): TrainingCollectionRunOptions {\n const { values } = parseArgs({\n args,\n options: {\n output: { type: \"string\", short: \"o\" },\n \"workspace-root\": { type: \"string\" },\n tiers: { type: \"string\", default: \"2b\" },\n benchmark: { type: \"string\", default: \"eliza_harness_action_selection\" },\n provider: { type: \"string\", default: \"local-llama-cpp\" },\n \"base-url\": { type: \"string\", default: \"http://localhost:11434/v1\" },\n \"runs-per-case\": { type: \"string\", default: \"1\" },\n \"benchmark-filter\": { type: \"string\" },\n \"benchmark-model\": { type: \"string\" },\n \"benchmark-runtime-model\": { type: \"string\" },\n \"benchmark-variant\": { type: \"string\" },\n \"dataset-version\": { type: \"string\", default: \"eliza-native-v1\" },\n \"hf-repo\": { type: \"string\", default: \"elizaos/eliza-1-training\" },\n \"hf-revision\": { type: \"string\", default: \"main\" },\n \"hf-files\": { type: \"string\" },\n \"feed-archetypes\": { type: \"string\", default: \"trader\" },\n \"feed-agents\": { type: \"string\", default: \"1\" },\n \"feed-ticks\": { type: \"string\", default: \"1\" },\n \"feed-parallel\": { type: \"string\", default: \"1\" },\n \"cerebras-max-samples\": { type: \"string\", default: \"50\" },\n \"cerebras-variants\": { type: \"string\", default: \"both\" },\n scenario: { type: \"string\", default: \"deterministic-pr-smoke\" },\n \"natural-sanitized-jsonl\": { type: \"string\" },\n \"natural-raw-jsonl\": { type: \"string\" },\n \"natural-run-id\": { type: \"string\" },\n \"natural-tasks\": { type: \"string\" },\n \"include-natural-raw\": { type: \"boolean\", default: false },\n live: { type: \"boolean\", default: false },\n \"preflight-only\": { type: \"boolean\", default: false },\n \"probe-endpoints\": { type: \"boolean\", default: false },\n \"skip-hf\": { type: \"boolean\", default: false },\n \"skip-feed\": { type: \"boolean\", default: false },\n \"skip-natural\": { type: \"boolean\", default: false },\n \"skip-tests\": { type: \"boolean\", default: false },\n \"skip-scenarios\": { type: \"boolean\", default: false },\n \"skip-action-benchmark\": { type: \"boolean\", default: false },\n \"skip-cerebras\": { type: \"boolean\", default: false },\n \"skip-model-registry\": { type: \"boolean\", default: false },\n \"skip-bundle-stage\": { type: \"boolean\", default: false },\n \"include-eval-comparison\": { type: \"boolean\", default: false },\n \"skip-eval-comparison\": { type: \"boolean\", default: false },\n \"include-matrix\": { type: \"boolean\", default: true },\n \"skip-matrix\": { type: \"boolean\", default: false },\n mocks: { type: \"boolean\" },\n },\n });\n const tiers = parseCliTierList(\n typeof values.tiers === \"string\" ? values.tiers : undefined,\n );\n const live = values.live === true;\n const dryRun = !live;\n const benchmark = parseBenchmarkVsCerebrasBenchmark(\n typeof values.benchmark === \"string\"\n ? values.benchmark\n : \"eliza_harness_action_selection\",\n );\n const provider =\n typeof values.provider === \"string\" ? values.provider : \"local-llama-cpp\";\n const baseUrl =\n typeof values[\"base-url\"] === \"string\"\n ? values[\"base-url\"]\n : \"http://localhost:11434/v1\";\n const datasetVersion =\n typeof values[\"dataset-version\"] === \"string\"\n ? values[\"dataset-version\"]\n : \"eliza-native-v1\";\n const actionBenchmark = {\n useMocks: typeof values.mocks === \"boolean\" ? values.mocks : dryRun,\n forceTrajectoryCapture: true,\n provider,\n baseUrl,\n benchmark,\n datasetVersion,\n modelId:\n typeof values[\"benchmark-model\"] === \"string\"\n ? values[\"benchmark-model\"]\n : undefined,\n runtimeModel:\n typeof values[\"benchmark-runtime-model\"] === \"string\"\n ? values[\"benchmark-runtime-model\"]\n : typeof values[\"benchmark-model\"] === \"string\"\n ? values[\"benchmark-model\"]\n : undefined,\n variant: parseActionBenchmarkVariant(\n typeof values[\"benchmark-variant\"] === \"string\"\n ? values[\"benchmark-variant\"]\n : undefined,\n ),\n filter:\n typeof values[\"benchmark-filter\"] === \"string\"\n ? values[\"benchmark-filter\"]\n : undefined,\n runsPerCase: optionalPositiveInteger(\n typeof values[\"runs-per-case\"] === \"string\"\n ? values[\"runs-per-case\"]\n : undefined,\n ),\n dryRun,\n };\n\n return {\n preflightOnly: values[\"preflight-only\"] === true,\n preflightProbe: values[\"probe-endpoints\"] === true,\n outputDir: typeof values.output === \"string\" ? values.output : undefined,\n workspaceRoot:\n typeof values[\"workspace-root\"] === \"string\"\n ? values[\"workspace-root\"]\n : discoverWorkspaceRoot(),\n includeHuggingFace: values[\"skip-hf\"] !== true,\n includeFeed: values[\"skip-feed\"] !== true,\n includeNaturalTrajectories: values[\"skip-natural\"] !== true,\n includeTestTrajectories: values[\"skip-tests\"] !== true,\n includeScenarios: values[\"skip-scenarios\"] !== true,\n includeEvalComparison:\n values[\"skip-eval-comparison\"] !== true &&\n (dryRun || values[\"include-eval-comparison\"] === true),\n includeActionBenchmark: values[\"skip-action-benchmark\"] !== true,\n includeBenchmarkVsCerebras: values[\"skip-cerebras\"] !== true,\n includeEliza1ModelRegistry: values[\"skip-model-registry\"] !== true,\n includeEliza1BundleStage: values[\"skip-bundle-stage\"] !== true,\n includeBenchmarkMatrix: values[\"skip-matrix\"] !== true,\n naturalTrajectories: {\n sanitizedJsonlPath:\n typeof values[\"natural-sanitized-jsonl\"] === \"string\"\n ? values[\"natural-sanitized-jsonl\"]\n : undefined,\n rawJsonlPath:\n typeof values[\"natural-raw-jsonl\"] === \"string\"\n ? values[\"natural-raw-jsonl\"]\n : undefined,\n includeRawJsonl:\n values[\"include-natural-raw\"] === true ||\n typeof values[\"natural-raw-jsonl\"] === \"string\",\n tasks:\n typeof values[\"natural-tasks\"] === \"string\"\n ? (values[\"natural-tasks\"]\n .split(\",\")\n .map((task) => task.trim())\n .filter(Boolean) as TrajectoryTrainingTask[])\n : undefined,\n source: {\n kind: \"training_collection_natural_trajectories\",\n runId:\n typeof values[\"natural-run-id\"] === \"string\"\n ? values[\"natural-run-id\"]\n : undefined,\n metadata: {\n cli: true,\n sanitizedJsonlPath:\n typeof values[\"natural-sanitized-jsonl\"] === \"string\"\n ? values[\"natural-sanitized-jsonl\"]\n : undefined,\n rawJsonlPath:\n typeof values[\"natural-raw-jsonl\"] === \"string\"\n ? values[\"natural-raw-jsonl\"]\n : undefined,\n },\n },\n },\n huggingFace: {\n repoId:\n typeof values[\"hf-repo\"] === \"string\"\n ? values[\"hf-repo\"]\n : \"elizaos/eliza-1-training\",\n revision:\n typeof values[\"hf-revision\"] === \"string\"\n ? values[\"hf-revision\"]\n : \"main\",\n files:\n typeof values[\"hf-files\"] === \"string\"\n ? values[\"hf-files\"]\n .split(\",\")\n .map((file) => file.trim())\n .filter(Boolean)\n : undefined,\n dryRun,\n },\n feed: {\n archetypes:\n typeof values[\"feed-archetypes\"] === \"string\"\n ? values[\"feed-archetypes\"]\n : \"trader\",\n numAgents: optionalPositiveInteger(\n typeof values[\"feed-agents\"] === \"string\"\n ? values[\"feed-agents\"]\n : undefined,\n ),\n ticks: optionalPositiveInteger(\n typeof values[\"feed-ticks\"] === \"string\"\n ? values[\"feed-ticks\"]\n : undefined,\n ),\n parallel: optionalPositiveInteger(\n typeof values[\"feed-parallel\"] === \"string\"\n ? values[\"feed-parallel\"]\n : undefined,\n ),\n cleanup: true,\n dryRun,\n },\n scenarios: {\n scenario:\n typeof values.scenario === \"string\" ? values.scenario : undefined,\n exportNative: true,\n useDeterministicProxy: true,\n dryRun,\n },\n evalComparison: {\n model: elizaOneBenchmarkModelId(tiers[0] ?? \"2b\", \"base\"),\n trainedModelPath: elizaOneBenchmarkModelId(tiers[0] ?? \"2b\", \"trained\"),\n backend: \"cpu\",\n dryRun,\n },\n actionBenchmark,\n actionBenchmarkPair:\n tiers.length === 1 &&\n actionBenchmark.modelId === undefined &&\n actionBenchmark.runtimeModel === undefined &&\n actionBenchmark.variant === undefined\n ? {\n tier: tiers[0],\n base: {\n variant: \"base\",\n modelId: elizaOneBenchmarkModelId(tiers[0], \"base\"),\n runtimeModel: elizaOneBenchmarkModelId(tiers[0], \"base\"),\n },\n trained: {\n variant: \"trained\",\n modelId: elizaOneBenchmarkModelId(tiers[0], \"trained\"),\n runtimeModel: elizaOneBenchmarkModelId(tiers[0], \"trained\"),\n },\n }\n : undefined,\n actionBenchmarkPairs:\n tiers.length > 1 &&\n actionBenchmark.modelId === undefined &&\n actionBenchmark.runtimeModel === undefined &&\n actionBenchmark.variant === undefined\n ? elizaOneActionBenchmarkPairs(tiers)\n : undefined,\n benchmarkVsCerebras: {\n tiers: tiers.join(\",\"),\n benchmark,\n variants: parseCerebrasVariants(\n typeof values[\"cerebras-variants\"] === \"string\"\n ? values[\"cerebras-variants\"]\n : undefined,\n ),\n maxSamples:\n optionalPositiveInteger(\n typeof values[\"cerebras-max-samples\"] === \"string\"\n ? values[\"cerebras-max-samples\"]\n : undefined,\n ) ?? 50,\n dryRun,\n },\n eliza1BundleStage: {\n repoId: \"elizaos/eliza-1\",\n tier: tiers[0] ?? \"2b\",\n localDir: \"/tmp/eliza-1-bundles\",\n maxBytes: 8589934592,\n apply: false,\n },\n };\n}\n\nexport function formatTrainingCollectionPreflightSummary(\n preflight: TrainingCollectionPreflightSummary,\n): string[] {\n const counts = preflight.checks.reduce<Record<string, number>>(\n (acc, check) => {\n acc[check.status] = (acc[check.status] ?? 0) + 1;\n return acc;\n },\n {},\n );\n return [\n `[run-collection:preflight] live=${preflight.liveRequired ? \"yes\" : \"no\"} ok=${counts.ok ?? 0} warning=${counts.warning ?? 0} missing=${counts.missing ?? 0} skipped=${counts.skipped ?? 0}`,\n ...preflight.checks.map(\n (check) =>\n `[run-collection:preflight] ${check.id}=${check.status} ${check.detail}${check.path ? ` path=${check.path}` : \"\"}`,\n ),\n ];\n}\n\nasync function cmdRunCollection(args: string[]) {\n const options = buildRunCollectionOptionsFromCliArgs(args);\n if (options.preflightOnly) {\n const preflight = await buildTrainingCollectionPreflightWithProbes({\n options,\n workspaceRoot: options.workspaceRoot,\n trainingRoot: options.workspaceRoot\n ? join(options.workspaceRoot, \"packages\", \"training\")\n : undefined,\n });\n for (const line of formatTrainingCollectionPreflightSummary(preflight)) {\n console.log(line);\n }\n return;\n }\n const result = await runTrainingCollection(options);\n for (const line of formatRunCollectionSummary(result)) {\n console.log(line);\n }\n}\n\nasync function cmdListCollections(args: string[]) {\n const { values } = parseArgs({\n args,\n options: {\n root: { type: \"string\" },\n limit: { type: \"string\", short: \"n\", default: \"20\" },\n },\n });\n const result = await listTrainingCollections({\n root: values.root,\n limit: optionalPositiveInteger(values.limit),\n });\n for (const line of formatListTrainingCollectionsSummary(result)) {\n console.log(line);\n }\n}\n\nexport function formatListTrainingCollectionsSummary(\n result: ListTrainingCollectionsResult,\n): string[] {\n const lines = [\n `[list-collections] root=${result.root}`,\n `[list-collections] count=${result.collections.length}`,\n ];\n for (const collection of result.collections) {\n const firstEvalComparison = collection.evals.comparisonInventory[0];\n const firstModel =\n collection.training.modelInventory.find(\n (model) => model.model || model.variant,\n ) ?? collection.training.modelInventory[0];\n const sourceSamples = collection.sourceSamples ?? {\n huggingFace: [],\n feed: [],\n natural: [],\n scenarios: [],\n tests: [],\n trainingJsonl: [],\n };\n const sourceSampleEntries = Object.entries(sourceSamples) as Array<\n [\n string,\n Array<{\n trajectoryId?: string | null;\n scenarioId?: string | null;\n title?: string;\n task?: string | null;\n }>,\n ]\n >;\n const sampleCounts = sourceSampleEntries\n .map(([source, samples]) => `${source}:${samples.length}`)\n .join(\",\");\n const sampleExamples = sourceSampleEntries\n .flatMap(([source, samples]) =>\n samples.slice(0, 1).map((sample) => {\n const id =\n sample.trajectoryId ??\n sample.scenarioId ??\n sample.title ??\n \"sample\";\n const task = sample.task ? `:${sample.task}` : \"\";\n return `${source}:${id}${task}`;\n }),\n )\n .slice(0, 4)\n .join(\",\");\n const evalSummary = [\n `artifacts:${collection.evals.evalArtifacts}`,\n `comparisons:${collection.evals.evalComparisons}`,\n `action:${collection.evals.actionBenchmarks}`,\n `matrices:${collection.evals.benchmarkMatrices}`,\n firstEvalComparison\n ? `first:${firstEvalComparison.baseModel ?? \"base\"}->${\n firstEvalComparison.trainedModel ?? \"trained\"\n },improvement:${firstEvalComparison.improvementPercent ?? \"n/a\"}%`\n : null,\n ]\n .filter(Boolean)\n .join(\",\");\n const modelSummary = [\n `runs:${collection.training.trainingRuns}`,\n `models:${collection.training.models}`,\n `inventory:${collection.training.modelInventory.length}`,\n firstModel\n ? `first:${firstModel.tier ?? \"tier\"}/${firstModel.variant ?? \"variant\"}/${\n firstModel.model ?? \"model\"\n },improvement:${firstModel.evalImprovementPercent ?? \"n/a\"}%`\n : null,\n ]\n .filter(Boolean)\n .join(\",\");\n const gapSummary =\n collection.readinessGaps.length > 0\n ? collection.readinessGaps\n .slice(0, 4)\n .map(\n (gap) =>\n `${gap.id}:${gap.status}${gap.recommendedCapability ? `->${gap.recommendedCapability}` : \"\"}${formatRecommendedParamsSuffix(gap.recommendedParams)}`,\n )\n .join(\",\")\n : \"none\";\n lines.push(\n [\n `[list-collections] run=${collection.generatedAt}`,\n `readiness=${collection.readinessStatus}`,\n `ready=${collection.readiness.ready}`,\n `partial=${collection.readiness.partial}`,\n `missing=${collection.readiness.missing}`,\n `artifacts=${collection.artifactCount}`,\n `sources=hf:${collection.dataSources.huggingFaceDatasets},feed:${collection.dataSources.feedDatasets},natural:${collection.dataSources.naturalTrajectoryBundles},scenarios:${collection.dataSources.scenarioRuns},native:${collection.dataSources.scenarioNativeDatasets},tests:${collection.dataSources.testTrajectories},jsonl:${collection.dataSources.trainingJsonlDatasets}`,\n `benchmarks=pairs:${collection.benchmarks.actionBenchmarkPairs},comparisons:${collection.benchmarks.benchmarkComparisons},cases:${collection.benchmarks.caseSamples},tiers:${collection.benchmarks.tiers.join(\",\") || \"none\"}`,\n `baseline=established:${collection.benchmarks.baselineProgress.establishedTiers.join(\",\") || \"none\"},next:${collection.benchmarks.baselineProgress.nextTier ?? \"none\"},remaining:${collection.benchmarks.baselineProgress.remainingTiers.join(\",\") || \"none\"}`,\n `evals=${evalSummary}`,\n `models=${modelSummary}`,\n `samples=${sampleCounts}${sampleExamples ? `,examples:${sampleExamples}` : \"\"}`,\n `artifact-links=source:${collection.sourceArtifacts.length},evidence:${collection.evidenceArtifacts.length}`,\n `gaps=${gapSummary}`,\n `output=${collection.outputDir}`,\n `readme=${collection.readmePath}`,\n `viewer=${collection.analysisIndexHtmlPath}`,\n ].join(\" \"),\n );\n }\n return lines;\n}\n\nfunction formatRecommendedParamsSuffix(\n params: Record<string, unknown> | null | undefined,\n): string {\n if (!params || Object.keys(params).length === 0) return \"\";\n return ` params=${JSON.stringify(params)}`;\n}\n\nfunction compactStepError(error: string | null | undefined): string {\n const normalized = (error ?? \"failed\").replace(/\\s+/g, \" \").trim();\n const priorityPatterns = [\n /Database not initialized\\.[^.]*\\./,\n /DATABASE_URL is required[^.]*\\./,\n /CEREBRAS_API_KEY is required[^.]*\\./,\n ];\n for (const pattern of priorityPatterns) {\n const match = normalized.match(pattern);\n if (match?.[0]) return match[0].slice(0, 220);\n }\n return normalized.slice(0, 220);\n}\n\nexport function formatRunCollectionSummary(\n result: TrainingCollectionRunResult,\n): string[] {\n const evidence = result.manifest.evidence;\n const readiness = evidence.benchmarkReadiness;\n const preflight = evidence.preflight ?? { liveRequired: false, checks: [] };\n const preflightCounts = preflight.checks.reduce<Record<string, number>>(\n (acc, check) => {\n acc[check.status] = (acc[check.status] ?? 0) + 1;\n return acc;\n },\n {},\n );\n const priorityGapIds = [\n \"feed_generation\",\n \"natural_trajectories\",\n \"test_trajectories\",\n \"smallest_model_benchmark\",\n \"all_eliza1_tiers_benchmark\",\n \"cerebras_reference\",\n \"base_trained_improvement\",\n \"all_eliza1_tier_improvements\",\n \"agentic_benchmarks\",\n \"benchmark_matrix\",\n \"benchmark_case_provenance\",\n \"eval_comparison\",\n \"model_tracking\",\n \"readable_source_samples\",\n ];\n const readinessStatusFor = (id: string): \"ready\" | \"partial\" | \"missing\" =>\n evidence.readinessGaps.find((gap) => gap.id === id)?.status ?? \"ready\";\n const comparisonInventory = evidence.benchmarks.comparisonInventory ?? [];\n const dryRunComparisons = comparisonInventory.filter(\n (comparison) => comparison.dryRun === true,\n ).length;\n const liveComparisons = Math.max(\n 0,\n comparisonInventory.length - dryRunComparisons,\n );\n const gaps = [...evidence.readinessGaps]\n .sort((left, right) => {\n const leftIndex = priorityGapIds.indexOf(left.id);\n const rightIndex = priorityGapIds.indexOf(right.id);\n const leftPriority = leftIndex >= 0 ? 0 : 1;\n const rightPriority = rightIndex >= 0 ? 0 : 1;\n if (leftPriority !== rightPriority) return leftPriority - rightPriority;\n if (leftIndex >= 0 && rightIndex >= 0 && leftIndex !== rightIndex) {\n return leftIndex - rightIndex;\n }\n return left.id.localeCompare(right.id);\n })\n .slice(0, 5);\n const sourceSamples = evidence.sourceSamples ?? {\n huggingFace: [],\n feed: [],\n natural: [],\n scenarios: [],\n tests: [],\n trainingJsonl: [],\n };\n const sourceSampleEntries = Object.entries(sourceSamples) as Array<\n [\n string,\n Array<{\n trajectoryId?: string | null;\n title?: string;\n task?: string | null;\n }>,\n ]\n >;\n const sampleCounts = sourceSampleEntries\n .map(([source, samples]) => `${source}=${samples.length}`)\n .join(\" \");\n const sampleExamples = sourceSampleEntries\n .flatMap(([source, samples]) =>\n samples.slice(0, 2).map((sample) => {\n const id = sample.trajectoryId ?? sample.title ?? \"sample\";\n const task = sample.task ? `:${sample.task}` : \"\";\n return `${source}:${id}${task}`;\n }),\n )\n .slice(0, 5)\n .join(\" \");\n const failedSteps = (result.manifest.steps ?? [])\n .filter((step) => step.status === \"failed\")\n .map((step) => `${step.id}:${compactStepError(step.error)}`);\n return [\n `[run-collection] output=${result.outputDir}`,\n `[run-collection] manifest=${result.manifestPath}`,\n `[run-collection] readme=${result.readmePath}`,\n `[run-collection] viewer=${result.manifest.analysis.indexHtmlPath}`,\n `[run-collection] collection-index=${result.collectionIndex.indexHtmlPath} json=${result.collectionIndex.indexJsonPath}`,\n `[run-collection] readiness=${result.manifest.readiness.status} ready=${result.manifest.readiness.ready} partial=${result.manifest.readiness.partial} missing=${result.manifest.readiness.missing}`,\n `[run-collection] preflight live=${preflight.liveRequired ? \"yes\" : \"no\"} ok=${preflightCounts.ok ?? 0} warning=${preflightCounts.warning ?? 0} missing=${preflightCounts.missing ?? 0} skipped=${preflightCounts.skipped ?? 0}`,\n `[run-collection] sources hf=${evidence.dataSources.huggingFaceDatasets} feed=${evidence.dataSources.feedDatasets} natural=${evidence.dataSources.naturalTrajectoryBundles} scenarios=${evidence.dataSources.scenarioRuns} scenario-native=${evidence.dataSources.scenarioNativeDatasets} tests=${evidence.dataSources.testTrajectories} jsonl=${evidence.dataSources.trainingJsonlDatasets}`,\n `[run-collection] evals artifacts=${evidence.evals.evalArtifacts} comparisons=${evidence.evals.evalComparisons} action=${evidence.evals.actionBenchmarks} matrices=${evidence.evals.benchmarkMatrices} models=${evidence.training.models} training-runs=${evidence.training.trainingRuns}`,\n `[run-collection] benchmarks pairs=${evidence.benchmarks.actionBenchmarkPairs} rows=${evidence.benchmarks.benchmarkRows} comparisons=${evidence.benchmarks.benchmarkComparisons} tiers=${evidence.benchmarks.tiers.join(\",\") || \"none\"}`,\n `[run-collection] baseline established=${evidence.benchmarks.baselineProgress.establishedTiers.join(\",\") || \"none\"} next=${evidence.benchmarks.baselineProgress.nextTier ?? \"none\"} remaining=${evidence.benchmarks.baselineProgress.remainingTiers.join(\",\") || \"none\"} smallest=${evidence.benchmarks.baselineProgress.smallestTierEstablished ? \"yes\" : \"no\"} all=${evidence.benchmarks.baselineProgress.allTiersEstablished ? \"yes\" : \"no\"}`,\n `[run-collection] benchmark-comparisons live=${liveComparisons} dry-run=${dryRunComparisons} improvements=${evidence.benchmarks.improvementComparisons.length}`,\n `[run-collection] benchmark-readiness smallest=${readiness.smallestTier} all-tiers=${readiness.allEliza1Tiers} improvement=${readiness.baseTrainedImprovement} all-tier-improvements=${readiness.allEliza1TierImprovements} cerebras=${readiness.cerebrasReference} cases=${readinessStatusFor(\"benchmark_case_provenance\")}`,\n `[run-collection] source-readiness natural=${readinessStatusFor(\"natural_trajectories\")} tests=${readinessStatusFor(\"test_trajectories\")} readable=${readinessStatusFor(\"readable_source_samples\")}`,\n `[run-collection] eval-readiness comparison=${readinessStatusFor(\"eval_comparison\")} models=${readinessStatusFor(\"model_tracking\")}`,\n `[run-collection] sample-readiness readable=${readinessStatusFor(\"readable_source_samples\")}`,\n `[run-collection] source-samples ${sampleCounts}${sampleExamples ? ` examples=${sampleExamples}` : \"\"}`,\n failedSteps.length > 0\n ? `[run-collection] failed-steps ${failedSteps.join(\" | \")}`\n : \"[run-collection] failed-steps none\",\n gaps.length > 0\n ? `[run-collection] readiness-gaps ${gaps\n .map(\n (gap) =>\n `${gap.id}:${gap.status}${gap.recommendedCapability ? `->${gap.recommendedCapability}` : \"\"}${formatRecommendedParamsSuffix(gap.recommendedParams)}`,\n )\n .join(\" \")}`\n : \"[run-collection] readiness-gaps none\",\n ];\n}\n\nasync function cmdValidate(args: string[]) {\n const { values } = parseArgs({\n args,\n options: {\n input: { type: \"string\", short: \"i\" },\n },\n });\n\n if (!values.input) {\n console.error(\"Usage: validate --input <path-to-raw_samples.json>\");\n process.exit(1);\n }\n\n const raw = await readFile(values.input, \"utf-8\");\n const samples: TrainingSample[] = JSON.parse(raw);\n\n console.log(`Loaded ${samples.length} samples from ${values.input}`);\n console.log(\"\");\n\n const report = validateDataset(samples);\n console.log(formatQualityReport(report));\n}\n\nconst OPTIMIZED_PROMPT_TASKS_CLI = [\n \"should_respond\",\n \"context_routing\",\n \"action_planner\",\n \"response\",\n \"media_description\",\n \"view_context\",\n] as const;\ntype OptimizedPromptTaskCli = (typeof OPTIMIZED_PROMPT_TASKS_CLI)[number];\n\nfunction isOptimizedPromptTaskCli(\n value: string,\n): value is OptimizedPromptTaskCli {\n return (OPTIMIZED_PROMPT_TASKS_CLI as readonly string[]).includes(value);\n}\n\n/**\n * Flip the `current` and `previous` symlinks in\n * `<state-dir>/optimized-prompts/<task>/` so the previously-deployed prompt\n * artifact becomes live again. Defers to `OptimizedPromptService.rollback`\n * so the CLI and runtime share one implementation.\n */\nasync function cmdRollbackPrompt(args: string[]) {\n const { values, positionals } = parseArgs({\n args,\n options: {\n task: { type: \"string\" },\n \"store-root\": { type: \"string\" },\n },\n allowPositionals: true,\n });\n\n const taskName =\n (values.task as string | undefined)?.trim() ?? positionals[0]?.trim();\n if (!taskName) {\n console.error(\n `Usage: rollback-prompt <task>\\n task: one of ${OPTIMIZED_PROMPT_TASKS_CLI.join(\", \")}`,\n );\n process.exit(1);\n }\n if (!isOptimizedPromptTaskCli(taskName)) {\n console.error(\n `Unknown task \"${taskName}\". Must be one of: ${OPTIMIZED_PROMPT_TASKS_CLI.join(\", \")}`,\n );\n process.exit(1);\n }\n\n const { OptimizedPromptService } = await import(\"@elizaos/core\");\n const service = new OptimizedPromptService();\n const customRoot = (values[\"store-root\"] as string | undefined)?.trim();\n if (customRoot) {\n service.setStoreRoot(customRoot);\n } else {\n // Match the runtime precedence used by `bun run train`: ELIZA_STATE_DIR\n // then ELIZA_STATE_DIR then ~/.eliza. Stay aligned so `rollback-prompt`\n // operates on the same store the runtime + train CLI write to.\n const stateDir =\n process.env.ELIZA_STATE_DIR?.trim() ||\n process.env.ELIZA_STATE_DIR?.trim() ||\n join(homedir(), \".eliza\");\n service.setStoreRoot(join(stateDir, \"optimized-prompts\"));\n }\n\n await service.refresh();\n try {\n const promptTask =\n taskName === \"context_routing\" ? \"should_respond\" : taskName;\n const newCurrent = await service.rollback(promptTask);\n console.log(\n `[rollback-prompt] task=${taskName} now points at ${newCurrent}`,\n );\n } catch (err) {\n console.error(\n `[rollback-prompt] ${err instanceof Error ? err.message : String(err)}`,\n );\n process.exit(1);\n }\n}\n\n// ==================== Main ====================\n\nasync function main() {\n const args = process.argv.slice(2);\n const command = args[0];\n const restArgs = args.slice(1);\n\n switch (command) {\n case \"generate\":\n await cmdGenerate(restArgs);\n break;\n case \"validate\":\n await cmdValidate(restArgs);\n break;\n case \"compare\":\n await cmdCompare(restArgs);\n break;\n case \"export-trajectories\":\n await cmdExportTrajectories(restArgs);\n break;\n case \"run-collection\":\n await cmdRunCollection(restArgs);\n break;\n case \"list-collections\":\n await cmdListCollections(restArgs);\n break;\n case \"rollback-prompt\":\n await cmdRollbackPrompt(restArgs);\n break;\n default:\n console.log(`Usage: cli.ts <command> [options]\n\nCommands:\n generate Generate synthetic training data\n --variants N Number of variants per blueprint (default: 5)\n --output DIR Output directory (default: ./training-data)\n --concurrency N API call concurrency (default: 5)\n --contexts X,Y Filter to specific contexts\n --decisions X,Y Filter to RESPOND,IGNORE,STOP\n\n validate Validate a generated dataset\n --input PATH Path to raw_samples.json\n\n export-trajectories Re-export raw recorded trajectories to per-task JSONL\n -i, --input DIR Trajectory dir (default: $ELIZA_TRAJECTORY_DIR or ~/.eliza/trajectories)\n -o, --output DIR Output dir (default: ./training-data)\n --max-per-task N Cap examples per task bucket\n\n run-collection Collect HF/feed/natural/test/scenario/eval/benchmark evidence\n -o, --output DIR Output dir (default: training state collection dir)\n --tiers LIST Eliza-1 benchmark tiers, comma-separated, or \"all\" (default: 2b)\n (all expands to ${ELIZA_ONE_BENCHMARK_TIER_LIST})\n --live Execute live external work instead of dry-run defaults\n --preflight-only Print live-readiness checks without collecting artifacts\n --probe-endpoints Probe local OpenAI-compatible endpoints during preflight\n --skip-matrix Skip benchmark matrix generation\n --skip-hf Skip Hugging Face ingest\n --hf-files LIST Comma-separated Hugging Face dataset paths to ingest\n --skip-feed Skip feed generation\n --skip-natural Skip natural trajectory export\n --skip-tests Skip test trajectory collection\n --skip-scenarios Skip scenario trajectories\n --skip-action-benchmark Skip Eliza harness action benchmark execution\n --benchmark-filter LIST Comma-separated action benchmark case ids\n --benchmark-model ID Run action benchmark for one explicit model id\n --benchmark-runtime-model ID Served local/provider model id (defaults to --benchmark-model)\n --benchmark-variant V reference, base, or trained label for the explicit model\n --cerebras-max-samples N Max prompts for benchmark-vs-Cerebras (default: 50)\n --cerebras-variants V Eliza variants for benchmark-vs-Cerebras: trained, base, both (default: both)\n --natural-sanitized-jsonl PATH Existing sanitized app trajectory JSONL\n --natural-raw-jsonl PATH Existing raw app trajectory JSONL\n --natural-run-id ID Run id to record on imported natural trajectories\n --natural-tasks LIST Task buckets for natural trajectory export\n --include-natural-raw Copy raw natural trajectory JSONL into the collection\n --skip-eval-comparison Skip dry-run local eval comparison artifact\n --skip-cerebras Skip benchmark-vs-Cerebras step\n --skip-model-registry Skip persisted Eliza-1 model registry manifests\n --skip-bundle-stage Skip Eliza-1 bundle stage step\n\n list-collections List saved training collection runs\n --root DIR Collection root or a single collection output dir\n -n, --limit N Maximum runs to print (default: 20)\n Prints gaps=<id>:<status>-><capability> params={...}\n\n compare A/B compare two prompts on a trajectory dataset\n --baseline PATH Path to baseline prompt (.txt)\n --variant PATH Path to variant prompt (.txt)\n --dataset PATH Path to JSONL dataset (eliza_native_v1)\n --task NAME should_respond | context_routing | action_planner | response | media_description | view_context\n --scorer KIND agreement | planner_action (default: from --task)\n --mode MODE vs_historical (default) | pairwise\n --max-examples N Cap evaluations\n --tolerance F Pass threshold delta (default: 0.02)\n --temperature F Sampling temperature (default: 0)\n --max-tokens N Per-completion cap (default: 512)\n -o, --output PATH Write JSON result to file\n Exits with code 2 if variant regresses beyond --tolerance.\n\n rollback-prompt Flip the optimized-prompt 'current' and 'previous' symlinks\n <task> Required positional: should_respond | context_routing |\n action_planner | response | media_description |\n view_context\n --store-root DIR Override the optimized-prompts store root (default:\n $ELIZA_STATE_DIR / ~/.eliza/optimized-prompts)\n\nEnvironment:\n ANTHROPIC_API_KEY Use Claude as teacher model\n OPENAI_API_KEY Use GPT-5 as teacher model\n`);\n break;\n }\n}\n\nif (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {\n main().catch((err) => {\n console.error(err);\n process.exit(1);\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,51 @@
1
+ import type { AgentRuntime, Plugin } from "@elizaos/core";
2
+ import { type ContextResolutionSource } from "./context-catalog.js";
3
+ import type { AgentContext } from "./context-types.js";
4
+ type AuditComponentType = "action" | "provider";
5
+ export interface ContextAuditEntry {
6
+ pluginName: string;
7
+ componentType: AuditComponentType;
8
+ componentName: string;
9
+ pluginContexts: AgentContext[];
10
+ effectiveContexts: AgentContext[];
11
+ source: ContextResolutionSource;
12
+ }
13
+ export interface ContextAuditGap {
14
+ pluginName: string;
15
+ componentType: AuditComponentType;
16
+ componentName: string;
17
+ fallbackContexts: AgentContext[];
18
+ message: string;
19
+ }
20
+ export interface ContextAuditCoverageBreakdown {
21
+ component: number;
22
+ plugin: number;
23
+ catalog: number;
24
+ default: number;
25
+ }
26
+ export interface ContextAuditSummary {
27
+ pluginCount: number;
28
+ actionCount: number;
29
+ providerCount: number;
30
+ coverageBySource: {
31
+ actions: ContextAuditCoverageBreakdown;
32
+ providers: ContextAuditCoverageBreakdown;
33
+ overall: ContextAuditCoverageBreakdown;
34
+ };
35
+ contextUsage: Record<AgentContext, {
36
+ actions: number;
37
+ providers: number;
38
+ }>;
39
+ gapCount: number;
40
+ }
41
+ export interface ContextAuditReport extends ContextAuditSummary {
42
+ generatedAt: string;
43
+ actions: ContextAuditEntry[];
44
+ providers: ContextAuditEntry[];
45
+ gaps: ContextAuditGap[];
46
+ }
47
+ export declare function auditPluginContextCoverage(plugins: Plugin[]): ContextAuditReport;
48
+ export declare function auditRuntimeContextCoverage(runtime: Pick<AgentRuntime, "plugins">): ContextAuditReport;
49
+ export declare function hasContextAuditGaps(report: ContextAuditReport): boolean;
50
+ export {};
51
+ //# sourceMappingURL=context-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-audit.d.ts","sourceRoot":"","sources":["../../src/core/context-audit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWvD,KAAK,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,kBAAkB,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,iBAAiB,EAAE,YAAY,EAAE,CAAC;IAClC,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,kBAAkB,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE;QAChB,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;KACxC,CAAC;IACF,YAAY,EAAE,MAAM,CAClB,YAAY,EACZ;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CACF,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAmB,SAAQ,mBAAmB;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,IAAI,EAAE,eAAe,EAAE,CAAC;CACzB;AA8ID,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EAAE,GAChB,kBAAkB,CAmCpB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,GACrC,kBAAkB,CAIpB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAEvE"}
@@ -0,0 +1,166 @@
1
+ import {
2
+ ALL_CONTEXTS,
3
+ resolveActionContextResolution,
4
+ resolveProviderContextResolution
5
+ } from "./context-catalog.js";
6
+ function normalizeContexts(contexts) {
7
+ if (!Array.isArray(contexts)) {
8
+ return [];
9
+ }
10
+ return contexts.filter(
11
+ (context) => typeof context === "string" && context.trim().length > 0
12
+ );
13
+ }
14
+ function createCoverageBreakdown() {
15
+ return {
16
+ component: 0,
17
+ plugin: 0,
18
+ catalog: 0,
19
+ default: 0
20
+ };
21
+ }
22
+ function createContextUsage() {
23
+ return Object.fromEntries(
24
+ ALL_CONTEXTS.map((context) => [
25
+ context,
26
+ {
27
+ actions: 0,
28
+ providers: 0
29
+ }
30
+ ])
31
+ );
32
+ }
33
+ function countCoverage(breakdown, source) {
34
+ breakdown[source] += 1;
35
+ }
36
+ function recordContextUsage(usage, componentType, contexts) {
37
+ for (const context of contexts) {
38
+ if (!usage[context]) {
39
+ usage[context] = {
40
+ actions: 0,
41
+ providers: 0
42
+ };
43
+ }
44
+ if (componentType === "action") {
45
+ usage[context].actions += 1;
46
+ } else {
47
+ usage[context].providers += 1;
48
+ }
49
+ }
50
+ }
51
+ function buildGapMessage(componentType, componentName) {
52
+ return `${componentType} ${componentName} resolved only through the default general-context fallback; add explicit contexts or extend the context catalog`;
53
+ }
54
+ function auditPluginEntries(plugins) {
55
+ const actions = [];
56
+ const providers = [];
57
+ const gaps = [];
58
+ for (const plugin of plugins) {
59
+ const pluginName = plugin.name;
60
+ const pluginContexts = normalizeContexts(
61
+ plugin.contexts
62
+ );
63
+ for (const action of plugin.actions ?? []) {
64
+ const resolution = resolveActionContextResolution(
65
+ action.name,
66
+ normalizeContexts(action.contexts),
67
+ pluginContexts
68
+ );
69
+ const entry = {
70
+ pluginName,
71
+ componentType: "action",
72
+ componentName: action.name,
73
+ pluginContexts,
74
+ effectiveContexts: resolution.contexts,
75
+ source: resolution.source
76
+ };
77
+ actions.push(entry);
78
+ if (resolution.source === "default") {
79
+ gaps.push({
80
+ pluginName,
81
+ componentType: "action",
82
+ componentName: action.name,
83
+ fallbackContexts: resolution.contexts,
84
+ message: buildGapMessage("action", action.name)
85
+ });
86
+ }
87
+ }
88
+ for (const provider of plugin.providers ?? []) {
89
+ const resolution = resolveProviderContextResolution(
90
+ provider.name,
91
+ normalizeContexts(provider.contexts),
92
+ pluginContexts
93
+ );
94
+ const entry = {
95
+ pluginName,
96
+ componentType: "provider",
97
+ componentName: provider.name,
98
+ pluginContexts,
99
+ effectiveContexts: resolution.contexts,
100
+ source: resolution.source
101
+ };
102
+ providers.push(entry);
103
+ if (resolution.source === "default") {
104
+ gaps.push({
105
+ pluginName,
106
+ componentType: "provider",
107
+ componentName: provider.name,
108
+ fallbackContexts: resolution.contexts,
109
+ message: buildGapMessage("provider", provider.name)
110
+ });
111
+ }
112
+ }
113
+ }
114
+ return {
115
+ actions,
116
+ providers,
117
+ gaps
118
+ };
119
+ }
120
+ function auditPluginContextCoverage(plugins) {
121
+ const { actions, providers, gaps } = auditPluginEntries(plugins);
122
+ const actionCoverage = createCoverageBreakdown();
123
+ const providerCoverage = createCoverageBreakdown();
124
+ const overallCoverage = createCoverageBreakdown();
125
+ const contextUsage = createContextUsage();
126
+ for (const action of actions) {
127
+ countCoverage(actionCoverage, action.source);
128
+ countCoverage(overallCoverage, action.source);
129
+ recordContextUsage(contextUsage, "action", action.effectiveContexts);
130
+ }
131
+ for (const provider of providers) {
132
+ countCoverage(providerCoverage, provider.source);
133
+ countCoverage(overallCoverage, provider.source);
134
+ recordContextUsage(contextUsage, "provider", provider.effectiveContexts);
135
+ }
136
+ return {
137
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
138
+ pluginCount: plugins.length,
139
+ actionCount: actions.length,
140
+ providerCount: providers.length,
141
+ coverageBySource: {
142
+ actions: actionCoverage,
143
+ providers: providerCoverage,
144
+ overall: overallCoverage
145
+ },
146
+ contextUsage,
147
+ gapCount: gaps.length,
148
+ actions,
149
+ providers,
150
+ gaps
151
+ };
152
+ }
153
+ function auditRuntimeContextCoverage(runtime) {
154
+ return auditPluginContextCoverage(
155
+ Array.isArray(runtime.plugins) ? runtime.plugins : []
156
+ );
157
+ }
158
+ function hasContextAuditGaps(report) {
159
+ return report.gapCount > 0;
160
+ }
161
+ export {
162
+ auditPluginContextCoverage,
163
+ auditRuntimeContextCoverage,
164
+ hasContextAuditGaps
165
+ };
166
+ //# sourceMappingURL=context-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/context-audit.ts"],"sourcesContent":["import type { AgentRuntime, Plugin } from \"@elizaos/core\";\nimport {\n ALL_CONTEXTS,\n type ContextResolutionSource,\n resolveActionContextResolution,\n resolveProviderContextResolution,\n} from \"./context-catalog.js\";\nimport type { AgentContext } from \"./context-types.js\";\n\n/** Eliza extends elizaOS plugins/actions/providers with optional context hints. */\ntype PluginWithContexts = Plugin & { contexts?: unknown };\ntype ActionWithContexts = NonNullable<Plugin[\"actions\"]>[number] & {\n contexts?: unknown;\n};\ntype ProviderWithContexts = NonNullable<Plugin[\"providers\"]>[number] & {\n contexts?: unknown;\n};\n\ntype AuditComponentType = \"action\" | \"provider\";\n\nexport interface ContextAuditEntry {\n pluginName: string;\n componentType: AuditComponentType;\n componentName: string;\n pluginContexts: AgentContext[];\n effectiveContexts: AgentContext[];\n source: ContextResolutionSource;\n}\n\nexport interface ContextAuditGap {\n pluginName: string;\n componentType: AuditComponentType;\n componentName: string;\n fallbackContexts: AgentContext[];\n message: string;\n}\n\nexport interface ContextAuditCoverageBreakdown {\n component: number;\n plugin: number;\n catalog: number;\n default: number;\n}\n\nexport interface ContextAuditSummary {\n pluginCount: number;\n actionCount: number;\n providerCount: number;\n coverageBySource: {\n actions: ContextAuditCoverageBreakdown;\n providers: ContextAuditCoverageBreakdown;\n overall: ContextAuditCoverageBreakdown;\n };\n contextUsage: Record<\n AgentContext,\n {\n actions: number;\n providers: number;\n }\n >;\n gapCount: number;\n}\n\nexport interface ContextAuditReport extends ContextAuditSummary {\n generatedAt: string;\n actions: ContextAuditEntry[];\n providers: ContextAuditEntry[];\n gaps: ContextAuditGap[];\n}\n\nfunction normalizeContexts(contexts?: unknown): AgentContext[] {\n if (!Array.isArray(contexts)) {\n return [];\n }\n\n return contexts.filter(\n (context): context is AgentContext =>\n typeof context === \"string\" && context.trim().length > 0,\n );\n}\n\nfunction createCoverageBreakdown(): ContextAuditCoverageBreakdown {\n return {\n component: 0,\n plugin: 0,\n catalog: 0,\n default: 0,\n };\n}\n\nfunction createContextUsage(): ContextAuditSummary[\"contextUsage\"] {\n return Object.fromEntries(\n ALL_CONTEXTS.map((context) => [\n context,\n {\n actions: 0,\n providers: 0,\n },\n ]),\n ) as ContextAuditSummary[\"contextUsage\"];\n}\n\nfunction countCoverage(\n breakdown: ContextAuditCoverageBreakdown,\n source: ContextResolutionSource,\n): void {\n breakdown[source] += 1;\n}\n\nfunction recordContextUsage(\n usage: ContextAuditSummary[\"contextUsage\"],\n componentType: AuditComponentType,\n contexts: AgentContext[],\n): void {\n for (const context of contexts) {\n if (!usage[context]) {\n usage[context] = {\n actions: 0,\n providers: 0,\n };\n }\n\n if (componentType === \"action\") {\n usage[context].actions += 1;\n } else {\n usage[context].providers += 1;\n }\n }\n}\n\nfunction buildGapMessage(\n componentType: AuditComponentType,\n componentName: string,\n): string {\n return `${componentType} ${componentName} resolved only through the default general-context fallback; add explicit contexts or extend the context catalog`;\n}\n\nfunction auditPluginEntries(\n plugins: Plugin[],\n): Pick<ContextAuditReport, \"actions\" | \"providers\" | \"gaps\"> {\n const actions: ContextAuditEntry[] = [];\n const providers: ContextAuditEntry[] = [];\n const gaps: ContextAuditGap[] = [];\n\n for (const plugin of plugins) {\n const pluginName = plugin.name;\n const pluginContexts = normalizeContexts(\n (plugin as PluginWithContexts).contexts,\n );\n\n for (const action of plugin.actions ?? []) {\n const resolution = resolveActionContextResolution(\n action.name,\n normalizeContexts((action as ActionWithContexts).contexts),\n pluginContexts,\n );\n const entry: ContextAuditEntry = {\n pluginName,\n componentType: \"action\",\n componentName: action.name,\n pluginContexts,\n effectiveContexts: resolution.contexts,\n source: resolution.source,\n };\n actions.push(entry);\n if (resolution.source === \"default\") {\n gaps.push({\n pluginName,\n componentType: \"action\",\n componentName: action.name,\n fallbackContexts: resolution.contexts,\n message: buildGapMessage(\"action\", action.name),\n });\n }\n }\n\n for (const provider of plugin.providers ?? []) {\n const resolution = resolveProviderContextResolution(\n provider.name,\n normalizeContexts((provider as ProviderWithContexts).contexts),\n pluginContexts,\n );\n const entry: ContextAuditEntry = {\n pluginName,\n componentType: \"provider\",\n componentName: provider.name,\n pluginContexts,\n effectiveContexts: resolution.contexts,\n source: resolution.source,\n };\n providers.push(entry);\n if (resolution.source === \"default\") {\n gaps.push({\n pluginName,\n componentType: \"provider\",\n componentName: provider.name,\n fallbackContexts: resolution.contexts,\n message: buildGapMessage(\"provider\", provider.name),\n });\n }\n }\n }\n\n return {\n actions,\n providers,\n gaps,\n };\n}\n\nexport function auditPluginContextCoverage(\n plugins: Plugin[],\n): ContextAuditReport {\n const { actions, providers, gaps } = auditPluginEntries(plugins);\n const actionCoverage = createCoverageBreakdown();\n const providerCoverage = createCoverageBreakdown();\n const overallCoverage = createCoverageBreakdown();\n const contextUsage = createContextUsage();\n\n for (const action of actions) {\n countCoverage(actionCoverage, action.source);\n countCoverage(overallCoverage, action.source);\n recordContextUsage(contextUsage, \"action\", action.effectiveContexts);\n }\n\n for (const provider of providers) {\n countCoverage(providerCoverage, provider.source);\n countCoverage(overallCoverage, provider.source);\n recordContextUsage(contextUsage, \"provider\", provider.effectiveContexts);\n }\n\n return {\n generatedAt: new Date().toISOString(),\n pluginCount: plugins.length,\n actionCount: actions.length,\n providerCount: providers.length,\n coverageBySource: {\n actions: actionCoverage,\n providers: providerCoverage,\n overall: overallCoverage,\n },\n contextUsage,\n gapCount: gaps.length,\n actions,\n providers,\n gaps,\n };\n}\n\nexport function auditRuntimeContextCoverage(\n runtime: Pick<AgentRuntime, \"plugins\">,\n): ContextAuditReport {\n return auditPluginContextCoverage(\n Array.isArray(runtime.plugins) ? runtime.plugins : [],\n );\n}\n\nexport function hasContextAuditGaps(report: ContextAuditReport): boolean {\n return report.gapCount > 0;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Canonical context catalog for all known elizaOS actions, providers, and plugins.
3
+ *
4
+ * This catalog maps every known action and provider to one or more AgentContext
5
+ * categories. It is used by:
6
+ * 1. The v5 messageHandler context-routing prompt
7
+ * 2. The synthetic dataset generator (to scope scenarios per context)
8
+ * 3. The planner (to filter actions/providers by active context)
9
+ *
10
+ * When adding a new plugin/action, add its entry here.
11
+ */
12
+ import { type AgentContext } from "./context-types.js";
13
+ export type ContextResolutionSource = "component" | "plugin" | "catalog" | "default";
14
+ /** Mapping from action name to its contexts. */
15
+ export declare const ACTION_CONTEXT_MAP: Record<string, AgentContext[]>;
16
+ /** Mapping from provider name to its contexts. */
17
+ export declare const PROVIDER_CONTEXT_MAP: Record<string, AgentContext[]>;
18
+ /** All canonical contexts. */
19
+ export declare const ALL_CONTEXTS: AgentContext[];
20
+ export declare function resolveActionContextResolution(actionName: string, actionContexts?: AgentContext[], pluginContexts?: AgentContext[]): {
21
+ contexts: AgentContext[];
22
+ source: ContextResolutionSource;
23
+ };
24
+ export declare function resolveProviderContextResolution(providerName: string, providerContexts?: AgentContext[], pluginContexts?: AgentContext[]): {
25
+ contexts: AgentContext[];
26
+ source: ContextResolutionSource;
27
+ };
28
+ /**
29
+ * Resolve the effective contexts for an action.
30
+ * Priority: action.contexts > plugin.contexts > catalog lookup > ["general"]
31
+ */
32
+ export declare function resolveActionContexts(actionName: string, actionContexts?: AgentContext[], pluginContexts?: AgentContext[]): AgentContext[];
33
+ /**
34
+ * Resolve the effective contexts for a provider.
35
+ */
36
+ export declare function resolveProviderContexts(providerName: string, providerContexts?: AgentContext[], pluginContexts?: AgentContext[]): AgentContext[];
37
+ /**
38
+ * Given active contexts, return all actions that should be available.
39
+ */
40
+ export declare function filterActionsByContexts(activeContexts: AgentContext[], allActions: Array<{
41
+ name: string;
42
+ contexts?: AgentContext[];
43
+ }>, pluginContexts?: Record<string, AgentContext[]>): Array<{
44
+ name: string;
45
+ contexts?: AgentContext[];
46
+ }>;
47
+ //# sourceMappingURL=context-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-catalog.d.ts","sourceRoot":"","sources":["../../src/core/context-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAavE,MAAM,MAAM,uBAAuB,GAC/B,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAEd,gDAAgD;AAChD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAiH7D,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CA+C/D,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,YAAY,EAAE,YAAY,EAAwB,CAAC;AAoChE,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,YAAY,EAAE,EAC/B,cAAc,CAAC,EAAE,YAAY,EAAE,GAC9B;IACD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,uBAAuB,CAAC;CACjC,CA6BA;AAED,wBAAgB,gCAAgC,CAC9C,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EACjC,cAAc,CAAC,EAAE,YAAY,EAAE,GAC9B;IACD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,uBAAuB,CAAC;CACjC,CA6BA;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,YAAY,EAAE,EAC/B,cAAc,CAAC,EAAE,YAAY,EAAE,GAC9B,YAAY,EAAE,CAMhB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,YAAY,EAAE,EACjC,cAAc,CAAC,EAAE,YAAY,EAAE,GAC9B,YAAY,EAAE,CAMhB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,YAAY,EAAE,EAC9B,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,EAC9D,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,GAC9C,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAapD"}