@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.
- package/dist/backends/native.d.ts +96 -0
- package/dist/backends/native.d.ts.map +1 -0
- package/dist/backends/native.js +308 -0
- package/dist/backends/native.js.map +1 -0
- package/dist/cli/train.d.ts +22 -0
- package/dist/cli/train.d.ts.map +1 -0
- package/dist/cli/train.js +219 -0
- package/dist/cli/train.js.map +1 -0
- package/dist/core/action-benchmark-runner.d.ts +55 -0
- package/dist/core/action-benchmark-runner.d.ts.map +1 -0
- package/dist/core/action-benchmark-runner.js +341 -0
- package/dist/core/action-benchmark-runner.js.map +1 -0
- package/dist/core/artifact-store.d.ts +72 -0
- package/dist/core/artifact-store.d.ts.map +1 -0
- package/dist/core/artifact-store.js +50 -0
- package/dist/core/artifact-store.js.map +1 -0
- package/dist/core/benchmark-matrix-artifact.d.ts +102 -0
- package/dist/core/benchmark-matrix-artifact.d.ts.map +1 -0
- package/dist/core/benchmark-matrix-artifact.js +381 -0
- package/dist/core/benchmark-matrix-artifact.js.map +1 -0
- package/dist/core/benchmark-vs-cerebras-runner.d.ts +37 -0
- package/dist/core/benchmark-vs-cerebras-runner.d.ts.map +1 -0
- package/dist/core/benchmark-vs-cerebras-runner.js +151 -0
- package/dist/core/benchmark-vs-cerebras-runner.js.map +1 -0
- package/dist/core/cerebras-eval-model.d.ts +54 -0
- package/dist/core/cerebras-eval-model.d.ts.map +1 -0
- package/dist/core/cerebras-eval-model.js +249 -0
- package/dist/core/cerebras-eval-model.js.map +1 -0
- package/dist/core/cli.d.ts +15 -0
- package/dist/core/cli.d.ts.map +1 -0
- package/dist/core/cli.js +1003 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/context-audit.d.ts +51 -0
- package/dist/core/context-audit.d.ts.map +1 -0
- package/dist/core/context-audit.js +166 -0
- package/dist/core/context-audit.js.map +1 -0
- package/dist/core/context-catalog.d.ts +47 -0
- package/dist/core/context-catalog.d.ts.map +1 -0
- package/dist/core/context-catalog.js +269 -0
- package/dist/core/context-catalog.js.map +1 -0
- package/dist/core/context-types.d.ts +3 -0
- package/dist/core/context-types.d.ts.map +1 -0
- package/dist/core/context-types.js +18 -0
- package/dist/core/context-types.js.map +1 -0
- package/dist/core/dataset-generator.d.ts +135 -0
- package/dist/core/dataset-generator.d.ts.map +1 -0
- package/dist/core/dataset-generator.js +895 -0
- package/dist/core/dataset-generator.js.map +1 -0
- package/dist/core/eliza1-benchmark-recipe.d.ts +18 -0
- package/dist/core/eliza1-benchmark-recipe.d.ts.map +1 -0
- package/dist/core/eliza1-benchmark-recipe.js +64 -0
- package/dist/core/eliza1-benchmark-recipe.js.map +1 -0
- package/dist/core/eliza1-bundle-stager.d.ts +57 -0
- package/dist/core/eliza1-bundle-stager.d.ts.map +1 -0
- package/dist/core/eliza1-bundle-stager.js +149 -0
- package/dist/core/eliza1-bundle-stager.js.map +1 -0
- package/dist/core/ensure-cron-job.d.ts +53 -0
- package/dist/core/ensure-cron-job.d.ts.map +1 -0
- package/dist/core/ensure-cron-job.js +51 -0
- package/dist/core/ensure-cron-job.js.map +1 -0
- package/dist/core/eval-comparison-artifact.d.ts +72 -0
- package/dist/core/eval-comparison-artifact.d.ts.map +1 -0
- package/dist/core/eval-comparison-artifact.js +281 -0
- package/dist/core/eval-comparison-artifact.js.map +1 -0
- package/dist/core/feed-generation-runner.d.ts +37 -0
- package/dist/core/feed-generation-runner.d.ts.map +1 -0
- package/dist/core/feed-generation-runner.js +232 -0
- package/dist/core/feed-generation-runner.js.map +1 -0
- package/dist/core/html-escape.d.ts +5 -0
- package/dist/core/html-escape.d.ts.map +1 -0
- package/dist/core/html-escape.js +11 -0
- package/dist/core/html-escape.js.map +1 -0
- package/dist/core/huggingface-dataset-ingest.d.ts +52 -0
- package/dist/core/huggingface-dataset-ingest.d.ts.map +1 -0
- package/dist/core/huggingface-dataset-ingest.js +134 -0
- package/dist/core/huggingface-dataset-ingest.js.map +1 -0
- package/dist/core/index.d.ts +29 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +204 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/privacy-filter.d.ts +95 -0
- package/dist/core/privacy-filter.d.ts.map +1 -0
- package/dist/core/privacy-filter.js +324 -0
- package/dist/core/privacy-filter.js.map +1 -0
- package/dist/core/promotion-gate.d.ts +117 -0
- package/dist/core/promotion-gate.d.ts.map +1 -0
- package/dist/core/promotion-gate.js +85 -0
- package/dist/core/promotion-gate.js.map +1 -0
- package/dist/core/promotion-persist.d.ts +116 -0
- package/dist/core/promotion-persist.d.ts.map +1 -0
- package/dist/core/promotion-persist.js +93 -0
- package/dist/core/promotion-persist.js.map +1 -0
- package/dist/core/prompt-compare.d.ts +99 -0
- package/dist/core/prompt-compare.d.ts.map +1 -0
- package/dist/core/prompt-compare.js +210 -0
- package/dist/core/prompt-compare.js.map +1 -0
- package/dist/core/replay-validator.d.ts +136 -0
- package/dist/core/replay-validator.d.ts.map +1 -0
- package/dist/core/replay-validator.js +312 -0
- package/dist/core/replay-validator.js.map +1 -0
- package/dist/core/roleplay-executor.d.ts +123 -0
- package/dist/core/roleplay-executor.d.ts.map +1 -0
- package/dist/core/roleplay-executor.js +675 -0
- package/dist/core/roleplay-executor.js.map +1 -0
- package/dist/core/roleplay-trajectories.d.ts +54 -0
- package/dist/core/roleplay-trajectories.d.ts.map +1 -0
- package/dist/core/roleplay-trajectories.js +88 -0
- package/dist/core/roleplay-trajectories.js.map +1 -0
- package/dist/core/scenario-blueprints.d.ts +62 -0
- package/dist/core/scenario-blueprints.d.ts.map +1 -0
- package/dist/core/scenario-blueprints.js +850 -0
- package/dist/core/scenario-blueprints.js.map +1 -0
- package/dist/core/scenario-runner.d.ts +36 -0
- package/dist/core/scenario-runner.d.ts.map +1 -0
- package/dist/core/scenario-runner.js +216 -0
- package/dist/core/scenario-runner.js.map +1 -0
- package/dist/core/skill-scoring-cron.d.ts +57 -0
- package/dist/core/skill-scoring-cron.d.ts.map +1 -0
- package/dist/core/skill-scoring-cron.js +180 -0
- package/dist/core/skill-scoring-cron.js.map +1 -0
- package/dist/core/test-trajectory-collector.d.ts +37 -0
- package/dist/core/test-trajectory-collector.d.ts.map +1 -0
- package/dist/core/test-trajectory-collector.js +225 -0
- package/dist/core/test-trajectory-collector.js.map +1 -0
- package/dist/core/track-c-queue-task.d.ts +37 -0
- package/dist/core/track-c-queue-task.d.ts.map +1 -0
- package/dist/core/track-c-queue-task.js +104 -0
- package/dist/core/track-c-queue-task.js.map +1 -0
- package/dist/core/training-analysis-index.d.ts +104 -0
- package/dist/core/training-analysis-index.d.ts.map +1 -0
- package/dist/core/training-analysis-index.js +3297 -0
- package/dist/core/training-analysis-index.js.map +1 -0
- package/dist/core/training-collection-runner.d.ts +508 -0
- package/dist/core/training-collection-runner.d.ts.map +1 -0
- package/dist/core/training-collection-runner.js +2299 -0
- package/dist/core/training-collection-runner.js.map +1 -0
- package/dist/core/training-config.d.ts +52 -0
- package/dist/core/training-config.d.ts.map +1 -0
- package/dist/core/training-config.js +117 -0
- package/dist/core/training-config.js.map +1 -0
- package/dist/core/training-orchestrator.d.ts +112 -0
- package/dist/core/training-orchestrator.d.ts.map +1 -0
- package/dist/core/training-orchestrator.js +729 -0
- package/dist/core/training-orchestrator.js.map +1 -0
- package/dist/core/training-readiness-report.d.ts +52 -0
- package/dist/core/training-readiness-report.d.ts.map +1 -0
- package/dist/core/training-readiness-report.js +765 -0
- package/dist/core/training-readiness-report.js.map +1 -0
- package/dist/core/trajectory-consumer.d.ts +15 -0
- package/dist/core/trajectory-consumer.d.ts.map +1 -0
- package/dist/core/trajectory-consumer.js +61 -0
- package/dist/core/trajectory-consumer.js.map +1 -0
- package/dist/core/trajectory-export-bundle.d.ts +95 -0
- package/dist/core/trajectory-export-bundle.d.ts.map +1 -0
- package/dist/core/trajectory-export-bundle.js +561 -0
- package/dist/core/trajectory-export-bundle.js.map +1 -0
- package/dist/core/trajectory-export-cron.d.ts +57 -0
- package/dist/core/trajectory-export-cron.d.ts.map +1 -0
- package/dist/core/trajectory-export-cron.js +170 -0
- package/dist/core/trajectory-export-cron.js.map +1 -0
- package/dist/core/trajectory-hf-upload.d.ts +50 -0
- package/dist/core/trajectory-hf-upload.d.ts.map +1 -0
- package/dist/core/trajectory-hf-upload.js +111 -0
- package/dist/core/trajectory-hf-upload.js.map +1 -0
- package/dist/core/trajectory-task-datasets.d.ts +62 -0
- package/dist/core/trajectory-task-datasets.d.ts.map +1 -0
- package/dist/core/trajectory-task-datasets.js +427 -0
- package/dist/core/trajectory-task-datasets.js.map +1 -0
- package/dist/core/wait-for-service.d.ts +25 -0
- package/dist/core/wait-for-service.d.ts.map +1 -0
- package/dist/core/wait-for-service.js +19 -0
- package/dist/core/wait-for-service.js.map +1 -0
- package/dist/core/workspace-runtime.d.ts +4 -0
- package/dist/core/workspace-runtime.d.ts.map +1 -0
- package/dist/core/workspace-runtime.js +25 -0
- package/dist/core/workspace-runtime.js.map +1 -0
- package/dist/dspy/artifact.d.ts +54 -0
- package/dist/dspy/artifact.d.ts.map +1 -0
- package/dist/dspy/artifact.js +61 -0
- package/dist/dspy/artifact.js.map +1 -0
- package/dist/dspy/chain-of-thought.d.ts +27 -0
- package/dist/dspy/chain-of-thought.d.ts.map +1 -0
- package/dist/dspy/chain-of-thought.js +43 -0
- package/dist/dspy/chain-of-thought.js.map +1 -0
- package/dist/dspy/examples.d.ts +72 -0
- package/dist/dspy/examples.d.ts.map +1 -0
- package/dist/dspy/examples.js +105 -0
- package/dist/dspy/examples.js.map +1 -0
- package/dist/dspy/index.d.ts +15 -0
- package/dist/dspy/index.d.ts.map +1 -0
- package/dist/dspy/index.js +40 -0
- package/dist/dspy/index.js.map +1 -0
- package/dist/dspy/lm-adapter.d.ts +100 -0
- package/dist/dspy/lm-adapter.d.ts.map +1 -0
- package/dist/dspy/lm-adapter.js +81 -0
- package/dist/dspy/lm-adapter.js.map +1 -0
- package/dist/dspy/optimizers/dspy-bootstrap-fewshot.d.ts +23 -0
- package/dist/dspy/optimizers/dspy-bootstrap-fewshot.d.ts.map +1 -0
- package/dist/dspy/optimizers/dspy-bootstrap-fewshot.js +85 -0
- package/dist/dspy/optimizers/dspy-bootstrap-fewshot.js.map +1 -0
- package/dist/dspy/optimizers/dspy-copro.d.ts +29 -0
- package/dist/dspy/optimizers/dspy-copro.d.ts.map +1 -0
- package/dist/dspy/optimizers/dspy-copro.js +141 -0
- package/dist/dspy/optimizers/dspy-copro.js.map +1 -0
- package/dist/dspy/optimizers/dspy-mipro.d.ts +37 -0
- package/dist/dspy/optimizers/dspy-mipro.d.ts.map +1 -0
- package/dist/dspy/optimizers/dspy-mipro.js +194 -0
- package/dist/dspy/optimizers/dspy-mipro.js.map +1 -0
- package/dist/dspy/optimizers/index.d.ts +5 -0
- package/dist/dspy/optimizers/index.d.ts.map +1 -0
- package/dist/dspy/optimizers/index.js +11 -0
- package/dist/dspy/optimizers/index.js.map +1 -0
- package/dist/dspy/optimizers/types.d.ts +39 -0
- package/dist/dspy/optimizers/types.d.ts.map +1 -0
- package/dist/dspy/optimizers/types.js +1 -0
- package/dist/dspy/optimizers/types.js.map +1 -0
- package/dist/dspy/predict.d.ts +49 -0
- package/dist/dspy/predict.d.ts.map +1 -0
- package/dist/dspy/predict.js +73 -0
- package/dist/dspy/predict.js.map +1 -0
- package/dist/dspy/signature.d.ts +88 -0
- package/dist/dspy/signature.d.ts.map +1 -0
- package/dist/dspy/signature.js +205 -0
- package/dist/dspy/signature.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/optimizers/bootstrap-fewshot.d.ts +42 -0
- package/dist/optimizers/bootstrap-fewshot.d.ts.map +1 -0
- package/dist/optimizers/bootstrap-fewshot.js +92 -0
- package/dist/optimizers/bootstrap-fewshot.js.map +1 -0
- package/dist/optimizers/gepa.d.ts +63 -0
- package/dist/optimizers/gepa.d.ts.map +1 -0
- package/dist/optimizers/gepa.js +232 -0
- package/dist/optimizers/gepa.js.map +1 -0
- package/dist/optimizers/index.d.ts +7 -0
- package/dist/optimizers/index.d.ts.map +1 -0
- package/dist/optimizers/index.js +51 -0
- package/dist/optimizers/index.js.map +1 -0
- package/dist/optimizers/instruction-search.d.ts +39 -0
- package/dist/optimizers/instruction-search.d.ts.map +1 -0
- package/dist/optimizers/instruction-search.js +108 -0
- package/dist/optimizers/instruction-search.js.map +1 -0
- package/dist/optimizers/prompt-evolution.d.ts +39 -0
- package/dist/optimizers/prompt-evolution.d.ts.map +1 -0
- package/dist/optimizers/prompt-evolution.js +101 -0
- package/dist/optimizers/prompt-evolution.js.map +1 -0
- package/dist/optimizers/scoring.d.ts +139 -0
- package/dist/optimizers/scoring.d.ts.map +1 -0
- package/dist/optimizers/scoring.js +299 -0
- package/dist/optimizers/scoring.js.map +1 -0
- package/dist/optimizers/types.d.ts +105 -0
- package/dist/optimizers/types.d.ts.map +1 -0
- package/dist/optimizers/types.js +1 -0
- package/dist/optimizers/types.js.map +1 -0
- package/dist/register-runtime.d.ts +3 -0
- package/dist/register-runtime.d.ts.map +1 -0
- package/dist/register-runtime.js +60 -0
- package/dist/register-runtime.js.map +1 -0
- package/dist/register-terminal-view.d.ts +15 -0
- package/dist/register-terminal-view.d.ts.map +1 -0
- package/dist/register-terminal-view.js +31 -0
- package/dist/register-terminal-view.js.map +1 -0
- package/dist/routes/experience-routes.d.ts +21 -0
- package/dist/routes/experience-routes.d.ts.map +1 -0
- package/dist/routes/experience-routes.js +513 -0
- package/dist/routes/experience-routes.js.map +1 -0
- package/dist/routes/index.d.ts +5 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +17 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/training-routes.d.ts +10 -0
- package/dist/routes/training-routes.d.ts.map +1 -0
- package/dist/routes/training-routes.js +1239 -0
- package/dist/routes/training-routes.js.map +1 -0
- package/dist/routes/training-vast-routes.d.ts +35 -0
- package/dist/routes/training-vast-routes.d.ts.map +1 -0
- package/dist/routes/training-vast-routes.js +249 -0
- package/dist/routes/training-vast-routes.js.map +1 -0
- package/dist/routes/trajectory-routes.d.ts +19 -0
- package/dist/routes/trajectory-routes.d.ts.map +1 -0
- package/dist/routes/trajectory-routes.js +1122 -0
- package/dist/routes/trajectory-routes.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +63 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/training-backend-check.d.ts +8 -0
- package/dist/services/training-backend-check.d.ts.map +1 -0
- package/dist/services/training-backend-check.js +31 -0
- package/dist/services/training-backend-check.js.map +1 -0
- package/dist/services/training-service-like.d.ts +40 -0
- package/dist/services/training-service-like.d.ts.map +1 -0
- package/dist/services/training-service-like.js +1 -0
- package/dist/services/training-service-like.js.map +1 -0
- package/dist/services/training-service-registry.d.ts +4 -0
- package/dist/services/training-service-registry.d.ts.map +1 -0
- package/dist/services/training-service-registry.js +12 -0
- package/dist/services/training-service-registry.js.map +1 -0
- package/dist/services/training-service.d.ts +59 -0
- package/dist/services/training-service.d.ts.map +1 -0
- package/dist/services/training-service.js +154 -0
- package/dist/services/training-service.js.map +1 -0
- package/dist/services/training-trigger.d.ts +177 -0
- package/dist/services/training-trigger.d.ts.map +1 -0
- package/dist/services/training-trigger.js +300 -0
- package/dist/services/training-trigger.js.map +1 -0
- package/dist/services/training-vast-service.d.ts +149 -0
- package/dist/services/training-vast-service.d.ts.map +1 -0
- package/dist/services/training-vast-service.js +648 -0
- package/dist/services/training-vast-service.js.map +1 -0
- package/dist/services/vast-inference-stats.d.ts +37 -0
- package/dist/services/vast-inference-stats.d.ts.map +1 -0
- package/dist/services/vast-inference-stats.js +81 -0
- package/dist/services/vast-inference-stats.js.map +1 -0
- package/dist/services/vast-job-store.d.ts +74 -0
- package/dist/services/vast-job-store.d.ts.map +1 -0
- package/dist/services/vast-job-store.js +194 -0
- package/dist/services/vast-job-store.js.map +1 -0
- package/dist/services/vast-subprocess.d.ts +27 -0
- package/dist/services/vast-subprocess.d.ts.map +1 -0
- package/dist/services/vast-subprocess.js +78 -0
- package/dist/services/vast-subprocess.js.map +1 -0
- package/dist/setup-routes.d.ts +17 -0
- package/dist/setup-routes.d.ts.map +1 -0
- package/dist/setup-routes.js +319 -0
- package/dist/setup-routes.js.map +1 -0
- package/dist/ui/FineTuningSpatialView.d.ts +49 -0
- package/dist/ui/FineTuningSpatialView.d.ts.map +1 -0
- package/dist/ui/FineTuningSpatialView.js +154 -0
- package/dist/ui/FineTuningSpatialView.js.map +1 -0
- package/dist/ui/FineTuningView.d.ts +7 -0
- package/dist/ui/FineTuningView.d.ts.map +1 -0
- package/dist/ui/FineTuningView.helpers.d.ts +17 -0
- package/dist/ui/FineTuningView.helpers.d.ts.map +1 -0
- package/dist/ui/FineTuningView.helpers.js +30 -0
- package/dist/ui/FineTuningView.helpers.js.map +1 -0
- package/dist/ui/FineTuningView.interact.d.ts +2 -0
- package/dist/ui/FineTuningView.interact.d.ts.map +1 -0
- package/dist/ui/FineTuningView.interact.js +300 -0
- package/dist/ui/FineTuningView.interact.js.map +1 -0
- package/dist/ui/FineTuningView.js +4653 -0
- package/dist/ui/FineTuningView.js.map +1 -0
- package/dist/ui/fine-tuning-panels.d.ts +100 -0
- package/dist/ui/fine-tuning-panels.d.ts.map +1 -0
- package/dist/ui/fine-tuning-panels.helpers.d.ts +19 -0
- package/dist/ui/fine-tuning-panels.helpers.d.ts.map +1 -0
- package/dist/ui/fine-tuning-panels.helpers.js +77 -0
- package/dist/ui/fine-tuning-panels.helpers.js.map +1 -0
- package/dist/ui/fine-tuning-panels.js +928 -0
- package/dist/ui/fine-tuning-panels.js.map +1 -0
- package/dist/ui/index.d.ts +5 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +5 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/training-view-bundle.d.ts +3 -0
- package/dist/ui/training-view-bundle.d.ts.map +1 -0
- package/dist/ui/training-view-bundle.js +7 -0
- package/dist/ui/training-view-bundle.js.map +1 -0
- package/dist/views/bundle.js +5312 -0
- package/dist/views/bundle.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","names":[],"sources":["../../src/core/eliza1-benchmark-recipe.ts","../../src/ui/FineTuningView.helpers.ts","../../src/ui/FineTuningView.interact.ts","../../src/ui/fine-tuning-panels.helpers.ts","../../src/ui/fine-tuning-panels.tsx","../../src/ui/FineTuningView.tsx"],"sourcesContent":["export const ELIZA_ONE_BENCHMARK_TIERS = [\n \"2b\",\n \"4b\",\n \"9b\",\n \"27b\",\n] as const;\n\nexport type ElizaOneBenchmarkTier = (typeof ELIZA_ONE_BENCHMARK_TIERS)[number];\nexport type ElizaOneBenchmarkVariant = \"base\" | \"trained\";\n\nexport const ELIZA_ONE_BENCHMARK_TIER_LIST =\n ELIZA_ONE_BENCHMARK_TIERS.join(\",\");\n\nexport function normalizeElizaOneBenchmarkTier(\n value: string | null | undefined,\n): string | undefined {\n const raw = value?.trim();\n if (!raw) return undefined;\n const normalized = raw.toLowerCase();\n if (normalized.includes(\"27b\")) return \"27b\";\n if (normalized.includes(\"9b\")) return \"9b\";\n if (normalized.includes(\"4b\")) return \"4b\";\n if (normalized.includes(\"2b\")) return \"2b\";\n return raw;\n}\n\nexport function canonicalElizaOneTierSort(\n left: string | null | undefined,\n right: string | null | undefined,\n): number {\n const leftValue = normalizeElizaOneBenchmarkTier(left) ?? \"\";\n const rightValue = normalizeElizaOneBenchmarkTier(right) ?? \"\";\n const leftIndex = ELIZA_ONE_BENCHMARK_TIERS.indexOf(\n leftValue as ElizaOneBenchmarkTier,\n );\n const rightIndex = ELIZA_ONE_BENCHMARK_TIERS.indexOf(\n rightValue as ElizaOneBenchmarkTier,\n );\n if (leftIndex !== -1 || rightIndex !== -1) {\n if (leftIndex === -1) return 1;\n if (rightIndex === -1) return -1;\n return leftIndex - rightIndex;\n }\n return leftValue.localeCompare(rightValue);\n}\n\nexport function parseElizaOneBenchmarkTiers(\n value: string | undefined,\n fallback: readonly string[] = [\"2b\"],\n): string[] {\n const raw = value?.trim();\n const tiers = (raw ? raw.split(/\\r?\\n|,/) : [...fallback])\n .map((tier) => tier.trim())\n .filter(Boolean);\n if (tiers.some((tier) => tier.toLowerCase() === \"all\")) {\n return [...ELIZA_ONE_BENCHMARK_TIERS];\n }\n return Array.from(\n new Set(tiers.map((tier) => normalizeElizaOneBenchmarkTier(tier) ?? tier)),\n );\n}\n\nexport function elizaOneBenchmarkModelId(\n tier: string | undefined,\n variant: ElizaOneBenchmarkVariant,\n): string | undefined {\n const normalizedTier = normalizeElizaOneBenchmarkTier(tier);\n return normalizedTier ? `eliza-1-${normalizedTier}-${variant}` : undefined;\n}\n\nexport function elizaOneActionBenchmarkPairs(\n tiers: readonly string[] = ELIZA_ONE_BENCHMARK_TIERS,\n): Array<{\n tier: string;\n base: { variant: \"base\" };\n trained: { variant: \"trained\" };\n}> {\n return tiers.map((tier) => ({\n tier,\n base: { variant: \"base\" },\n trained: { variant: \"trained\" },\n }));\n}\n","// Shared pure helpers for the Fine-Tuning view, used by FineTuningView (in\n// FineTuningView.tsx) and the `interact` capability handler (in\n// FineTuningView.interact.ts). Kept out of the .tsx so that file exports only\n// React components and stays Fast-Refresh-compatible in dev.\nimport type {\n TrainingDatasetRecord,\n TrainingJobRecord,\n TrainingModelRecord,\n TrainingStatus,\n TrainingTrajectoryList,\n} from \"@elizaos/ui/api\";\nimport { client } from \"@elizaos/ui/api\";\nimport { parseElizaOneBenchmarkTiers } from \"../core/eliza1-benchmark-recipe.js\";\n\nexport function asArray<T>(value: T[] | null | undefined): T[] {\n return Array.isArray(value) ? value : [];\n}\n\nexport function parseCollectionTierList(value: string): string[] {\n return parseElizaOneBenchmarkTiers(value, []);\n}\n\nexport async function loadTrainingTuiState(): Promise<{\n status: TrainingStatus;\n trajectories: TrainingTrajectoryList;\n datasets: { datasets: TrainingDatasetRecord[] };\n jobs: { jobs: TrainingJobRecord[] };\n models: { models: TrainingModelRecord[] };\n}> {\n const [status, trajectories, datasets, jobs, models] = await Promise.all([\n client.getTrainingStatus(),\n client.listTrainingTrajectories({ limit: 25, offset: 0 }),\n client.listTrainingDatasets(),\n client.listTrainingJobs(),\n client.listTrainingModels(),\n ]);\n return {\n status,\n trajectories,\n datasets: { datasets: asArray(datasets.datasets) },\n jobs: { jobs: asArray(jobs.jobs) },\n models: { models: asArray(models.models) },\n };\n}\n","// View-bundle `interact` capability handler, split out of FineTuningView.tsx so\n// that file exports only React components and stays Fast-Refresh-compatible\n// (Vite would full-reload a component file that also exports a plain function).\n// The view bundle re-exports `interact` via ./training-view-bundle.ts.\nimport {\n client,\n type StartTrainingOptions,\n type WriteBenchmarkMatrixFromArtifactsOptions,\n} from \"@elizaos/ui/api\";\nimport { elizaOneActionBenchmarkPairs } from \"../core/eliza1-benchmark-recipe.js\";\nimport {\n loadTrainingTuiState,\n parseCollectionTierList,\n} from \"./FineTuningView.helpers\";\n\nexport async function interact(\n capability: string,\n params?: Record<string, unknown>,\n): Promise<unknown> {\n if (capability === \"terminal-training-state\") {\n return { viewType: \"tui\", ...(await loadTrainingTuiState()) };\n }\n\n if (capability === \"terminal-training-trajectory\") {\n const trajectoryId =\n typeof params?.trajectoryId === \"string\"\n ? params.trajectoryId.trim()\n : \"\";\n if (!trajectoryId) throw new Error(\"trajectoryId is required\");\n return {\n viewType: \"tui\",\n ...(await client.getTrainingTrajectory(trajectoryId)),\n };\n }\n\n if (capability === \"terminal-training-build-dataset\") {\n return {\n viewType: \"tui\",\n ...(await client.buildTrainingDataset({\n limit: typeof params?.limit === \"number\" ? params.limit : undefined,\n minLlmCallsPerTrajectory:\n typeof params?.minLlmCallsPerTrajectory === \"number\"\n ? params.minLlmCallsPerTrajectory\n : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-start-job\") {\n const options: StartTrainingOptions = {};\n if (typeof params?.datasetId === \"string\")\n options.datasetId = params.datasetId;\n if (\n params?.backend === \"mlx\" ||\n params?.backend === \"cuda\" ||\n params?.backend === \"cpu\"\n ) {\n options.backend = params.backend;\n }\n if (typeof params?.model === \"string\") options.model = params.model;\n if (typeof params?.iterations === \"number\")\n options.iterations = params.iterations;\n if (typeof params?.batchSize === \"number\")\n options.batchSize = params.batchSize;\n if (typeof params?.learningRate === \"number\") {\n options.learningRate = params.learningRate;\n }\n return {\n viewType: \"tui\",\n ...(await client.startTrainingJob(options)),\n };\n }\n\n if (capability === \"terminal-training-cancel-job\") {\n const jobId = typeof params?.jobId === \"string\" ? params.jobId.trim() : \"\";\n if (!jobId) throw new Error(\"jobId is required\");\n return { viewType: \"tui\", ...(await client.cancelTrainingJob(jobId)) };\n }\n\n if (capability === \"terminal-training-import-model\") {\n const modelId =\n typeof params?.modelId === \"string\" ? params.modelId.trim() : \"\";\n if (!modelId) throw new Error(\"modelId is required\");\n return {\n viewType: \"tui\",\n ...(await client.importTrainingModelToOllama(modelId, {\n modelName:\n typeof params?.modelName === \"string\" ? params.modelName : undefined,\n baseModel:\n typeof params?.baseModel === \"string\" ? params.baseModel : undefined,\n ollamaUrl:\n typeof params?.ollamaUrl === \"string\" ? params.ollamaUrl : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-activate-model\") {\n const modelId =\n typeof params?.modelId === \"string\" ? params.modelId.trim() : \"\";\n if (!modelId) throw new Error(\"modelId is required\");\n return {\n viewType: \"tui\",\n ...(await client.activateTrainingModel(\n modelId,\n typeof params?.providerModel === \"string\"\n ? params.providerModel\n : undefined,\n )),\n };\n }\n\n if (capability === \"terminal-training-benchmark-model\") {\n const modelId =\n typeof params?.modelId === \"string\" ? params.modelId.trim() : \"\";\n if (!modelId) throw new Error(\"modelId is required\");\n return {\n viewType: \"tui\",\n ...(await client.benchmarkTrainingModel(modelId)),\n };\n }\n\n if (capability === \"terminal-training-build-analysis-index\") {\n return {\n viewType: \"tui\",\n ...(await client.buildTrainingAnalysisIndex({\n roots: Array.isArray(params?.roots)\n ? params.roots.filter(\n (root): root is string => typeof root === \"string\",\n )\n : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n maxDepth:\n typeof params?.maxDepth === \"number\" ? params.maxDepth : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-build-readiness-report\") {\n return {\n viewType: \"tui\",\n ...(await client.buildTrainingReadinessReport({\n roots: Array.isArray(params?.roots)\n ? params.roots.filter(\n (entry): entry is string => typeof entry === \"string\",\n )\n : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n maxDepth:\n typeof params?.maxDepth === \"number\" ? params.maxDepth : undefined,\n reportOutputDir:\n typeof params?.reportOutputDir === \"string\"\n ? params.reportOutputDir\n : undefined,\n reportPath:\n typeof params?.reportPath === \"string\"\n ? params.reportPath\n : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-ingest-hf-dataset\") {\n return {\n viewType: \"tui\",\n ...(await client.ingestHuggingFaceTrainingDataset({\n repoId: typeof params?.repoId === \"string\" ? params.repoId : undefined,\n revision:\n typeof params?.revision === \"string\" ? params.revision : undefined,\n files: Array.isArray(params?.files)\n ? params.files.filter(\n (file): file is string => typeof file === \"string\",\n )\n : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n token: typeof params?.token === \"string\" ? params.token : undefined,\n dryRun: params?.dryRun === true,\n })),\n };\n }\n\n if (capability === \"terminal-training-feed-generate\") {\n return {\n viewType: \"tui\",\n ...(await client.runFeedTrainingGeneration({\n workspaceRoot:\n typeof params?.workspaceRoot === \"string\"\n ? params.workspaceRoot\n : undefined,\n bun: typeof params?.bun === \"string\" ? params.bun : undefined,\n archetypes:\n typeof params?.archetypes === \"string\"\n ? params.archetypes\n : undefined,\n numAgents:\n typeof params?.numAgents === \"number\" ? params.numAgents : undefined,\n ticks: typeof params?.ticks === \"number\" ? params.ticks : undefined,\n parallel:\n typeof params?.parallel === \"number\" ? params.parallel : undefined,\n managerId:\n typeof params?.managerId === \"string\" ? params.managerId : undefined,\n cleanup: params?.cleanup === true,\n dryRun: params?.dryRun === true,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-run-scenarios\") {\n return {\n viewType: \"tui\",\n ...(await client.runTrainingScenarios({\n workspaceRoot:\n typeof params?.workspaceRoot === \"string\"\n ? params.workspaceRoot\n : undefined,\n bun: typeof params?.bun === \"string\" ? params.bun : undefined,\n scenarioDir:\n typeof params?.scenarioDir === \"string\"\n ? params.scenarioDir\n : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n runId: typeof params?.runId === \"string\" ? params.runId : undefined,\n scenario:\n typeof params?.scenario === \"string\" ? params.scenario : undefined,\n fileGlobs: Array.isArray(params?.fileGlobs)\n ? params.fileGlobs.filter(\n (glob): glob is string => typeof glob === \"string\",\n )\n : undefined,\n exportNative:\n typeof params?.exportNative === \"boolean\"\n ? params.exportNative\n : undefined,\n useDeterministicProxy:\n typeof params?.useDeterministicProxy === \"boolean\"\n ? params.useDeterministicProxy\n : undefined,\n dryRun: params?.dryRun === true,\n })),\n };\n }\n\n if (capability === \"terminal-training-run-eval-comparison\") {\n const backend =\n params?.backend === \"cpu\" ||\n params?.backend === \"mlx\" ||\n params?.backend === \"cuda\"\n ? params.backend\n : undefined;\n return {\n viewType: \"tui\",\n ...(await client.runTrainingLocalEvalComparison({\n trainingRoot:\n typeof params?.trainingRoot === \"string\"\n ? params.trainingRoot\n : undefined,\n python: typeof params?.python === \"string\" ? params.python : undefined,\n manifestPath:\n typeof params?.manifestPath === \"string\"\n ? params.manifestPath\n : undefined,\n model: typeof params?.model === \"string\" ? params.model : undefined,\n trainedModelPath:\n typeof params?.trainedModelPath === \"string\"\n ? params.trainedModelPath\n : undefined,\n backend,\n promptFile:\n typeof params?.promptFile === \"string\"\n ? params.promptFile\n : undefined,\n maxTokens:\n typeof params?.maxTokens === \"number\" ? params.maxTokens : undefined,\n systemPrompt:\n typeof params?.systemPrompt === \"string\"\n ? params.systemPrompt\n : undefined,\n outputPath:\n typeof params?.outputPath === \"string\"\n ? params.outputPath\n : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n dryRun: params?.dryRun === true,\n })),\n };\n }\n\n if (capability === \"terminal-training-run-collection\") {\n return {\n viewType: \"tui\",\n ...(await client.runTrainingCollection({\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n workspaceRoot:\n typeof params?.workspaceRoot === \"string\"\n ? params.workspaceRoot\n : undefined,\n preflightOnly:\n typeof params?.preflightOnly === \"boolean\"\n ? params.preflightOnly\n : undefined,\n preflightProbe:\n typeof params?.preflightProbe === \"boolean\"\n ? params.preflightProbe\n : undefined,\n includeHuggingFace:\n typeof params?.includeHuggingFace === \"boolean\"\n ? params.includeHuggingFace\n : undefined,\n includeFeed:\n typeof params?.includeFeed === \"boolean\"\n ? params.includeFeed\n : undefined,\n includeNaturalTrajectories:\n typeof params?.includeNaturalTrajectories === \"boolean\"\n ? params.includeNaturalTrajectories\n : undefined,\n includeTestTrajectories:\n typeof params?.includeTestTrajectories === \"boolean\"\n ? params.includeTestTrajectories\n : undefined,\n includeScenarios:\n typeof params?.includeScenarios === \"boolean\"\n ? params.includeScenarios\n : undefined,\n includeEvalComparison:\n typeof params?.includeEvalComparison === \"boolean\"\n ? params.includeEvalComparison\n : undefined,\n includeActionBenchmark:\n typeof params?.includeActionBenchmark === \"boolean\"\n ? params.includeActionBenchmark\n : undefined,\n includeBenchmarkVsCerebras:\n typeof params?.includeBenchmarkVsCerebras === \"boolean\"\n ? params.includeBenchmarkVsCerebras\n : undefined,\n includeEliza1ModelRegistry:\n typeof params?.includeEliza1ModelRegistry === \"boolean\"\n ? params.includeEliza1ModelRegistry\n : undefined,\n includeEliza1BundleStage:\n typeof params?.includeEliza1BundleStage === \"boolean\"\n ? params.includeEliza1BundleStage\n : undefined,\n includeBenchmarkMatrix:\n typeof params?.includeBenchmarkMatrix === \"boolean\"\n ? params.includeBenchmarkMatrix\n : undefined,\n huggingFace:\n params?.huggingFace &&\n typeof params.huggingFace === \"object\" &&\n !Array.isArray(params.huggingFace)\n ? params.huggingFace\n : undefined,\n feed:\n params?.feed &&\n typeof params.feed === \"object\" &&\n !Array.isArray(params.feed)\n ? params.feed\n : undefined,\n naturalTrajectories:\n params?.naturalTrajectories &&\n typeof params.naturalTrajectories === \"object\" &&\n !Array.isArray(params.naturalTrajectories)\n ? params.naturalTrajectories\n : undefined,\n testTrajectories:\n params?.testTrajectories &&\n typeof params.testTrajectories === \"object\" &&\n !Array.isArray(params.testTrajectories)\n ? params.testTrajectories\n : undefined,\n scenarios:\n params?.scenarios &&\n typeof params.scenarios === \"object\" &&\n !Array.isArray(params.scenarios)\n ? params.scenarios\n : undefined,\n evalComparison:\n params?.evalComparison &&\n typeof params.evalComparison === \"object\" &&\n !Array.isArray(params.evalComparison)\n ? params.evalComparison\n : undefined,\n actionBenchmark:\n params?.actionBenchmark &&\n typeof params.actionBenchmark === \"object\" &&\n !Array.isArray(params.actionBenchmark)\n ? params.actionBenchmark\n : undefined,\n actionBenchmarkPair:\n params?.actionBenchmarkPair &&\n typeof params.actionBenchmarkPair === \"object\" &&\n !Array.isArray(params.actionBenchmarkPair)\n ? params.actionBenchmarkPair\n : undefined,\n actionBenchmarkPairs: Array.isArray(params?.actionBenchmarkPairs)\n ? params.actionBenchmarkPairs.filter(\n (item) =>\n item !== null &&\n typeof item === \"object\" &&\n !Array.isArray(item),\n )\n : typeof params?.actionBenchmarkPairs === \"string\"\n ? elizaOneActionBenchmarkPairs(\n parseCollectionTierList(params.actionBenchmarkPairs),\n )\n : undefined,\n benchmarkVsCerebras:\n params?.benchmarkVsCerebras &&\n typeof params.benchmarkVsCerebras === \"object\" &&\n !Array.isArray(params.benchmarkVsCerebras)\n ? params.benchmarkVsCerebras\n : undefined,\n eliza1BundleStage:\n params?.eliza1BundleStage &&\n typeof params.eliza1BundleStage === \"object\" &&\n !Array.isArray(params.eliza1BundleStage)\n ? params.eliza1BundleStage\n : undefined,\n benchmarkMatrix:\n params?.benchmarkMatrix &&\n typeof params.benchmarkMatrix === \"object\" &&\n !Array.isArray(params.benchmarkMatrix)\n ? (params.benchmarkMatrix as WriteBenchmarkMatrixFromArtifactsOptions)\n : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-write-benchmark-matrix\") {\n const rows = Array.isArray(params?.rows) ? params.rows : [];\n return {\n viewType: \"tui\",\n ...(await client.writeTrainingBenchmarkMatrix({\n rows: rows.filter(\n (\n row,\n ): row is {\n modelId: string;\n benchmark: string;\n score: number;\n variant: \"reference\" | \"base\" | \"trained\";\n } =>\n row !== null &&\n typeof row === \"object\" &&\n !Array.isArray(row) &&\n typeof (row as { modelId?: unknown }).modelId === \"string\" &&\n typeof (row as { benchmark?: unknown }).benchmark === \"string\" &&\n typeof (row as { score?: unknown }).score === \"number\" &&\n ((row as { variant?: unknown }).variant === \"reference\" ||\n (row as { variant?: unknown }).variant === \"base\" ||\n (row as { variant?: unknown }).variant === \"trained\"),\n ),\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n referenceModelId:\n typeof params?.referenceModelId === \"string\"\n ? params.referenceModelId\n : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-run-benchmark-vs-cerebras\") {\n const benchmark =\n params?.benchmark === \"clawbench\" ||\n params?.benchmark === \"eliza_harness_action_selection\" ||\n params?.benchmark === \"hermes\" ||\n params?.benchmark === \"all\"\n ? params.benchmark\n : undefined;\n const variants =\n params?.variants === \"trained\" ||\n params?.variants === \"base\" ||\n params?.variants === \"both\"\n ? params.variants\n : undefined;\n return {\n viewType: \"tui\",\n ...(await client.runTrainingBenchmarkVsCerebras({\n tiers: typeof params?.tiers === \"string\" ? params.tiers : undefined,\n benchmark,\n variants,\n maxSamples:\n typeof params?.maxSamples === \"number\"\n ? params.maxSamples\n : undefined,\n dryRun: params?.dryRun === true,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n resultsDb:\n typeof params?.resultsDb === \"string\" ? params.resultsDb : undefined,\n trainedModelPath:\n typeof params?.trainedModelPath === \"string\"\n ? params.trainedModelPath\n : undefined,\n datasetVersion:\n typeof params?.datasetVersion === \"string\"\n ? params.datasetVersion\n : undefined,\n codeCommit:\n typeof params?.codeCommit === \"string\"\n ? params.codeCommit\n : undefined,\n matrixOutputDir:\n typeof params?.matrixOutputDir === \"string\"\n ? params.matrixOutputDir\n : undefined,\n })),\n };\n }\n\n if (capability === \"terminal-training-stage-eliza1-bundle\") {\n return {\n viewType: \"tui\",\n ...(await client.stageEliza1Bundle({\n trainingRoot:\n typeof params?.trainingRoot === \"string\"\n ? params.trainingRoot\n : undefined,\n python: typeof params?.python === \"string\" ? params.python : undefined,\n repoId: typeof params?.repoId === \"string\" ? params.repoId : undefined,\n tier: typeof params?.tier === \"string\" ? params.tier : undefined,\n localDir:\n typeof params?.localDir === \"string\" ? params.localDir : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n maxBytes:\n typeof params?.maxBytes === \"number\" ? params.maxBytes : undefined,\n apply: params?.apply === true,\n })),\n };\n }\n\n if (capability === \"terminal-training-run-action-benchmark\") {\n return {\n viewType: \"tui\",\n ...(await client.runTrainingActionBenchmark({\n workspaceRoot:\n typeof params?.workspaceRoot === \"string\"\n ? params.workspaceRoot\n : undefined,\n bun: typeof params?.bun === \"string\" ? params.bun : undefined,\n outputDir:\n typeof params?.outputDir === \"string\" ? params.outputDir : undefined,\n useMocks:\n typeof params?.useMocks === \"boolean\" ? params.useMocks : undefined,\n forceTrajectoryCapture:\n params?.forceTrajectoryCapture === false ? false : undefined,\n filter: typeof params?.filter === \"string\" ? params.filter : undefined,\n runsPerCase:\n typeof params?.runsPerCase === \"number\"\n ? params.runsPerCase\n : undefined,\n provider:\n typeof params?.provider === \"string\" ? params.provider : undefined,\n modelId:\n typeof params?.modelId === \"string\" ? params.modelId : undefined,\n runtimeModel:\n typeof params?.runtimeModel === \"string\"\n ? params.runtimeModel\n : undefined,\n smallModel:\n typeof params?.smallModel === \"string\"\n ? params.smallModel\n : undefined,\n largeModel:\n typeof params?.largeModel === \"string\"\n ? params.largeModel\n : undefined,\n baseUrl:\n typeof params?.baseUrl === \"string\" ? params.baseUrl : undefined,\n variant:\n params?.variant === \"reference\" ||\n params?.variant === \"base\" ||\n params?.variant === \"trained\"\n ? params.variant\n : undefined,\n tier: typeof params?.tier === \"string\" ? params.tier : undefined,\n benchmark:\n typeof params?.benchmark === \"string\" ? params.benchmark : undefined,\n datasetVersion:\n typeof params?.datasetVersion === \"string\"\n ? params.datasetVersion\n : undefined,\n codeCommit:\n typeof params?.codeCommit === \"string\"\n ? params.codeCommit\n : undefined,\n dryRun: params?.dryRun === true,\n })),\n };\n }\n\n throw new Error(`Unsupported capability \"${capability}\"`);\n}\n","// Non-component constants, formatters, and the training-event parser used by the\n// fine-tuning panels and the dashboard view. Kept out of fine-tuning-panels.tsx\n// so that file exports only React components and stays Fast-Refresh-compatible.\nimport type { StreamEventEnvelope, TrainingStreamEvent } from \"@elizaos/ui/api\";\n\nexport type TranslateFn = (\n key: string,\n options?: Record<string, unknown>,\n) => string;\n\n/* ── Constants ─────────────────────────────────────────────────────── */\n\nexport const TRAINING_EVENT_KINDS = new Set<TrainingStreamEvent[\"kind\"]>([\n \"job_started\",\n \"job_progress\",\n \"job_log\",\n \"job_completed\",\n \"job_failed\",\n \"job_cancelled\",\n \"dataset_built\",\n \"model_activated\",\n \"model_imported\",\n]);\n\nexport const FINE_TUNING_PAGE_CLASS = \"space-y-6 pb-8\";\nexport const FINE_TUNING_SECTION_CLASS =\n \"rounded-2xl border border-border/60 bg-card/70 p-5 shadow-sm ring-1 ring-border/15\";\nexport const FINE_TUNING_SECTION_HEADER_CLASS =\n \"mb-4 flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between\";\nexport const FINE_TUNING_SECTION_KICKER_CLASS =\n \"text-xs-tight font-semibold uppercase tracking-[0.16em] text-muted/70\";\nexport const FINE_TUNING_PANEL_CLASS =\n \"rounded-2xl border border-border/45 bg-bg/20 shadow-sm\";\nexport const FINE_TUNING_PANEL_HEADER_CLASS =\n \"px-3 py-2 text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\";\nexport const FINE_TUNING_ACTION_CLASS =\n \"h-10 rounded-xl px-3 text-xs shadow-sm hover:border-accent disabled:opacity-50\";\nexport const FINE_TUNING_STATUS_CARD_CLASS =\n \"rounded-xl border border-border/35 bg-bg/30 px-3 py-3 shadow-sm\";\n\n/* ── Formatting helpers ────────────────────────────────────────────── */\n\nexport function formatDate(value: string | null): string {\n if (!value) return \"—\";\n const parsed = new Date(value);\n if (Number.isNaN(parsed.getTime())) return value;\n return parsed.toLocaleString();\n}\n\nexport function formatProgress(value: number): string {\n const bounded = Math.max(0, Math.min(1, value));\n return `${Math.round(bounded * 100)}%`;\n}\n\n/* ── Event parsing ─────────────────────────────────────────────────── */\n\nexport function asTrainingEvent(envelope: {\n type?: string;\n payload?: unknown;\n}): TrainingStreamEvent | null {\n if (envelope.type !== \"training_event\") return null;\n const payloadValue = envelope.payload;\n if (!payloadValue || typeof payloadValue !== \"object\") return null;\n const payload = payloadValue as Partial<TrainingStreamEvent>;\n if (typeof payload.kind !== \"string\") return null;\n if (!TRAINING_EVENT_KINDS.has(payload.kind as TrainingStreamEvent[\"kind\"])) {\n return null;\n }\n if (typeof payload.ts !== \"number\") return null;\n if (typeof payload.message !== \"string\") return null;\n return {\n kind: payload.kind as TrainingStreamEvent[\"kind\"],\n ts: payload.ts,\n message: payload.message,\n jobId: typeof payload.jobId === \"string\" ? payload.jobId : undefined,\n modelId: typeof payload.modelId === \"string\" ? payload.modelId : undefined,\n datasetId:\n typeof payload.datasetId === \"string\" ? payload.datasetId : undefined,\n progress:\n typeof payload.progress === \"number\" ? payload.progress : undefined,\n phase: typeof payload.phase === \"string\" ? payload.phase : undefined,\n };\n}\n\n/* ── Availability summary ──────────────────────────────────────────── */\n\nexport function summarizeAvailability(\n reason: string | undefined,\n t: TranslateFn,\n): string {\n if (!reason) return t(\"finetuningview.Unavailable\");\n if (reason === \"runtime_not_started\") {\n return t(\"finetuningview.RuntimeNotStarted\");\n }\n if (reason === \"trajectories_table_missing\") {\n return t(\"finetuningview.NoTrajectoriesTableFound\");\n }\n return reason;\n}\n","import { useAgentElement } from \"@elizaos/ui/agent-surface\";\nimport type {\n TrainingDatasetRecord,\n TrainingJobRecord,\n TrainingModelRecord,\n TrainingStreamEvent,\n TrainingTrajectoryDetail,\n TrainingTrajectoryList,\n} from \"@elizaos/ui/api\";\nimport { Button, Input } from \"@elizaos/ui/components\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectValue,\n} from \"@elizaos/ui/components/ui/select\";\nimport { SettingsControls } from \"@elizaos/ui/components/ui/settings-controls\";\nimport { formatTime } from \"@elizaos/ui/utils\";\nimport { memo, type ReactNode } from \"react\";\nimport {\n FINE_TUNING_ACTION_CLASS,\n FINE_TUNING_PANEL_CLASS,\n FINE_TUNING_SECTION_CLASS,\n FINE_TUNING_SECTION_HEADER_CLASS,\n formatDate,\n formatProgress,\n summarizeAvailability,\n type TranslateFn,\n} from \"./fine-tuning-panels.helpers\";\n\nconst FILTER_INPUT_CLASS =\n \"h-10 rounded-sm border-border/50 bg-bg/80 text-sm text-txt \";\n\n/* ── Agent-surface helpers ─────────────────────────────────────────── */\n\nfunction AgentActionButton({\n agentId,\n label,\n group,\n description,\n variant = \"outline\",\n size = \"sm\",\n className,\n disabled,\n onClick,\n children,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n variant?: \"outline\" | \"ghost\" | \"link\";\n size?: \"sm\";\n className: string;\n disabled?: boolean;\n onClick: () => void;\n children: ReactNode;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: agentId,\n role: \"button\",\n label,\n group,\n description,\n onActivate: onClick,\n });\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={className}\n disabled={disabled}\n onClick={onClick}\n aria-label={label}\n {...agentProps}\n >\n {children}\n </Button>\n );\n}\n\nfunction AgentTextInput({\n agentId,\n label,\n group,\n description,\n value,\n onChange,\n placeholder,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLInputElement>({\n id: agentId,\n role: \"text-input\",\n label,\n group,\n description,\n getValue: () => value,\n onFill: onChange,\n });\n return (\n <Input\n ref={ref}\n className={FILTER_INPUT_CLASS}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={label}\n {...agentProps}\n />\n );\n}\n\nfunction AgentSelect({\n agentId,\n label,\n group,\n description,\n value,\n onValueChange,\n options,\n placeholder,\n children,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n value: string;\n onValueChange: (value: string) => void;\n options: readonly string[];\n placeholder?: string;\n children: ReactNode;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: agentId,\n role: \"select\",\n label,\n group,\n description,\n options,\n getValue: () => value,\n onFill: (next) => onValueChange(next),\n });\n return (\n <Select value={value} onValueChange={onValueChange}>\n <SettingsControls.SelectTrigger\n ref={ref}\n variant=\"toolbar\"\n aria-label={label}\n {...agentProps}\n >\n <SelectValue placeholder={placeholder} />\n </SettingsControls.SelectTrigger>\n {children}\n </Select>\n );\n}\n\ntype TrajectorySummary = TrainingTrajectoryList[\"trajectories\"][number];\n\nconst TrajectoryListItem = memo(function TrajectoryListItem({\n trajectory,\n onSelectTrajectory,\n t,\n}: {\n trajectory: TrajectorySummary;\n onSelectTrajectory: (trajectoryId: string) => void;\n t: TranslateFn;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: `trajectory-item-${trajectory.trajectoryId}`,\n role: \"list-item\",\n label: `Trajectory ${trajectory.trajectoryId}`,\n group: \"trajectory-list\",\n description: \"Inspect this trajectory\",\n onActivate: () => onSelectTrajectory(trajectory.trajectoryId),\n });\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n className=\"w-full justify-start rounded-none px-3 py-3 text-left text-xs hover:bg-bg-hover\"\n onClick={() => onSelectTrajectory(trajectory.trajectoryId)}\n {...agentProps}\n >\n <div className=\"font-mono\">{trajectory.trajectoryId}</div>\n <div className=\"text-muted mt-1\">\n {t(\"finetuningview.Calls\")} {trajectory.llmCallCount}{\" \"}\n {t(\"finetuningview.Reward\")} {trajectory.totalReward ?? \"n/a\"} ·{\" \"}\n {formatDate(trajectory.createdAt)}\n </div>\n </Button>\n );\n});\n\nconst DatasetRadioItem = memo(function DatasetRadioItem({\n dataset,\n selectedDatasetId,\n setSelectedDatasetId,\n t,\n}: {\n dataset: TrainingDatasetRecord;\n selectedDatasetId: string;\n setSelectedDatasetId: (value: string) => void;\n t: TranslateFn;\n}) {\n const checked = selectedDatasetId === dataset.id;\n const { ref, agentProps } = useAgentElement<HTMLInputElement>({\n id: `dataset-select-${dataset.id}`,\n role: \"list-item\",\n label: `Select dataset ${dataset.id}`,\n group: \"dataset-list\",\n description: \"Choose this dataset for training\",\n status: checked ? \"active\" : \"inactive\",\n onActivate: () => setSelectedDatasetId(dataset.id),\n });\n return (\n <label className=\"flex min-h-touch cursor-pointer items-center gap-3 rounded-xl border border-border/35 bg-bg/20 px-3 py-3 text-sm transition-colors hover:border-border/55 hover:bg-bg/35\">\n <input\n ref={ref}\n type=\"radio\"\n name=\"dataset-select\"\n checked={checked}\n onChange={() => setSelectedDatasetId(dataset.id)}\n aria-current={checked ? \"true\" : undefined}\n {...agentProps}\n />\n <div className=\"min-w-0 flex-1\">\n <div className=\"font-mono text-sm text-txt\">{dataset.id}</div>\n <div className=\"mt-1 text-xs text-muted\">\n {dataset.sampleCount} {t(\"finetuningview.samples\")}{\" \"}\n {dataset.trajectoryCount} {t(\"finetuningview.trajectories\")}\n </div>\n </div>\n </label>\n );\n});\n\nconst JobListItem = memo(function JobListItem({\n job,\n selectedJobId,\n setSelectedJobId,\n cancellingJobId,\n onCancelJob,\n t,\n}: {\n job: TrainingJobRecord;\n selectedJobId: string;\n setSelectedJobId: (value: string) => void;\n cancellingJobId: string;\n onCancelJob: (jobId: string) => void;\n t: TranslateFn;\n}) {\n const { ref: selectRef, agentProps: selectProps } =\n useAgentElement<HTMLButtonElement>({\n id: `job-item-${job.id}`,\n role: \"list-item\",\n label: `Select job ${job.id}`,\n group: \"job-list\",\n description: \"Inspect this training job's logs\",\n status: selectedJobId === job.id ? \"active\" : \"inactive\",\n onActivate: () => setSelectedJobId(job.id),\n });\n const cancellable = job.status === \"running\" || job.status === \"queued\";\n const { ref: cancelRef, agentProps: cancelProps } =\n useAgentElement<HTMLButtonElement>({\n id: `job-cancel-${job.id}`,\n role: \"button\",\n label: `Cancel job ${job.id}`,\n group: \"job-list\",\n description: \"Cancel this training job\",\n onActivate: () => onCancelJob(job.id),\n });\n return (\n <div\n className={`px-3 py-3 text-sm ${\n selectedJobId === job.id ? \"bg-bg-hover\" : \"\"\n }`}\n >\n <div className=\"flex items-center justify-between gap-2\">\n <Button\n ref={selectRef}\n variant=\"link\"\n className=\"h-auto w-auto justify-start p-0 text-left font-mono text-sm\"\n onClick={() => setSelectedJobId(job.id)}\n {...selectProps}\n >\n {job.id}\n </Button>\n {cancellable && (\n <Button\n ref={cancelRef}\n variant=\"outline\"\n size=\"sm\"\n className=\"h-8 rounded-xl border-danger/35 px-3 text-xs-tight text-danger shadow-sm hover:border-danger hover:bg-danger/10 disabled:opacity-50\"\n disabled={cancellingJobId === job.id}\n onClick={() => onCancelJob(job.id)}\n {...cancelProps}\n >\n {cancellingJobId === job.id\n ? t(\"finetuningview.Cancelling\")\n : t(\"finetuningview.Cancel\")}\n </Button>\n )}\n </div>\n <div className=\"mt-1 text-xs text-muted\">\n {job.status} · {formatProgress(job.progress)} · {job.phase}\n </div>\n <div className=\"text-xs text-muted\">{formatDate(job.createdAt)}</div>\n </div>\n );\n});\n\nconst ModelListItem = memo(function ModelListItem({\n model,\n selectedModelId,\n setSelectedModelId,\n t,\n}: {\n model: TrainingModelRecord;\n selectedModelId: string;\n setSelectedModelId: (value: string) => void;\n t: TranslateFn;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: `model-item-${model.id}`,\n role: \"list-item\",\n label: `Select model ${model.id}`,\n group: \"model-list\",\n description: \"Choose this trained model for actions\",\n status: selectedModelId === model.id ? \"active\" : \"inactive\",\n onActivate: () => setSelectedModelId(model.id),\n });\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n className={`w-full justify-start rounded-none px-3 py-3 text-left text-sm ${\n selectedModelId === model.id ? \"bg-bg-hover\" : \"hover:bg-bg-hover\"\n }`}\n onClick={() => setSelectedModelId(model.id)}\n {...agentProps}\n >\n <div className=\"font-mono\">\n {model.id} {model.active ? t(\"finetuningview.ActiveIndicator\") : \"\"}\n </div>\n <div className=\"mt-1 text-xs text-muted\">\n {t(\"finetuningview.backend\")} {model.backend}\n {model.ollamaModel ? ` · ollama: ${model.ollamaModel}` : \"\"}\n </div>\n <div className=\"text-xs text-muted\">\n {t(\"finetuningview.benchmark\")} {model.benchmark.status}\n {model.benchmark.lastRunAt\n ? ` · ${formatDate(model.benchmark.lastRunAt)}`\n : \"\"}\n </div>\n </Button>\n );\n});\n\n/* ── Trajectories Section ──────────────────────────────────────────── */\n\nexport function TrajectoriesSection({\n trajectoryList,\n selectedTrajectory,\n trajectoryLoading,\n publishingTrajectories,\n publishConfigured,\n onRefresh,\n onSelectTrajectory,\n onPublishTrajectories,\n t,\n}: {\n trajectoryList: TrainingTrajectoryList;\n selectedTrajectory: TrainingTrajectoryDetail | null;\n trajectoryLoading: boolean;\n publishingTrajectories: boolean;\n publishConfigured: boolean;\n onRefresh: () => void;\n onSelectTrajectory: (trajectoryId: string) => void;\n onPublishTrajectories: () => void;\n t: TranslateFn;\n}) {\n return (\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.Trajectories\")}\n </div>\n <div className=\"flex items-center gap-2\">\n <AgentActionButton\n agentId=\"trajectories-publish\"\n label=\"Publish trajectories to HuggingFace\"\n group=\"trajectories\"\n description=\"Publish collected trajectories to HuggingFace\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={publishingTrajectories || !publishConfigured}\n onClick={onPublishTrajectories}\n >\n {publishingTrajectories\n ? t(\"finetuningview.Publishing\")\n : t(\"finetuningview.PublishToHuggingFace\")}\n </AgentActionButton>\n <AgentActionButton\n agentId=\"trajectories-refresh\"\n label=\"Refresh trajectories\"\n group=\"trajectories\"\n description=\"Reload the trajectory list\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={onRefresh}\n >\n {t(\"common.refresh\")}\n </AgentActionButton>\n </div>\n </div>\n {!trajectoryList.available ? (\n <div\n className={`${FINE_TUNING_PANEL_CLASS} px-4 py-4 text-sm text-muted`}\n >\n {summarizeAvailability(trajectoryList.reason, t)}\n </div>\n ) : (\n <div className=\"space-y-3\">\n <div className=\"text-xs text-muted\">\n {trajectoryList.total} {t(\"finetuningview.trajectoryRowsAvai\")}\n </div>\n <div className=\"grid grid-cols-1 gap-3\">\n <div className={FINE_TUNING_PANEL_CLASS}>\n <div className=\"max-h-64 overflow-auto\">\n {trajectoryList.trajectories.length === 0 ? (\n <div className=\"p-3 text-xs text-muted\">\n {t(\"finetuningview.NoTrajectoriesFoun\")}\n </div>\n ) : (\n trajectoryList.trajectories.map((trajectory) => (\n <TrajectoryListItem\n key={trajectory.trajectoryId}\n trajectory={trajectory}\n onSelectTrajectory={onSelectTrajectory}\n t={t}\n />\n ))\n )}\n </div>\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} p-3`}>\n {trajectoryLoading ? (\n <div className=\"text-xs text-muted\">\n {t(\"finetuningview.LoadingTrajectoryD\")}\n </div>\n ) : !selectedTrajectory ? (\n <div className=\"text-xs text-muted\">\n {t(\"finetuningview.ChooseATrajectory\")}\n </div>\n ) : (\n <div className=\"space-y-2\">\n <div className=\"text-xs\">\n <span className=\"font-semibold\">\n {t(\"finetuningview.Trajectory\")}\n </span>{\" \"}\n <span className=\"font-mono\">\n {selectedTrajectory.trajectoryId}\n </span>\n </div>\n <div className=\"text-xs\">\n <span className=\"font-semibold\">\n {t(\"finetuningview.Agent\")}\n </span>{\" \"}\n <span className=\"font-mono\">\n {selectedTrajectory.agentId}\n </span>\n </div>\n <div className=\"text-xs\">\n <span className=\"font-semibold\">\n {t(\"finetuningview.Reward1\")}\n </span>{\" \"}\n {selectedTrajectory.totalReward ?? \"n/a\"}\n </div>\n <SettingsControls.Textarea\n readOnly\n value={selectedTrajectory.stepsJson}\n className=\"max-h-72 min-h-40 overflow-auto font-mono text-xs\"\n />\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </section>\n );\n}\n\n/* ── Dataset Section ───────────────────────────────────────────────── */\n\nexport const DatasetSection = memo(function DatasetSection({\n buildLimit,\n setBuildLimit,\n buildMinCalls,\n setBuildMinCalls,\n datasetBuilding,\n datasets,\n selectedDatasetId,\n setSelectedDatasetId,\n onBuildDataset,\n onRefreshDatasets,\n t,\n}: {\n buildLimit: string;\n setBuildLimit: (value: string) => void;\n buildMinCalls: string;\n setBuildMinCalls: (value: string) => void;\n datasetBuilding: boolean;\n datasets: TrainingDatasetRecord[];\n selectedDatasetId: string;\n setSelectedDatasetId: (value: string) => void;\n onBuildDataset: () => void;\n onRefreshDatasets: () => void;\n t: TranslateFn;\n}) {\n return (\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.Datasets1\")}\n </div>\n </div>\n <div className=\"mb-3 grid grid-cols-1 gap-2 md:grid-cols-2 xl:grid-cols-4\">\n <AgentTextInput\n agentId=\"dataset-limit\"\n label=\"Limit trajectories\"\n group=\"dataset-build\"\n description=\"Maximum trajectories to include in the dataset\"\n value={buildLimit}\n onChange={setBuildLimit}\n placeholder={t(\"finetuningview.LimitTrajectories\")}\n />\n <AgentTextInput\n agentId=\"dataset-min-calls\"\n label=\"Min LLM calls per trajectory\"\n group=\"dataset-build\"\n description=\"Minimum LLM calls required per trajectory\"\n value={buildMinCalls}\n onChange={setBuildMinCalls}\n placeholder={t(\"finetuningview.MinLLMCallsPerTr\")}\n />\n <AgentActionButton\n agentId=\"dataset-build\"\n label=\"Build dataset\"\n group=\"dataset-build\"\n description=\"Build a training dataset from trajectories\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={datasetBuilding}\n onClick={onBuildDataset}\n >\n {datasetBuilding\n ? t(\"finetuningview.Building\")\n : t(\"finetuningview.BuildDataset\")}\n </AgentActionButton>\n <AgentActionButton\n agentId=\"dataset-refresh\"\n label=\"Refresh datasets\"\n group=\"dataset-build\"\n description=\"Reload the dataset list\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={onRefreshDatasets}\n >\n {t(\"finetuningview.RefreshDatasets\")}\n </AgentActionButton>\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} max-h-56 overflow-auto p-3`}>\n {datasets.length === 0 ? (\n <div className=\"text-sm text-muted\">\n {t(\"finetuningview.NoDatasetsYet\")}\n </div>\n ) : (\n <div className=\"space-y-2\">\n {datasets.map((dataset) => (\n <DatasetRadioItem\n key={dataset.id}\n dataset={dataset}\n selectedDatasetId={selectedDatasetId}\n setSelectedDatasetId={setSelectedDatasetId}\n t={t}\n />\n ))}\n </div>\n )}\n </div>\n </section>\n );\n});\n\n/* ── Jobs Section ──────────────────────────────────────────────────── */\n\nexport const TrainingJobsSection = memo(function TrainingJobsSection({\n selectedDatasetId,\n setSelectedDatasetId,\n datasets,\n startBackend,\n setStartBackend,\n startModel,\n setStartModel,\n startIterations,\n setStartIterations,\n startBatchSize,\n setStartBatchSize,\n startLearningRate,\n setStartLearningRate,\n startingJob,\n activeRunningJob,\n jobs,\n selectedJobId,\n setSelectedJobId,\n cancellingJobId,\n selectedJob,\n onStartJob,\n onRefreshJobs,\n onCancelJob,\n t,\n}: {\n selectedDatasetId: string;\n setSelectedDatasetId: (value: string) => void;\n datasets: TrainingDatasetRecord[];\n startBackend: \"mlx\" | \"cuda\" | \"cpu\";\n setStartBackend: (value: \"mlx\" | \"cuda\" | \"cpu\") => void;\n startModel: string;\n setStartModel: (value: string) => void;\n startIterations: string;\n setStartIterations: (value: string) => void;\n startBatchSize: string;\n setStartBatchSize: (value: string) => void;\n startLearningRate: string;\n setStartLearningRate: (value: string) => void;\n startingJob: boolean;\n activeRunningJob: TrainingJobRecord | null;\n jobs: TrainingJobRecord[];\n selectedJobId: string;\n setSelectedJobId: (value: string) => void;\n cancellingJobId: string;\n selectedJob: TrainingJobRecord | null;\n onStartJob: () => void;\n onRefreshJobs: () => void;\n onCancelJob: (jobId: string) => void;\n t: TranslateFn;\n}) {\n return (\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.TrainingJobs\")}\n </div>\n </div>\n <div className=\"mb-3 grid grid-cols-1 gap-2 md:grid-cols-2 xl:grid-cols-3\">\n <AgentSelect\n agentId=\"job-dataset\"\n label=\"Training dataset\"\n group=\"job-config\"\n description=\"Dataset to train the job on\"\n value={selectedDatasetId}\n onValueChange={setSelectedDatasetId}\n options={[\n \"__auto__\",\n ...datasets.filter((dataset) => dataset.id).map((d) => d.id),\n ]}\n placeholder={t(\"finetuningview.AutoBuildDatasetF\")}\n >\n <SelectContent>\n <SelectItem value=\"__auto__\">\n {t(\"finetuningview.AutoBuildDatasetF\")}\n </SelectItem>\n {datasets\n .filter((dataset) => dataset.id)\n .map((dataset) => (\n <SelectItem key={dataset.id} value={dataset.id}>\n {dataset.id}\n </SelectItem>\n ))}\n </SelectContent>\n </AgentSelect>\n <AgentSelect\n agentId=\"job-backend\"\n label=\"Training backend\"\n group=\"job-config\"\n description=\"Compute backend for the training job\"\n value={startBackend}\n onValueChange={(value) =>\n setStartBackend(value as \"mlx\" | \"cuda\" | \"cpu\")\n }\n options={[\"cpu\", \"mlx\", \"cuda\"]}\n >\n <SelectContent>\n <SelectItem value=\"cpu\">{t(\"finetuningview.cpu\")}</SelectItem>\n <SelectItem value=\"mlx\">{t(\"finetuningview.mlx\")}</SelectItem>\n <SelectItem value=\"cuda\">{t(\"finetuningview.cuda\")}</SelectItem>\n </SelectContent>\n </AgentSelect>\n <AgentTextInput\n agentId=\"job-base-model\"\n label=\"Base model\"\n group=\"job-config\"\n description=\"Optional base model id for the training job\"\n value={startModel}\n onChange={setStartModel}\n placeholder={t(\"finetuningview.BaseModelOptional\")}\n />\n <AgentTextInput\n agentId=\"job-iterations\"\n label=\"Iterations\"\n group=\"job-config\"\n description=\"Optional number of training iterations\"\n value={startIterations}\n onChange={setStartIterations}\n placeholder={t(\"finetuningview.IterationsOptional\")}\n />\n <AgentTextInput\n agentId=\"job-batch-size\"\n label=\"Batch size\"\n group=\"job-config\"\n description=\"Optional training batch size\"\n value={startBatchSize}\n onChange={setStartBatchSize}\n placeholder={t(\"finetuningview.BatchSizeOptional\")}\n />\n <AgentTextInput\n agentId=\"job-learning-rate\"\n label=\"Learning rate\"\n group=\"job-config\"\n description=\"Optional training learning rate\"\n value={startLearningRate}\n onChange={setStartLearningRate}\n placeholder={t(\"finetuningview.LearningRateOptio\")}\n />\n </div>\n <div className=\"mb-3 flex flex-wrap items-center gap-2\">\n <AgentActionButton\n agentId=\"job-start\"\n label=\"Start training job\"\n group=\"job-config\"\n description=\"Start a new training job\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={startingJob || Boolean(activeRunningJob)}\n onClick={onStartJob}\n >\n {startingJob\n ? t(\"finetuningview.Starting\")\n : t(\"finetuningview.StartTrainingJob\")}\n </AgentActionButton>\n <AgentActionButton\n agentId=\"job-refresh\"\n label=\"Refresh jobs\"\n group=\"job-config\"\n description=\"Reload the training jobs list\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={onRefreshJobs}\n >\n {t(\"finetuningview.RefreshJobs\")}\n </AgentActionButton>\n {activeRunningJob && (\n <div className=\"rounded-full border border-warn/30 bg-warn/10 px-3 py-2 text-xs text-warn\">\n {t(\"finetuningview.ActiveJob\")}{\" \"}\n <span className=\"ml-1 font-mono\">{activeRunningJob.id}</span>\n </div>\n )}\n </div>\n <div className=\"grid grid-cols-1 gap-3\">\n <div className={`${FINE_TUNING_PANEL_CLASS} max-h-64 overflow-auto`}>\n {jobs.length === 0 ? (\n <div className=\"p-4 text-sm text-muted\">\n {t(\"finetuningview.NoJobsYet\")}\n </div>\n ) : (\n jobs.map((job) => (\n <JobListItem\n key={job.id}\n job={job}\n selectedJobId={selectedJobId}\n setSelectedJobId={setSelectedJobId}\n cancellingJobId={cancellingJobId}\n onCancelJob={onCancelJob}\n t={t}\n />\n ))\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} p-3`}>\n <SelectedJobPanel selectedJob={selectedJob} t={t} />\n </div>\n </div>\n </section>\n );\n});\n\n/* ── Trained Models Section ───────────────────────────────────────── */\n\nexport const TrainedModelsSection = memo(function TrainedModelsSection({\n activateProviderModel,\n importBaseModel,\n importModelName,\n importOllamaUrl,\n modelAction,\n models,\n onActivate,\n onBenchmark,\n onImport,\n onSmokeTest,\n selectedModel,\n selectedModelId,\n setActivateProviderModel,\n setImportBaseModel,\n setImportModelName,\n setImportOllamaUrl,\n setSelectedModelId,\n smokeResult,\n t,\n}: {\n activateProviderModel: string;\n importBaseModel: string;\n importModelName: string;\n importOllamaUrl: string;\n modelAction: string;\n models: TrainingModelRecord[];\n onActivate: () => void;\n onBenchmark: () => void;\n onImport: () => void;\n onSmokeTest: () => void;\n selectedModel: TrainingModelRecord | null;\n selectedModelId: string;\n setActivateProviderModel: (value: string) => void;\n setImportBaseModel: (value: string) => void;\n setImportModelName: (value: string) => void;\n setImportOllamaUrl: (value: string) => void;\n setSelectedModelId: (value: string) => void;\n smokeResult: string | null;\n t: (key: string, options?: Record<string, unknown>) => string;\n}) {\n return (\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.TrainedModels\")}\n </div>\n </div>\n <div className=\"grid grid-cols-1 gap-3\">\n <div className={`${FINE_TUNING_PANEL_CLASS} max-h-64 overflow-auto`}>\n {models.length === 0 ? (\n <div className=\"p-4 text-sm text-muted\">\n {t(\"finetuningview.NoTrainedModelsYe\")}\n </div>\n ) : (\n models.map((model) => (\n <ModelListItem\n key={model.id}\n model={model}\n selectedModelId={selectedModelId}\n setSelectedModelId={setSelectedModelId}\n t={t}\n />\n ))\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} p-3`}>\n <SelectedModelPanel\n selectedModel={selectedModel}\n importModelName={importModelName}\n setImportModelName={setImportModelName}\n importBaseModel={importBaseModel}\n setImportBaseModel={setImportBaseModel}\n importOllamaUrl={importOllamaUrl}\n setImportOllamaUrl={setImportOllamaUrl}\n activateProviderModel={activateProviderModel}\n setActivateProviderModel={setActivateProviderModel}\n modelAction={modelAction}\n smokeResult={smokeResult}\n onImport={onImport}\n onActivate={onActivate}\n onBenchmark={onBenchmark}\n onSmokeTest={onSmokeTest}\n t={t}\n />\n </div>\n </div>\n </section>\n );\n});\n\n/* ── Live Events Panel ─────────────────────────────────────────────── */\n\nexport const LiveEventsPanel = memo(function LiveEventsPanel({\n events,\n t,\n}: {\n events: TrainingStreamEvent[];\n t: TranslateFn;\n}) {\n return (\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.LiveTrainingEvents\")}\n </div>\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} max-h-48 overflow-auto`}>\n {events.length === 0 ? (\n <div className=\"p-4 text-sm text-muted\">\n {t(\"finetuningview.NoLiveEventsYet\")}\n </div>\n ) : (\n events.slice(0, 80).map((event, index) => (\n <div\n key={`${event.ts}-${event.kind}-${index}`}\n className=\"px-3 py-2 text-sm\"\n >\n <span className=\"mr-2 font-mono text-xs text-muted\">\n {formatTime(event.ts, { fallback: \"\\u2014\" })}\n </span>\n <span className=\"font-semibold\">{event.kind}</span>\n {typeof event.progress === \"number\" && (\n <span className=\"text-muted\">\n {\" \"}\n · {formatProgress(event.progress)}\n </span>\n )}\n {event.phase && (\n <span className=\"text-muted\"> · {event.phase}</span>\n )}\n <div className=\"mt-0.5 text-xs text-muted\">{event.message}</div>\n </div>\n ))\n )}\n </div>\n </section>\n );\n});\n\n/* ── Selected Job Detail Panel ─────────────────────────────────────── */\n\nexport function SelectedJobPanel({\n selectedJob,\n t,\n}: {\n selectedJob: TrainingJobRecord | null;\n t: TranslateFn;\n}) {\n if (!selectedJob) {\n return (\n <div className=\"text-sm text-muted\">\n {t(\"finetuningview.SelectAJobToInsp\")}\n </div>\n );\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"text-sm\">\n <span className=\"font-semibold\">{t(\"finetuningview.Status1\")}</span>{\" \"}\n {selectedJob.status} · {formatProgress(selectedJob.progress)} ·{\" \"}\n {selectedJob.phase}\n </div>\n <div className=\"text-sm\">\n <span className=\"font-semibold\">{t(\"finetuningview.Dataset\")}</span>{\" \"}\n <span className=\"font-mono\">{selectedJob.datasetId}</span>\n </div>\n <SettingsControls.Textarea\n readOnly\n value={selectedJob.logs.join(\"\\n\")}\n className=\"max-h-72 min-h-40 overflow-auto font-mono text-xs\"\n />\n </div>\n );\n}\n\n/* ── Selected Model Actions Panel ──────────────────────────────────── */\n\nexport function SelectedModelPanel({\n selectedModel,\n importModelName,\n setImportModelName,\n importBaseModel,\n setImportBaseModel,\n importOllamaUrl,\n setImportOllamaUrl,\n activateProviderModel,\n setActivateProviderModel,\n modelAction,\n smokeResult,\n onImport,\n onActivate,\n onBenchmark,\n onSmokeTest,\n t,\n}: {\n selectedModel: TrainingModelRecord | null;\n importModelName: string;\n setImportModelName: (v: string) => void;\n importBaseModel: string;\n setImportBaseModel: (v: string) => void;\n importOllamaUrl: string;\n setImportOllamaUrl: (v: string) => void;\n activateProviderModel: string;\n setActivateProviderModel: (v: string) => void;\n modelAction: string;\n smokeResult: string | null;\n onImport: () => void;\n onActivate: () => void;\n onBenchmark: () => void;\n onSmokeTest: () => void;\n t: TranslateFn;\n}) {\n if (!selectedModel) {\n return (\n <div className=\"text-sm text-muted\">\n {t(\"finetuningview.SelectAModelToIm\")}\n </div>\n );\n }\n\n return (\n <div className=\"space-y-2\">\n <div className=\"text-sm\">\n <span className=\"font-semibold\">{t(\"finetuningview.Model\")}</span>{\" \"}\n <span className=\"font-mono\">{selectedModel.id}</span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-semibold\">{t(\"finetuningview.AdapterPath\")}</span>{\" \"}\n <span className=\"font-mono\">{selectedModel.adapterPath ?? \"n/a\"}</span>\n </div>\n\n <AgentTextInput\n agentId=\"model-import-name\"\n label=\"Ollama model name\"\n group=\"model-actions\"\n description=\"Name for the imported Ollama model\"\n value={importModelName}\n onChange={setImportModelName}\n placeholder={t(\"finetuningview.OllamaModelNameO\")}\n />\n <AgentTextInput\n agentId=\"model-import-base\"\n label=\"Base model for Ollama\"\n group=\"model-actions\"\n description=\"Base model used for the Ollama import\"\n value={importBaseModel}\n onChange={setImportBaseModel}\n placeholder={t(\"finetuningview.BaseModelForOllam\")}\n />\n <AgentTextInput\n agentId=\"model-import-url\"\n label=\"Ollama URL\"\n group=\"model-actions\"\n description=\"Ollama server URL for the import\"\n value={importOllamaUrl}\n onChange={setImportOllamaUrl}\n placeholder={t(\"finetuningview.OllamaURL\")}\n />\n <AgentActionButton\n agentId=\"model-import\"\n label=\"Import to Ollama\"\n group=\"model-actions\"\n description=\"Import the selected model into Ollama\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={modelAction === `import:${selectedModel.id}`}\n onClick={onImport}\n >\n {modelAction === `import:${selectedModel.id}`\n ? t(\"finetuningview.Importing\")\n : t(\"finetuningview.ImportToOllama\")}\n </AgentActionButton>\n\n <AgentTextInput\n agentId=\"model-provider-model\"\n label=\"Provider model\"\n group=\"model-actions\"\n description=\"Provider model id to activate\"\n value={activateProviderModel}\n onChange={setActivateProviderModel}\n placeholder={t(\"finetuningview.ProviderModelEG\")}\n />\n <div className=\"flex flex-wrap gap-2\">\n <AgentActionButton\n agentId=\"model-activate\"\n label=\"Activate model\"\n group=\"model-actions\"\n description=\"Activate the selected model\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={modelAction === `activate:${selectedModel.id}`}\n onClick={onActivate}\n >\n {modelAction === `activate:${selectedModel.id}`\n ? t(\"finetuningview.Activating\")\n : t(\"finetuningview.ActivateModel\")}\n </AgentActionButton>\n <AgentActionButton\n agentId=\"model-benchmark\"\n label=\"Benchmark model\"\n group=\"model-actions\"\n description=\"Run a benchmark against the selected model\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={modelAction === `benchmark:${selectedModel.id}`}\n onClick={onBenchmark}\n >\n {modelAction === `benchmark:${selectedModel.id}`\n ? t(\"finetuningview.Benchmarking\")\n : t(\"finetuningview.BenchmarkAction\")}\n </AgentActionButton>\n <AgentActionButton\n agentId=\"model-smoke-test\"\n label=\"Run smoke prompt\"\n group=\"model-actions\"\n description=\"Run a smoke-test prompt against the selected model\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={modelAction === `smoke:${selectedModel.id}`}\n onClick={onSmokeTest}\n >\n {modelAction === `smoke:${selectedModel.id}`\n ? t(\"finetuningview.Testing\")\n : t(\"finetuningview.RunSmokePrompt\")}\n </AgentActionButton>\n </div>\n {smokeResult && (\n <SettingsControls.Textarea\n readOnly\n value={smokeResult}\n className=\"max-h-48 min-h-24 overflow-auto\"\n />\n )}\n </div>\n );\n}\n","import { useAgentElement } from \"@elizaos/ui/agent-surface\";\nimport type {\n HuggingFaceDatasetIngestResponse,\n ListTrainingCollectionsResponse,\n RunActionBenchmarkResponse,\n RunBenchmarkVsCerebrasResponse,\n RunFeedGenerationResponse,\n RunLocalEvalComparisonResponse,\n RunScenarioResponse,\n RunTrainingCollectionResponse,\n StageEliza1BundleResponse,\n StartTrainingOptions,\n StreamEventEnvelope,\n TrainingAnalysisIndexResponse,\n TrainingCollectionPreflightSummary,\n TrainingDatasetRecord,\n TrainingJobRecord,\n TrainingModelRecord,\n TrainingReadinessReportResponse,\n TrainingStatus,\n TrainingStreamEvent,\n TrainingTrajectoryDetail,\n TrainingTrajectoryList,\n} from \"@elizaos/ui/api\";\nimport { client } from \"@elizaos/ui/api\";\nimport {\n type AppDetailExtensionProps,\n Button,\n registerDetailExtension,\n} from \"@elizaos/ui/components\";\nimport { useIntervalWhenDocumentVisible } from \"@elizaos/ui/hooks\";\nimport { ContentLayout } from \"@elizaos/ui/layouts\";\nimport { type AppContextValue, useAppSelector } from \"@elizaos/ui/state\";\nimport {\n confirmDesktopAction,\n openExternalUrl,\n parsePositiveFloat,\n parsePositiveInteger,\n} from \"@elizaos/ui/utils\";\nimport {\n type ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport {\n ELIZA_ONE_BENCHMARK_TIER_LIST,\n ELIZA_ONE_BENCHMARK_TIERS,\n} from \"../core/eliza1-benchmark-recipe.js\";\nimport { asArray, parseCollectionTierList } from \"./FineTuningView.helpers\";\nimport { interact } from \"./FineTuningView.interact\";\nimport {\n asTrainingEvent,\n FINE_TUNING_ACTION_CLASS,\n FINE_TUNING_PANEL_CLASS,\n FINE_TUNING_SECTION_CLASS,\n FINE_TUNING_SECTION_HEADER_CLASS,\n FINE_TUNING_STATUS_CARD_CLASS,\n} from \"./fine-tuning-panels.helpers\";\nimport {\n DatasetSection,\n LiveEventsPanel,\n TrainedModelsSection,\n TrainingJobsSection,\n TrajectoriesSection,\n} from \"./fine-tuning-panels.js\";\n\nconst FINE_TUNING_DETAIL_PANEL_ID = \"plugin-dash-fine-tuning\";\n\nconst DEFAULT_ELIZA1_HF_DATASET_FILES = ELIZA_ONE_BENCHMARK_TIERS.flatMap(\n (tier) =>\n [\n \"train.jsonl\",\n \"val.jsonl\",\n \"test.jsonl\",\n \"manifest.json\",\n \"validation.json\",\n ].map((file) => `sft/${tier}/${file}`),\n);\n\nfunction localViewerUrl(path: string): string {\n if (/^[a-z][a-z0-9+.-]*:\\/\\//i.test(path)) return path;\n return encodeURI(`file://${path}`);\n}\n\ninterface AnalysisCoverageSummary {\n dataSources: {\n huggingFace: number;\n feed: number;\n natural: number;\n scenarios: number;\n tests: number;\n trainingJsonl: number;\n };\n readableSamples: {\n huggingFace: number;\n feed: number;\n natural: number;\n scenarios: number;\n tests: number;\n trainingJsonl: number;\n total: number;\n };\n evals: number;\n benchmarkMatrices: number;\n models: number;\n benchmarkModelStats: {\n modelCount: number;\n bestModelId: string | null;\n bestAverageScore: number | null;\n };\n allEliza1TiersCovered: boolean;\n benchmarkTierCoverage: Array<{\n tier: string;\n hasBase: boolean;\n hasTrained: boolean;\n hasReference: boolean;\n hasImprovement: boolean;\n }>;\n benchmarkComparisons: Array<{\n tier: string | null;\n benchmark: string | null;\n baseScore: number | null;\n trainedScore: number | null;\n referenceScore: number | null;\n improvementPercent: number | null;\n trainedVsReferencePercent: number | null;\n }>;\n}\n\ntype TrainingReadinessRecommendedAction = NonNullable<\n TrainingReadinessReportResponse[\"report\"][\"checks\"][number][\"recommendedAction\"]\n>;\n\ntype TrainingReadinessCheckSummary =\n TrainingReadinessReportResponse[\"report\"][\"checks\"][number];\n\nfunction recordValue(value: unknown): Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction stringSummaryValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction numberSummaryValue(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n}\n\nfunction formatModelInventorySummary(\n modelInventory:\n | NonNullable<\n RunTrainingCollectionResponse[\"manifest\"][\"evidence\"][\"training\"][\"modelInventory\"]\n >\n | undefined,\n): string {\n if (!modelInventory?.length) return \"\";\n const tiers = [\n ...new Set(\n modelInventory\n .map((model) => model.tier)\n .filter((tier): tier is string => Boolean(tier)),\n ),\n ];\n const base = modelInventory.filter(\n (model) => model.variant === \"base\",\n ).length;\n const trained = modelInventory.filter(\n (model) => model.variant === \"trained\",\n ).length;\n const parts: string[] = [];\n if (base || trained) parts.push(`base:${base} trained:${trained}`);\n if (tiers.length) parts.push(`tiers:${tiers.join(\",\")}`);\n return parts.length ? ` ${parts.join(\" \")}` : \"\";\n}\n\nfunction nullableStringValue(value: unknown): string | null {\n return typeof value === \"string\" && value.trim() ? value.trim() : null;\n}\n\nfunction nullableNumberValue(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction formatNullableMetric(value: unknown, suffix = \"\"): string {\n const numberValue = nullableNumberValue(value);\n return numberValue === null ? \"n/a\" : `${numberValue}${suffix}`;\n}\n\nfunction compactDisplayValue(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 > 160 ? `${raw.slice(0, 157)}...` : raw;\n}\n\nfunction formatEvalComparisonSummary(\n result: RunLocalEvalComparisonResponse,\n): string | null {\n const artifact = recordValue(result.artifact);\n if (!Object.keys(artifact).length) return null;\n const models = recordValue(artifact.models);\n const metrics = recordValue(artifact.metrics);\n const base = nullableStringValue(models.base) ?? \"base\";\n const trained = nullableStringValue(models.trained) ?? \"trained\";\n const backend = nullableStringValue(models.backend) ?? \"n/a\";\n return `${base} -> ${trained} backend:${backend} base:${formatNullableMetric(\n metrics.baseScore,\n )} trained:${formatNullableMetric(\n metrics.trainedScore,\n )} improvement:${formatNullableMetric(\n metrics.improvementPercent,\n \"%\",\n )} delta:${formatNullableMetric(\n metrics.improvementAbsolute,\n )} prompts:${formatNullableMetric(metrics.promptCount)} latency:${formatNullableMetric(\n metrics.baseLatencyMs,\n \"ms\",\n )}->${formatNullableMetric(metrics.trainedLatencyMs, \"ms\")}`;\n}\n\nfunction summarizeAnalysisCoverage(\n analysisIndex: TrainingAnalysisIndexResponse | null,\n): AnalysisCoverageSummary | null {\n if (!analysisIndex) return null;\n const artifacts = asArray(analysisIndex.manifest.artifacts);\n const manifestCoverage = recordValue(\n (analysisIndex.manifest as unknown as Record<string, unknown>).coverage,\n );\n if (Object.keys(manifestCoverage).length > 0) {\n const dataSources = recordValue(manifestCoverage.dataSources);\n const readableSamples = recordValue(manifestCoverage.readableSamples);\n const evals = recordValue(manifestCoverage.evals);\n const benchmarks = recordValue(manifestCoverage.benchmarks);\n const models = recordValue(manifestCoverage.models);\n const inventory = Array.isArray(models.inventory)\n ? models.inventory.map(recordValue)\n : [];\n const benchmarkTierCoverage = Array.isArray(benchmarks.tierCoverage)\n ? benchmarks.tierCoverage.map(recordValue).map((tier) => ({\n tier: nullableStringValue(tier.tier) ?? \"unknown\",\n hasBase: tier.hasBase === true,\n hasTrained: tier.hasTrained === true,\n hasReference: tier.hasReference === true,\n hasImprovement: tier.hasImprovement === true,\n }))\n : [];\n const benchmarkComparisons = artifacts\n .filter((artifact) => artifact.kind === \"benchmark_matrix\")\n .flatMap((artifact) => {\n const payload = recordValue(artifact.payload);\n return Array.isArray(payload.comparisons)\n ? payload.comparisons.map(recordValue)\n : [];\n })\n .map((comparison) => ({\n tier: nullableStringValue(comparison.tier),\n benchmark: nullableStringValue(comparison.benchmark),\n baseScore: nullableNumberValue(comparison.baseScore),\n trainedScore: nullableNumberValue(comparison.trainedScore),\n referenceScore: nullableNumberValue(comparison.referenceScore),\n improvementPercent: nullableNumberValue(comparison.improvementPercent),\n trainedVsReferencePercent: nullableNumberValue(\n comparison.trainedVsReferencePercent,\n ),\n }));\n return {\n dataSources: {\n huggingFace: numberSummaryValue(dataSources.huggingFace) ?? 0,\n feed: numberSummaryValue(dataSources.feed) ?? 0,\n natural: numberSummaryValue(dataSources.natural) ?? 0,\n scenarios: numberSummaryValue(dataSources.scenarios) ?? 0,\n tests: numberSummaryValue(dataSources.tests) ?? 0,\n trainingJsonl: numberSummaryValue(dataSources.trainingJsonl) ?? 0,\n },\n readableSamples: {\n huggingFace: numberSummaryValue(readableSamples.huggingFace) ?? 0,\n feed: numberSummaryValue(readableSamples.feed) ?? 0,\n natural: numberSummaryValue(readableSamples.natural) ?? 0,\n scenarios: numberSummaryValue(readableSamples.scenarios) ?? 0,\n tests: numberSummaryValue(readableSamples.tests) ?? 0,\n trainingJsonl: numberSummaryValue(readableSamples.trainingJsonl) ?? 0,\n total: numberSummaryValue(readableSamples.total) ?? 0,\n },\n evals: numberSummaryValue(evals.artifacts) ?? 0,\n benchmarkMatrices: numberSummaryValue(benchmarks.matrices) ?? 0,\n models: numberSummaryValue(models.artifacts) ?? 0,\n benchmarkModelStats: {\n modelCount: inventory.length,\n bestModelId: null,\n bestAverageScore: null,\n },\n allEliza1TiersCovered: benchmarks.allEliza1TiersCovered === true,\n benchmarkTierCoverage,\n benchmarkComparisons,\n };\n }\n const summaryFor = (artifact: (typeof artifacts)[number]) =>\n recordValue(artifact.summary);\n const schemaOf = (artifact: (typeof artifacts)[number]) =>\n stringSummaryValue(summaryFor(artifact).schema);\n const sourceKindOf = (artifact: (typeof artifacts)[number]) =>\n stringSummaryValue(recordValue(summaryFor(artifact).source).kind);\n const sourceLabelOf = (artifact: (typeof artifacts)[number]) => {\n const source = summaryFor(artifact).source;\n return (\n stringSummaryValue(source) ?? stringSummaryValue(recordValue(source).kind)\n );\n };\n const isNaturalTrajectoryBundle = (artifact: (typeof artifacts)[number]) =>\n artifact.kind === \"trajectory_bundle\" &&\n sourceLabelOf(artifact) === \"training_collection_natural_trajectories\";\n const isTestTrajectoryDataset = (artifact: (typeof artifacts)[number]) =>\n artifact.kind === \"trajectory_dataset\" &&\n sourceKindOf(artifact) === \"app_core_test_trajectory\";\n const sampleCount = (\n artifact: (typeof artifacts)[number],\n keys: readonly string[],\n ) =>\n keys.reduce((count, key) => {\n const samples = summaryFor(artifact)[key];\n return count + (Array.isArray(samples) ? samples.length : 0);\n }, 0);\n const sampleCountFor = (\n predicate: (artifact: (typeof artifacts)[number]) => boolean,\n keys: readonly string[],\n ) =>\n artifacts\n .filter(predicate)\n .reduce((count, artifact) => count + sampleCount(artifact, keys), 0);\n const modelStats = artifacts.flatMap((artifact) => {\n const summary = summaryFor(artifact);\n return Array.isArray(summary.modelStats)\n ? summary.modelStats.map(recordValue)\n : [];\n });\n const scoredModels = modelStats\n .map((stat) => ({\n modelId: stringSummaryValue(stat.modelId),\n averageScore: numberSummaryValue(stat.averageScore),\n }))\n .filter(\n (stat): stat is { modelId: string; averageScore: number } =>\n stat.modelId !== undefined && stat.averageScore !== undefined,\n );\n const bestModel = scoredModels.sort(\n (left, right) => right.averageScore - left.averageScore,\n )[0];\n const benchmarkComparisons = artifacts\n .filter((artifact) => artifact.kind === \"benchmark_matrix\")\n .flatMap((artifact) => {\n const payload = recordValue(artifact.payload);\n return Array.isArray(payload.comparisons)\n ? payload.comparisons.map(recordValue)\n : [];\n })\n .map((comparison) => ({\n tier: nullableStringValue(comparison.tier),\n benchmark: nullableStringValue(comparison.benchmark),\n baseScore: nullableNumberValue(comparison.baseScore),\n trainedScore: nullableNumberValue(comparison.trainedScore),\n referenceScore: nullableNumberValue(comparison.referenceScore),\n improvementPercent: nullableNumberValue(comparison.improvementPercent),\n trainedVsReferencePercent: nullableNumberValue(\n comparison.trainedVsReferencePercent,\n ),\n }));\n\n const dataSources = {\n huggingFace: artifacts.filter(\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n (schemaOf(artifact) === \"eliza_huggingface_dataset_ingest\" ||\n sourceKindOf(artifact) === \"huggingface_dataset\"),\n ).length,\n feed: artifacts.filter(\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n (schemaOf(artifact) === \"feed_training_trajectory_export\" ||\n schemaOf(artifact) === \"feed_parallel_generation\"),\n ).length,\n natural: artifacts.filter(isNaturalTrajectoryBundle).length,\n scenarios: artifacts.filter(\n (artifact) =>\n artifact.kind === \"scenario_run\" ||\n schemaOf(artifact) === \"eliza_scenario_native_export\",\n ).length,\n tests: artifacts.filter(isTestTrajectoryDataset).length,\n trainingJsonl: artifacts.filter(\n (artifact) => schemaOf(artifact) === \"eliza_training_jsonl_dataset\",\n ).length,\n };\n const readableSamples = {\n huggingFace: sampleCountFor(\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n schemaOf(artifact) === \"eliza_huggingface_dataset_ingest\",\n [\"hfSamplePreviews\"],\n ),\n feed: sampleCountFor(\n (artifact) =>\n artifact.kind === \"trajectory_dataset\" &&\n (schemaOf(artifact) === \"feed_training_trajectory_export\" ||\n schemaOf(artifact) === \"feed_parallel_generation\"),\n [\"feedSamplePreviews\"],\n ),\n natural: sampleCountFor(isNaturalTrajectoryBundle, [\"samplePreviews\"]),\n scenarios: sampleCountFor(\n (artifact) =>\n artifact.kind === \"scenario_run\" ||\n schemaOf(artifact) === \"eliza_scenario_native_export\",\n [\"turnPreviews\", \"scenarioNativeSamplePreviews\"],\n ),\n tests: sampleCountFor(isTestTrajectoryDataset, [\"testSamplePreviews\"]),\n trainingJsonl: sampleCountFor(\n (artifact) => schemaOf(artifact) === \"eliza_training_jsonl_dataset\",\n [\"samplePreviews\"],\n ),\n total: 0,\n };\n readableSamples.total =\n readableSamples.huggingFace +\n readableSamples.feed +\n readableSamples.natural +\n readableSamples.scenarios +\n readableSamples.tests +\n readableSamples.trainingJsonl;\n\n return {\n dataSources,\n readableSamples,\n evals: artifacts.filter((artifact) => artifact.kind === \"eval\").length,\n benchmarkMatrices: artifacts.filter(\n (artifact) => artifact.kind === \"benchmark_matrix\",\n ).length,\n models: artifacts.filter((artifact) => artifact.kind === \"model\").length,\n benchmarkModelStats: {\n modelCount: modelStats.length,\n bestModelId: bestModel?.modelId ?? null,\n bestAverageScore: bestModel?.averageScore ?? null,\n },\n allEliza1TiersCovered: false,\n benchmarkTierCoverage: [],\n benchmarkComparisons,\n };\n}\n\nconst AGENT_FIELD_INPUT_CLASS =\n \"h-10 w-full rounded-xl border border-border/60 bg-bg/50 px-3 text-sm text-txt outline-none focus:border-accent\";\n\nfunction AgentInlineButton({\n agentId,\n label,\n group,\n description,\n className,\n variant = \"outline\",\n size = \"sm\",\n disabled,\n onClick,\n title,\n children,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n className: string;\n variant?: \"outline\" | \"ghost\" | \"link\" | \"default\";\n size?: \"sm\";\n disabled?: boolean;\n onClick: () => void;\n title?: string;\n children: ReactNode;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: agentId,\n role: \"button\",\n label,\n group,\n description,\n onActivate: onClick,\n });\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={className}\n disabled={disabled}\n onClick={onClick}\n aria-label={label}\n title={title}\n {...agentProps}\n >\n {children}\n </Button>\n );\n}\n\nfunction AgentTextField({\n agentId,\n label,\n group,\n description,\n className,\n value,\n onChange,\n placeholder,\n type = \"text\",\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n className: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n type?: \"text\" | \"number\";\n}) {\n const { ref, agentProps } = useAgentElement<HTMLInputElement>({\n id: agentId,\n role: type === \"number\" ? \"number-input\" : \"text-input\",\n label,\n group,\n description,\n getValue: () => value,\n onFill: onChange,\n });\n return (\n <input\n ref={ref}\n type={type}\n className={className}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={label}\n {...agentProps}\n />\n );\n}\n\nfunction AgentTextAreaField({\n agentId,\n label,\n group,\n description,\n className,\n value,\n onChange,\n placeholder,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n className: string;\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLTextAreaElement>({\n id: agentId,\n role: \"textarea\",\n label,\n group,\n description,\n getValue: () => value,\n onFill: onChange,\n });\n return (\n <textarea\n ref={ref}\n className={className}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n placeholder={placeholder}\n aria-label={label}\n {...agentProps}\n />\n );\n}\n\nfunction AgentNativeSelect({\n agentId,\n label,\n group,\n description,\n className,\n value,\n onChange,\n options,\n children,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n className: string;\n value: string;\n onChange: (value: string) => void;\n options: readonly string[];\n children: ReactNode;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLSelectElement>({\n id: agentId,\n role: \"select\",\n label,\n group,\n description,\n options,\n getValue: () => value,\n onFill: onChange,\n });\n return (\n <select\n ref={ref}\n className={className}\n value={value}\n onChange={(event) => onChange(event.target.value)}\n aria-label={label}\n {...agentProps}\n >\n {children}\n </select>\n );\n}\n\nfunction AgentCheckboxField({\n agentId,\n label,\n group,\n description,\n checked,\n onChange,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLInputElement>({\n id: agentId,\n role: \"toggle\",\n label,\n group,\n description,\n status: checked ? \"active\" : \"inactive\",\n getValue: () => checked,\n onActivate: () => onChange(!checked),\n onFill: (value) => onChange(value === \"true\" || value === \"1\"),\n });\n return (\n <input\n ref={ref}\n type=\"checkbox\"\n checked={checked}\n onChange={(event) => onChange(event.target.checked)}\n aria-label={label}\n aria-current={checked ? \"true\" : undefined}\n {...agentProps}\n />\n );\n}\n\nfunction ReadinessCheckRow({\n check,\n readinessActionRunning,\n onRunRecommendation,\n t,\n}: {\n check: TrainingReadinessCheckSummary;\n readinessActionRunning: string | null;\n onRunRecommendation: (\n checkId: string,\n action: TrainingReadinessRecommendedAction,\n ) => void;\n t: (key: string, options?: Record<string, unknown>) => string;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: `readiness-run-${check.id}`,\n role: \"button\",\n label: `Run recommendation for ${check.label}`,\n group: \"readiness\",\n description: `Run the recommended action for the ${check.label} check`,\n onActivate: () => {\n if (check.recommendedAction) {\n onRunRecommendation(check.id, check.recommendedAction);\n }\n },\n });\n return (\n <div className=\"grid gap-2 pt-2\">\n <div>\n <div className=\"font-mono text-xs text-txt\">\n {check.label} · {check.status}\n </div>\n <div className=\"mt-1 text-xs text-muted\">{check.note}</div>\n </div>\n {check.recommendedAction ? (\n <div className=\"flex flex-col items-start gap-2\">\n <div className=\"break-all font-mono text-xs text-muted\">\n {check.recommendedAction.capability}\n {Object.keys(check.recommendedAction.params).length > 0\n ? ` ${JSON.stringify(check.recommendedAction.params)}`\n : \"\"}\n </div>\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"sm\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={readinessActionRunning !== null}\n onClick={() => {\n if (check.recommendedAction) {\n onRunRecommendation(check.id, check.recommendedAction);\n }\n }}\n {...agentProps}\n >\n {readinessActionRunning === check.id\n ? t(\"finetuningview.RunningRecommendation\", {\n defaultValue: \"Running\",\n })\n : t(\"finetuningview.RunRecommendation\", {\n defaultValue: \"Run recommendation\",\n })}\n </Button>\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction TrainingActionButton({\n agentId,\n label,\n group,\n description,\n disabled,\n onClick,\n children,\n}: {\n agentId: string;\n label: string;\n group: string;\n description: string;\n disabled?: boolean;\n onClick: () => void;\n children: ReactNode;\n}) {\n const { ref, agentProps } = useAgentElement<HTMLButtonElement>({\n id: agentId,\n role: \"button\",\n label,\n group,\n description,\n });\n return (\n <Button\n ref={ref}\n variant=\"outline\"\n size=\"sm\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={disabled}\n onClick={onClick}\n aria-label={label}\n {...agentProps}\n >\n {children}\n </Button>\n );\n}\n\nexport function FineTuningView({\n contentHeader,\n}: {\n contentHeader?: ReactNode;\n} = {}) {\n const handleRestart = useAppSelector((s: AppContextValue) => s.handleRestart);\n const setActionNotice = useAppSelector(\n (s: AppContextValue) => s.setActionNotice,\n );\n const t = useAppSelector((s: AppContextValue) => s.t);\n\n const [pageLoading, setPageLoading] = useState(true);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const [status, setStatus] = useState<TrainingStatus | null>(null);\n const [trajectoryList, setTrajectoryList] = useState<TrainingTrajectoryList>({\n available: false,\n total: 0,\n trajectories: [],\n });\n const [selectedTrajectory, setSelectedTrajectory] =\n useState<TrainingTrajectoryDetail | null>(null);\n const [trajectoryLoading, setTrajectoryLoading] = useState(false);\n const [publishingTrajectories, setPublishingTrajectories] = useState(false);\n const [publishConfigured, setPublishConfigured] = useState(true);\n\n const [datasets, setDatasets] = useState<TrainingDatasetRecord[]>([]);\n const [jobs, setJobs] = useState<TrainingJobRecord[]>([]);\n const [models, setModels] = useState<TrainingModelRecord[]>([]);\n const [analysisIndex, setAnalysisIndex] =\n useState<TrainingAnalysisIndexResponse | null>(null);\n const analysisCoverage = useMemo(\n () => summarizeAnalysisCoverage(analysisIndex),\n [analysisIndex],\n );\n const [analysisBuilding, setAnalysisBuilding] = useState(false);\n const [readinessBuilding, setReadinessBuilding] = useState(false);\n const [readinessReport, setReadinessReport] =\n useState<TrainingReadinessReportResponse | null>(null);\n const [readinessActionRunning, setReadinessActionRunning] = useState<\n string | null\n >(null);\n const [collectionRunning, setCollectionRunning] = useState(false);\n const [collectionPreflightRunning, setCollectionPreflightRunning] =\n useState(false);\n const [collectionResult, setCollectionResult] =\n useState<RunTrainingCollectionResponse | null>(null);\n const [collectionPreflightResult, setCollectionPreflightResult] =\n useState<TrainingCollectionPreflightSummary | null>(null);\n const [collectionPreflightProbe, setCollectionPreflightProbe] =\n useState(true);\n const [collectionHistory, setCollectionHistory] =\n useState<ListTrainingCollectionsResponse | null>(null);\n const [collectionHistoryLoading, setCollectionHistoryLoading] =\n useState(false);\n const [hfIngestRunning, setHfIngestRunning] = useState(false);\n const [hfIngestResult, setHfIngestResult] =\n useState<HuggingFaceDatasetIngestResponse | null>(null);\n const [hfRepoId, setHfRepoId] = useState(\"elizaos/eliza-1-training\");\n const [hfRevision, setHfRevision] = useState(\"main\");\n const [hfFiles, setHfFiles] = useState(\n DEFAULT_ELIZA1_HF_DATASET_FILES.join(\"\\n\"),\n );\n const [hfOutputDir, setHfOutputDir] = useState(\"\");\n const [hfDryRun, setHfDryRun] = useState(true);\n const [feedGenerationRunning, setFeedGenerationRunning] = useState(false);\n const [feedGenerationResult, setFeedGenerationResult] =\n useState<RunFeedGenerationResponse | null>(null);\n const [feedArchetypes, setFeedArchetypes] = useState(\"trader\");\n const [feedNumAgents, setFeedNumAgents] = useState(\"1\");\n const [feedTicks, setFeedTicks] = useState(\"1\");\n const [feedParallel, setFeedParallel] = useState(\"1\");\n const [feedOutputDir, setFeedOutputDir] = useState(\"\");\n const [feedCleanup, setFeedCleanup] = useState(true);\n const [feedDryRun, setFeedDryRun] = useState(true);\n const [naturalSanitizedJsonlPath, setNaturalSanitizedJsonlPath] =\n useState(\"\");\n const [naturalRawJsonlPath, setNaturalRawJsonlPath] = useState(\"\");\n const [naturalRunId, setNaturalRunId] = useState(\"\");\n const [naturalTasks, setNaturalTasks] = useState(\"response,action_planner\");\n const [naturalIncludeRaw, setNaturalIncludeRaw] = useState(false);\n const [scenarioFilter, setScenarioFilter] = useState(\n \"deterministic-pr-smoke\",\n );\n const [scenarioOutputDir, setScenarioOutputDir] = useState(\"\");\n const [scenarioDryRun, setScenarioDryRun] = useState(true);\n const [scenarioExportNative, setScenarioExportNative] = useState(true);\n const [scenarioDeterministicProxy, setScenarioDeterministicProxy] =\n useState(true);\n const [scenarioRunning, setScenarioRunning] = useState(false);\n const [scenarioResult, setScenarioResult] =\n useState<RunScenarioResponse | null>(null);\n const [evalComparisonRunning, setEvalComparisonRunning] = useState(false);\n const [evalComparisonResult, setEvalComparisonResult] =\n useState<RunLocalEvalComparisonResponse | null>(null);\n const [evalComparisonEnabled, setEvalComparisonEnabled] = useState(true);\n const [evalComparisonManifestPath, setEvalComparisonManifestPath] =\n useState(\"\");\n const [evalComparisonBaseModel, setEvalComparisonBaseModel] =\n useState(\"eliza-1-2b-base\");\n const [evalComparisonTrainedModelPath, setEvalComparisonTrainedModelPath] =\n useState(\"eliza-1-2b-trained\");\n const [evalComparisonBackend, setEvalComparisonBackend] = useState<\n \"cpu\" | \"mlx\" | \"cuda\"\n >(\"cpu\");\n const [evalComparisonOutputDir, setEvalComparisonOutputDir] = useState(\"\");\n const [evalComparisonDryRun, setEvalComparisonDryRun] = useState(true);\n const [benchmarkRunning, setBenchmarkRunning] = useState(false);\n const [benchmarkResult, setBenchmarkResult] =\n useState<RunBenchmarkVsCerebrasResponse | null>(null);\n const [benchmarkTiers, setBenchmarkTiers] = useState(\"2b\");\n const [benchmarkKind, setBenchmarkKind] = useState<\n \"eliza_harness_action_selection\" | \"hermes\" | \"clawbench\" | \"all\"\n >(\"eliza_harness_action_selection\");\n const [benchmarkVariants, setBenchmarkVariants] = useState<\n \"trained\" | \"base\" | \"both\"\n >(\"both\");\n const [benchmarkMaxSamples, setBenchmarkMaxSamples] = useState(\"50\");\n const [benchmarkResultsDb, setBenchmarkResultsDb] = useState(\"\");\n const [benchmarkTrainedModelPath, setBenchmarkTrainedModelPath] =\n useState(\"\");\n const [benchmarkMatrixOutputDir, setBenchmarkMatrixOutputDir] = useState(\"\");\n const [benchmarkDryRun, setBenchmarkDryRun] = useState(true);\n const [bundleStageRunning, setBundleStageRunning] = useState(false);\n const [bundleStageResult, setBundleStageResult] =\n useState<StageEliza1BundleResponse | null>(null);\n const [bundleStageRepoId, setBundleStageRepoId] = useState(\"elizaos/eliza-1\");\n const [bundleStageTier, setBundleStageTier] = useState(\"2b\");\n const [bundleStageLocalDir, setBundleStageLocalDir] = useState(\n \"/tmp/eliza-1-bundles\",\n );\n const [bundleStageOutputDir, setBundleStageOutputDir] = useState(\"\");\n const [bundleStageMaxBytes, setBundleStageMaxBytes] = useState(\"8589934592\");\n const [bundleStageApply, setBundleStageApply] = useState(false);\n const [actionBenchmarkRunning, setActionBenchmarkRunning] = useState(false);\n const [actionBenchmarkResult, setActionBenchmarkResult] =\n useState<RunActionBenchmarkResponse | null>(null);\n const [actionBenchmarkFilter, setActionBenchmarkFilter] = useState(\"\");\n const [actionBenchmarkRunsPerCase, setActionBenchmarkRunsPerCase] =\n useState(\"1\");\n const [actionBenchmarkOutputDir, setActionBenchmarkOutputDir] = useState(\"\");\n const [actionBenchmarkModelId, setActionBenchmarkModelId] =\n useState(\"eliza-1-2b-trained\");\n const [actionBenchmarkRuntimeModel, setActionBenchmarkRuntimeModel] =\n useState(\"eliza-1-2b-trained\");\n const [actionBenchmarkPairEnabled, setActionBenchmarkPairEnabled] =\n useState(true);\n const [actionBenchmarkPairTiers, setActionBenchmarkPairTiers] =\n useState(\"2b\");\n const [actionBenchmarkBaseModelId, setActionBenchmarkBaseModelId] =\n useState(\"eliza-1-2b-base\");\n const [actionBenchmarkBaseRuntimeModel, setActionBenchmarkBaseRuntimeModel] =\n useState(\"eliza-1-2b-base\");\n const [actionBenchmarkProvider, setActionBenchmarkProvider] =\n useState(\"local-llama-cpp\");\n const [actionBenchmarkBaseUrl, setActionBenchmarkBaseUrl] = useState(\n \"http://localhost:11434/v1\",\n );\n const [actionBenchmarkVariant, setActionBenchmarkVariant] = useState<\n \"reference\" | \"base\" | \"trained\"\n >(\"trained\");\n const [actionBenchmarkTier, setActionBenchmarkTier] = useState(\"2b\");\n const [actionBenchmarkMatrixBenchmark, setActionBenchmarkMatrixBenchmark] =\n useState(\"eliza_harness_action_selection\");\n const [actionBenchmarkDatasetVersion, setActionBenchmarkDatasetVersion] =\n useState(\"eliza-native-v1\");\n const [actionBenchmarkUseMocks, setActionBenchmarkUseMocks] = useState(false);\n const [actionBenchmarkCapture, setActionBenchmarkCapture] = useState(true);\n const [actionBenchmarkDryRun, setActionBenchmarkDryRun] = useState(true);\n\n const [selectedDatasetId, setSelectedDatasetId] = useState(\"\");\n const [selectedJobId, setSelectedJobId] = useState(\"\");\n const [selectedModelId, setSelectedModelId] = useState(\"\");\n\n const [buildLimit, setBuildLimit] = useState(\"250\");\n const [buildMinCalls, setBuildMinCalls] = useState(\"1\");\n const [datasetBuilding, setDatasetBuilding] = useState(false);\n\n const [startBackend, setStartBackend] = useState<\"mlx\" | \"cuda\" | \"cpu\">(\n \"cpu\",\n );\n const [startModel, setStartModel] = useState(\"\");\n const [startIterations, setStartIterations] = useState(\"\");\n const [startBatchSize, setStartBatchSize] = useState(\"\");\n const [startLearningRate, setStartLearningRate] = useState(\"\");\n const [startingJob, setStartingJob] = useState(false);\n const [cancellingJobId, setCancellingJobId] = useState(\"\");\n\n const [importModelName, setImportModelName] = useState(\"\");\n const [importBaseModel, setImportBaseModel] = useState(\"\");\n const [importOllamaUrl, setImportOllamaUrl] = useState(\n \"http://localhost:11434\",\n );\n const [activateProviderModel, setActivateProviderModel] = useState(\"\");\n const [modelAction, setModelAction] = useState(\"\");\n const [smokeResult, setSmokeResult] = useState<string | null>(null);\n\n const [trainingEvents, setTrainingEvents] = useState<TrainingStreamEvent[]>(\n [],\n );\n\n const selectedJob = useMemo(\n () => jobs.find((job) => job.id === selectedJobId) ?? null,\n [jobs, selectedJobId],\n );\n const selectedModel = useMemo(\n () => models.find((model) => model.id === selectedModelId) ?? null,\n [models, selectedModelId],\n );\n const activeRunningJob = useMemo(\n () =>\n jobs.find((job) => job.status === \"running\" || job.status === \"queued\") ??\n null,\n [jobs],\n );\n\n const loadStatus = useCallback(async () => {\n const nextStatus = await client.getTrainingStatus();\n setStatus(nextStatus);\n }, []);\n\n const loadTrajectories = useCallback(async () => {\n const listed = await client.listTrainingTrajectories({\n limit: 100,\n offset: 0,\n });\n setTrajectoryList(listed);\n }, []);\n\n const loadDatasets = useCallback(async () => {\n const listed = await client.listTrainingDatasets();\n const nextDatasets = asArray<TrainingDatasetRecord>(listed.datasets);\n setDatasets(nextDatasets);\n setSelectedDatasetId((prev) => {\n if (prev && nextDatasets.some((dataset) => dataset.id === prev)) {\n return prev;\n }\n return nextDatasets[0]?.id ?? \"\";\n });\n }, []);\n\n const loadJobs = useCallback(async () => {\n const listed = await client.listTrainingJobs();\n const nextJobs = asArray<TrainingJobRecord>(listed.jobs);\n setJobs(nextJobs);\n setSelectedJobId((prev) => {\n if (prev && nextJobs.some((job) => job.id === prev)) return prev;\n return nextJobs[0]?.id ?? \"\";\n });\n }, []);\n\n const loadModels = useCallback(async () => {\n const listed = await client.listTrainingModels();\n const nextModels = asArray<TrainingModelRecord>(listed.models);\n setModels(nextModels);\n setSelectedModelId((prev) => {\n if (prev && nextModels.some((model) => model.id === prev)) return prev;\n return nextModels[0]?.id ?? \"\";\n });\n }, []);\n\n const loadCollectionHistory = useCallback(async () => {\n setCollectionHistoryLoading(true);\n try {\n const listed = await client.listTrainingCollections({ limit: 10 });\n setCollectionHistory(listed);\n } catch (err) {\n // Collection history is one panel among many. A failure here must not\n // reject the shared refreshAll() Promise.all and blank the whole view —\n // surface it as a non-blocking notice and keep any prior history.\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToLoadCollectionHistory\", {\n defaultValue: \"Failed to load collection history\",\n }),\n \"error\",\n 4200,\n );\n } finally {\n setCollectionHistoryLoading(false);\n }\n }, [setActionNotice, t]);\n\n const refreshAll = useCallback(async () => {\n setPageLoading(true);\n setErrorMessage(null);\n try {\n await Promise.all([\n loadStatus(),\n loadTrajectories(),\n loadDatasets(),\n loadJobs(),\n loadModels(),\n loadCollectionHistory(),\n ]);\n } catch (err) {\n setErrorMessage(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRefreshState\"),\n );\n } finally {\n setPageLoading(false);\n }\n }, [\n loadCollectionHistory,\n loadDatasets,\n loadJobs,\n loadModels,\n loadStatus,\n loadTrajectories,\n t,\n ]);\n\n const loadTrajectoryDetail = useCallback(\n async (trajectoryId: string) => {\n setTrajectoryLoading(true);\n try {\n const result = await client.getTrainingTrajectory(trajectoryId);\n setSelectedTrajectory(result.trajectory);\n } catch (err) {\n const message =\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToLoadTrajectoryDetail\");\n setActionNotice(message, \"error\", 4200);\n } finally {\n setTrajectoryLoading(false);\n }\n },\n [setActionNotice, t],\n );\n\n const handlePublishTrajectories = useCallback(async () => {\n setPublishingTrajectories(true);\n try {\n const response = await fetch(\"/api/training/trajectories/publish\", {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({}),\n });\n if (response.status === 409) {\n setPublishConfigured(false);\n const detail = (await response.json().catch(() => null)) as {\n error?: string;\n } | null;\n setActionNotice(\n detail?.error ?? t(\"finetuningview.HuggingFacePublishNotConfigured\"),\n \"error\",\n 5200,\n );\n return;\n }\n const payload = (await response.json().catch(() => null)) as {\n error?: string;\n trajectoriesPublished?: number;\n cloudUpload?: { huggingFaceRepo?: string; huggingFacePath?: string };\n } | null;\n if (!response.ok) {\n setActionNotice(\n payload?.error ?? t(\"finetuningview.FailedToPublishTrajectories\"),\n \"error\",\n 5200,\n );\n return;\n }\n setPublishConfigured(true);\n setActionNotice(\n t(\"finetuningview.PublishedTrajectoriesMessage\", {\n count: payload?.trajectoriesPublished ?? 0,\n repo: payload?.cloudUpload?.huggingFaceRepo ?? \"\",\n }),\n \"success\",\n 4200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToPublishTrajectories\"),\n \"error\",\n 5200,\n );\n } finally {\n setPublishingTrajectories(false);\n }\n }, [setActionNotice, t]);\n\n const handleBuildDataset = useCallback(async () => {\n setDatasetBuilding(true);\n try {\n const limit = parsePositiveInteger(buildLimit);\n const minLlmCallsPerTrajectory = parsePositiveInteger(buildMinCalls);\n const request: { limit?: number; minLlmCallsPerTrajectory?: number } = {};\n if (typeof limit === \"number\") request.limit = limit;\n if (typeof minLlmCallsPerTrajectory === \"number\") {\n request.minLlmCallsPerTrajectory = minLlmCallsPerTrajectory;\n }\n\n const result = await client.buildTrainingDataset(request);\n setSelectedDatasetId(result.dataset.id);\n await Promise.all([loadDatasets(), loadStatus()]);\n setActionNotice(\n t(\"finetuningview.BuiltDatasetMessage\", {\n id: result.dataset.id,\n count: result.dataset.sampleCount,\n }),\n \"success\",\n 3800,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToBuildDataset\"),\n \"error\",\n 4200,\n );\n } finally {\n setDatasetBuilding(false);\n }\n }, [buildLimit, buildMinCalls, loadDatasets, loadStatus, setActionNotice, t]);\n\n const handleBuildAnalysisIndex = useCallback(async () => {\n setAnalysisBuilding(true);\n try {\n const result = await client.buildTrainingAnalysisIndex();\n setAnalysisIndex(result);\n setActionNotice(\n t(\"finetuningview.BuiltAnalysisIndexMessage\", {\n count: result.manifest.artifacts.length,\n }),\n \"success\",\n 4200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToBuildAnalysisIndex\"),\n \"error\",\n 5200,\n );\n } finally {\n setAnalysisBuilding(false);\n }\n }, [setActionNotice, t]);\n\n const handleBuildReadinessReport = useCallback(async () => {\n setReadinessBuilding(true);\n try {\n const result = await client.buildTrainingReadinessReport();\n setReadinessReport(result);\n setActionNotice(\n t(\"finetuningview.ReadinessReportCompleted\", {\n status: result.report.status,\n missing: result.report.counts.missing ?? 0,\n }),\n result.report.status === \"missing\" ? \"error\" : \"success\",\n 5200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToBuildReadinessReport\"),\n \"error\",\n 5200,\n );\n } finally {\n setReadinessBuilding(false);\n }\n }, [setActionNotice, t]);\n\n const handleRunReadinessRecommendation = useCallback(\n async (checkId: string, action: TrainingReadinessRecommendedAction) => {\n setReadinessActionRunning(checkId);\n try {\n const result = await interact(action.capability, action.params);\n if (action.capability === \"terminal-training-build-analysis-index\") {\n setAnalysisIndex(result as TrainingAnalysisIndexResponse);\n } else if (\n action.capability === \"terminal-training-build-readiness-report\"\n ) {\n setReadinessReport(result as TrainingReadinessReportResponse);\n } else if (\n action.capability === \"terminal-training-ingest-hf-dataset\"\n ) {\n setHfIngestResult(result as HuggingFaceDatasetIngestResponse);\n } else if (action.capability === \"terminal-training-feed-generate\") {\n setFeedGenerationResult(result as RunFeedGenerationResponse);\n } else if (\n action.capability === \"terminal-training-run-eval-comparison\"\n ) {\n setEvalComparisonResult(result as RunLocalEvalComparisonResponse);\n } else if (action.capability === \"terminal-training-run-scenarios\") {\n setScenarioResult(result as RunScenarioResponse);\n } else if (\n action.capability === \"terminal-training-run-benchmark-vs-cerebras\"\n ) {\n setBenchmarkResult(result as RunBenchmarkVsCerebrasResponse);\n } else if (\n action.capability === \"terminal-training-stage-eliza1-bundle\"\n ) {\n setBundleStageResult(result as StageEliza1BundleResponse);\n } else if (\n action.capability === \"terminal-training-run-action-benchmark\"\n ) {\n setActionBenchmarkResult(result as RunActionBenchmarkResponse);\n } else if (action.capability === \"terminal-training-run-collection\") {\n setCollectionResult(result as RunTrainingCollectionResponse);\n await loadCollectionHistory();\n }\n\n if (action.capability !== \"terminal-training-build-readiness-report\") {\n const refreshed = await client.buildTrainingReadinessReport();\n setReadinessReport(refreshed);\n }\n\n setActionNotice(\n t(\"finetuningview.ReadinessRecommendationCompleted\", {\n defaultValue: `Ran ${action.capability}`,\n }),\n \"success\",\n 5200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunReadinessRecommendation\", {\n defaultValue: \"Failed to run readiness recommendation\",\n }),\n \"error\",\n 5200,\n );\n } finally {\n setReadinessActionRunning(null);\n }\n },\n [loadCollectionHistory, setActionNotice, t],\n );\n\n const handleRunTrainingCollection = useCallback(\n async (preflightOnly = false) => {\n if (preflightOnly) {\n setCollectionPreflightRunning(true);\n } else {\n setCollectionRunning(true);\n }\n try {\n const hfFilesList = hfFiles\n .split(/\\r?\\n|,/)\n .map((file) => file.trim())\n .filter(Boolean);\n const actionBenchmarkTiers = parseCollectionTierList(\n actionBenchmarkPairTiers,\n );\n const actionBenchmarkTierForSinglePair =\n actionBenchmarkTier.trim() || undefined;\n const useDerivedActionBenchmarkPairs =\n actionBenchmarkPairEnabled &&\n actionBenchmarkTiers.length > 0 &&\n (actionBenchmarkTiers.length > 1 ||\n actionBenchmarkTiers[0] !== actionBenchmarkTierForSinglePair);\n const naturalTaskList = naturalTasks\n .split(\",\")\n .map((task) => task.trim())\n .filter(Boolean);\n const naturalTrajectoryOptions =\n naturalSanitizedJsonlPath.trim() ||\n naturalRawJsonlPath.trim() ||\n naturalRunId.trim() ||\n naturalTaskList.length > 0 ||\n naturalIncludeRaw\n ? {\n sanitizedJsonlPath:\n naturalSanitizedJsonlPath.trim() || undefined,\n rawJsonlPath: naturalRawJsonlPath.trim() || undefined,\n includeRawJsonl:\n naturalIncludeRaw || !!naturalRawJsonlPath.trim(),\n tasks: naturalTaskList.length > 0 ? naturalTaskList : undefined,\n source: {\n kind: \"training_collection_natural_trajectories\",\n runId: naturalRunId.trim() || undefined,\n metadata: {\n ui: true,\n sanitizedJsonlPath:\n naturalSanitizedJsonlPath.trim() || undefined,\n rawJsonlPath: naturalRawJsonlPath.trim() || undefined,\n },\n },\n }\n : undefined;\n const result = await client.runTrainingCollection({\n preflightOnly,\n preflightProbe: collectionPreflightProbe,\n includeHuggingFace: true,\n includeFeed: true,\n includeNaturalTrajectories: true,\n includeTestTrajectories: true,\n includeScenarios: true,\n includeEvalComparison: evalComparisonEnabled,\n includeActionBenchmark: true,\n includeBenchmarkVsCerebras: true,\n includeEliza1ModelRegistry: true,\n includeEliza1BundleStage: true,\n includeBenchmarkMatrix: true,\n huggingFace: {\n repoId: hfRepoId.trim() || undefined,\n revision: hfRevision.trim() || undefined,\n files: hfFilesList.length > 0 ? hfFilesList : undefined,\n dryRun: hfDryRun,\n outputDir: hfOutputDir.trim() || undefined,\n },\n feed: {\n archetypes: feedArchetypes.trim() || undefined,\n numAgents: parsePositiveInteger(feedNumAgents),\n ticks: parsePositiveInteger(feedTicks),\n parallel: parsePositiveInteger(feedParallel),\n cleanup: feedCleanup,\n dryRun: feedDryRun,\n outputDir: feedOutputDir.trim() || undefined,\n },\n naturalTrajectories: naturalTrajectoryOptions,\n scenarios: {\n dryRun: scenarioDryRun,\n scenario: scenarioFilter.trim() || undefined,\n outputDir: scenarioOutputDir.trim() || undefined,\n exportNative: scenarioExportNative,\n useDeterministicProxy: scenarioDeterministicProxy,\n },\n evalComparison: {\n manifestPath: evalComparisonManifestPath.trim() || undefined,\n model: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonBaseModel.trim() || undefined,\n trainedModelPath: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonTrainedModelPath.trim() || undefined,\n backend: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonBackend,\n outputDir: evalComparisonOutputDir.trim() || undefined,\n dryRun: evalComparisonDryRun,\n },\n actionBenchmark: {\n filter: actionBenchmarkFilter.trim() || undefined,\n runsPerCase: parsePositiveInteger(actionBenchmarkRunsPerCase),\n outputDir: actionBenchmarkOutputDir.trim() || undefined,\n provider: actionBenchmarkProvider.trim() || undefined,\n modelId: actionBenchmarkModelId.trim() || undefined,\n runtimeModel: actionBenchmarkRuntimeModel.trim() || undefined,\n baseUrl: actionBenchmarkBaseUrl.trim() || undefined,\n variant: actionBenchmarkVariant,\n tier: actionBenchmarkTier.trim() || undefined,\n benchmark: actionBenchmarkMatrixBenchmark.trim() || undefined,\n datasetVersion: actionBenchmarkDatasetVersion.trim() || undefined,\n useMocks: actionBenchmarkUseMocks,\n forceTrajectoryCapture: actionBenchmarkCapture,\n dryRun: actionBenchmarkDryRun,\n },\n actionBenchmarkPair: actionBenchmarkPairEnabled\n ? !useDerivedActionBenchmarkPairs\n ? {\n tier: actionBenchmarkTierForSinglePair,\n base: {\n modelId: actionBenchmarkBaseModelId.trim() || undefined,\n runtimeModel:\n actionBenchmarkBaseRuntimeModel.trim() || undefined,\n variant: \"base\",\n },\n trained: {\n modelId: actionBenchmarkModelId.trim() || undefined,\n runtimeModel:\n actionBenchmarkRuntimeModel.trim() || undefined,\n variant: \"trained\",\n },\n }\n : undefined\n : undefined,\n actionBenchmarkPairs: useDerivedActionBenchmarkPairs\n ? actionBenchmarkTiers.map((tier) => ({\n tier,\n base: { variant: \"base\" },\n trained: { variant: \"trained\" },\n }))\n : undefined,\n benchmarkVsCerebras: {\n tiers: benchmarkTiers.trim() || undefined,\n benchmark: benchmarkKind,\n variants: benchmarkVariants,\n maxSamples: parsePositiveInteger(benchmarkMaxSamples),\n dryRun: benchmarkDryRun,\n resultsDb: benchmarkResultsDb.trim() || undefined,\n trainedModelPath: benchmarkTrainedModelPath.trim() || undefined,\n matrixOutputDir: benchmarkMatrixOutputDir.trim() || undefined,\n },\n eliza1BundleStage: {\n repoId: bundleStageRepoId.trim() || undefined,\n tier: bundleStageTier.trim() || undefined,\n localDir: bundleStageLocalDir.trim() || undefined,\n outputDir: bundleStageOutputDir.trim() || undefined,\n maxBytes: parsePositiveInteger(bundleStageMaxBytes),\n apply: bundleStageApply,\n },\n });\n if (\"preflight\" in result) {\n setCollectionPreflightResult(result.preflight);\n setActionNotice(\n t(\"finetuningview.CollectionPreflightCompleted\", {\n defaultValue: \"Collection preflight completed\",\n }),\n \"success\",\n 5200,\n );\n return;\n }\n setCollectionResult(result);\n setCollectionPreflightResult(\n result.manifest.evidence.preflight ?? null,\n );\n setAnalysisIndex(result.analysis);\n await loadCollectionHistory();\n setActionNotice(\n t(\"finetuningview.TrainingCollectionCompleted\", {\n count: result.analysis.manifest.artifacts.length,\n }),\n \"success\",\n 5200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunTrainingCollection\"),\n \"error\",\n 5200,\n );\n } finally {\n if (preflightOnly) {\n setCollectionPreflightRunning(false);\n } else {\n setCollectionRunning(false);\n }\n }\n },\n [\n actionBenchmarkCapture,\n actionBenchmarkDryRun,\n actionBenchmarkFilter,\n actionBenchmarkBaseModelId,\n actionBenchmarkBaseRuntimeModel,\n actionBenchmarkDatasetVersion,\n actionBenchmarkMatrixBenchmark,\n actionBenchmarkModelId,\n actionBenchmarkBaseUrl,\n actionBenchmarkOutputDir,\n actionBenchmarkPairEnabled,\n actionBenchmarkPairTiers,\n actionBenchmarkProvider,\n actionBenchmarkRunsPerCase,\n actionBenchmarkRuntimeModel,\n actionBenchmarkTier,\n actionBenchmarkUseMocks,\n actionBenchmarkVariant,\n benchmarkDryRun,\n benchmarkKind,\n benchmarkMatrixOutputDir,\n benchmarkMaxSamples,\n benchmarkResultsDb,\n benchmarkTiers,\n benchmarkTrainedModelPath,\n benchmarkVariants,\n bundleStageApply,\n bundleStageLocalDir,\n bundleStageMaxBytes,\n bundleStageOutputDir,\n bundleStageRepoId,\n bundleStageTier,\n collectionPreflightProbe,\n evalComparisonBackend,\n evalComparisonBaseModel,\n evalComparisonDryRun,\n evalComparisonEnabled,\n evalComparisonManifestPath,\n evalComparisonOutputDir,\n evalComparisonTrainedModelPath,\n feedArchetypes,\n feedCleanup,\n feedDryRun,\n feedNumAgents,\n feedOutputDir,\n feedParallel,\n feedTicks,\n hfDryRun,\n hfFiles,\n hfOutputDir,\n hfRepoId,\n hfRevision,\n loadCollectionHistory,\n naturalIncludeRaw,\n naturalRawJsonlPath,\n naturalRunId,\n naturalSanitizedJsonlPath,\n naturalTasks,\n scenarioDeterministicProxy,\n scenarioDryRun,\n scenarioExportNative,\n scenarioFilter,\n scenarioOutputDir,\n setActionNotice,\n t,\n ],\n );\n\n const handleRunEvalComparison = useCallback(async () => {\n setEvalComparisonRunning(true);\n try {\n const result = await client.runTrainingLocalEvalComparison({\n manifestPath: evalComparisonManifestPath.trim() || undefined,\n model: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonBaseModel.trim() || undefined,\n trainedModelPath: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonTrainedModelPath.trim() || undefined,\n backend: evalComparisonManifestPath.trim()\n ? undefined\n : evalComparisonBackend,\n outputDir: evalComparisonOutputDir.trim() || undefined,\n dryRun: evalComparisonDryRun,\n });\n setEvalComparisonResult(result);\n setActionNotice(\n result.exitCode === 0\n ? t(\"finetuningview.EvalComparisonCompleted\")\n : t(\"finetuningview.EvalComparisonFailed\", {\n exitCode: result.exitCode,\n }),\n result.exitCode === 0 ? \"success\" : \"error\",\n 5200,\n );\n if (!evalComparisonDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunEvalComparison\"),\n \"error\",\n 5200,\n );\n } finally {\n setEvalComparisonRunning(false);\n }\n }, [\n evalComparisonBackend,\n evalComparisonBaseModel,\n evalComparisonDryRun,\n evalComparisonManifestPath,\n evalComparisonOutputDir,\n evalComparisonTrainedModelPath,\n handleBuildAnalysisIndex,\n setActionNotice,\n t,\n ]);\n\n const handleRunBenchmarkVsCerebras = useCallback(async () => {\n setBenchmarkRunning(true);\n try {\n const maxSamples = parsePositiveInteger(benchmarkMaxSamples);\n const result = await client.runTrainingBenchmarkVsCerebras({\n tiers: benchmarkTiers.trim() || undefined,\n benchmark: benchmarkKind,\n variants: benchmarkVariants,\n maxSamples: typeof maxSamples === \"number\" ? maxSamples : undefined,\n dryRun: benchmarkDryRun,\n resultsDb: benchmarkResultsDb.trim() || undefined,\n trainedModelPath: benchmarkTrainedModelPath.trim() || undefined,\n matrixOutputDir: benchmarkMatrixOutputDir.trim() || undefined,\n });\n setBenchmarkResult(result);\n setActionNotice(\n result.exitCode === 0\n ? t(\"finetuningview.BenchmarkVsCerebrasCompleted\")\n : t(\"finetuningview.BenchmarkVsCerebrasFailed\", {\n exitCode: result.exitCode,\n }),\n result.exitCode === 0 ? \"success\" : \"error\",\n 5200,\n );\n if (!benchmarkDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunBenchmarkVsCerebras\"),\n \"error\",\n 5200,\n );\n } finally {\n setBenchmarkRunning(false);\n }\n }, [\n benchmarkDryRun,\n benchmarkKind,\n benchmarkMatrixOutputDir,\n benchmarkMaxSamples,\n benchmarkResultsDb,\n benchmarkTiers,\n benchmarkTrainedModelPath,\n benchmarkVariants,\n handleBuildAnalysisIndex,\n setActionNotice,\n t,\n ]);\n\n const handleStageEliza1Bundle = useCallback(async () => {\n setBundleStageRunning(true);\n try {\n const result = await client.stageEliza1Bundle({\n repoId: bundleStageRepoId.trim() || undefined,\n tier: bundleStageTier.trim() || undefined,\n localDir: bundleStageLocalDir.trim() || undefined,\n outputDir: bundleStageOutputDir.trim() || undefined,\n maxBytes: parsePositiveInteger(bundleStageMaxBytes),\n apply: bundleStageApply,\n });\n setBundleStageResult(result);\n setActionNotice(\n result.exitCode === 0\n ? t(\"finetuningview.Eliza1BundleStageCompleted\")\n : t(\"finetuningview.Eliza1BundleStageFailed\", {\n exitCode: result.exitCode,\n }),\n result.exitCode === 0 ? \"success\" : \"error\",\n 5200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToStageEliza1Bundle\"),\n \"error\",\n 5200,\n );\n } finally {\n setBundleStageRunning(false);\n }\n }, [\n bundleStageApply,\n bundleStageLocalDir,\n bundleStageMaxBytes,\n bundleStageOutputDir,\n bundleStageRepoId,\n bundleStageTier,\n setActionNotice,\n t,\n ]);\n\n const handleIngestHuggingFaceDataset = useCallback(async () => {\n setHfIngestRunning(true);\n try {\n const files = hfFiles\n .split(/\\r?\\n|,/)\n .map((file) => file.trim())\n .filter(Boolean);\n const result = await client.ingestHuggingFaceTrainingDataset({\n repoId: hfRepoId.trim() || undefined,\n revision: hfRevision.trim() || undefined,\n files: files.length > 0 ? files : undefined,\n outputDir: hfOutputDir.trim() || undefined,\n dryRun: hfDryRun,\n });\n setHfIngestResult(result);\n setActionNotice(\n t(\"finetuningview.IngestedHuggingFaceDatasetMessage\", {\n files: result.manifest.counts.files ?? result.manifest.files.length,\n rows: result.manifest.counts.jsonlRows ?? 0,\n }),\n \"success\",\n 5200,\n );\n if (!hfDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToIngestHuggingFaceDataset\"),\n \"error\",\n 5200,\n );\n } finally {\n setHfIngestRunning(false);\n }\n }, [\n handleBuildAnalysisIndex,\n hfDryRun,\n hfFiles,\n hfOutputDir,\n hfRepoId,\n hfRevision,\n setActionNotice,\n t,\n ]);\n\n const handleRunActionBenchmark = useCallback(async () => {\n setActionBenchmarkRunning(true);\n try {\n const result = await client.runTrainingActionBenchmark({\n filter: actionBenchmarkFilter.trim() || undefined,\n runsPerCase: parsePositiveInteger(actionBenchmarkRunsPerCase),\n outputDir: actionBenchmarkOutputDir.trim() || undefined,\n provider: actionBenchmarkProvider.trim() || undefined,\n modelId: actionBenchmarkModelId.trim() || undefined,\n runtimeModel: actionBenchmarkRuntimeModel.trim() || undefined,\n baseUrl: actionBenchmarkBaseUrl.trim() || undefined,\n variant: actionBenchmarkVariant,\n tier: actionBenchmarkTier.trim() || undefined,\n benchmark: actionBenchmarkMatrixBenchmark.trim() || undefined,\n datasetVersion: actionBenchmarkDatasetVersion.trim() || undefined,\n useMocks: actionBenchmarkUseMocks,\n forceTrajectoryCapture: actionBenchmarkCapture,\n dryRun: actionBenchmarkDryRun,\n });\n setActionBenchmarkResult(result);\n setActionNotice(\n result.exitCode === 0\n ? t(\"finetuningview.ActionBenchmarkCompleted\")\n : t(\"finetuningview.ActionBenchmarkFailed\", {\n exitCode: result.exitCode,\n }),\n result.exitCode === 0 ? \"success\" : \"error\",\n 5200,\n );\n if (!actionBenchmarkDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunActionBenchmark\"),\n \"error\",\n 5200,\n );\n } finally {\n setActionBenchmarkRunning(false);\n }\n }, [\n actionBenchmarkCapture,\n actionBenchmarkDryRun,\n actionBenchmarkFilter,\n actionBenchmarkDatasetVersion,\n actionBenchmarkMatrixBenchmark,\n actionBenchmarkModelId,\n actionBenchmarkBaseUrl,\n actionBenchmarkOutputDir,\n actionBenchmarkProvider,\n actionBenchmarkRunsPerCase,\n actionBenchmarkRuntimeModel,\n actionBenchmarkTier,\n actionBenchmarkUseMocks,\n actionBenchmarkVariant,\n handleBuildAnalysisIndex,\n setActionNotice,\n t,\n ]);\n\n const handleRunFeedGeneration = useCallback(async () => {\n setFeedGenerationRunning(true);\n try {\n const result = await client.runFeedTrainingGeneration({\n archetypes: feedArchetypes.trim() || undefined,\n numAgents: parsePositiveInteger(feedNumAgents),\n ticks: parsePositiveInteger(feedTicks),\n parallel: parsePositiveInteger(feedParallel),\n cleanup: feedCleanup,\n dryRun: feedDryRun,\n outputDir: feedOutputDir.trim() || undefined,\n });\n setFeedGenerationResult(result);\n setActionNotice(\n t(\"finetuningview.FeedGenerationCompleted\"),\n \"success\",\n 5200,\n );\n if (!feedDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunFeedGeneration\"),\n \"error\",\n 5200,\n );\n } finally {\n setFeedGenerationRunning(false);\n }\n }, [\n feedArchetypes,\n feedCleanup,\n feedDryRun,\n feedNumAgents,\n feedOutputDir,\n feedParallel,\n feedTicks,\n handleBuildAnalysisIndex,\n setActionNotice,\n t,\n ]);\n\n const handleRunScenarios = useCallback(async () => {\n setScenarioRunning(true);\n try {\n const result = await client.runTrainingScenarios({\n scenario: scenarioFilter.trim() || undefined,\n outputDir: scenarioOutputDir.trim() || undefined,\n exportNative: scenarioExportNative,\n useDeterministicProxy: scenarioDeterministicProxy,\n dryRun: scenarioDryRun,\n });\n setScenarioResult(result);\n setActionNotice(\n result.exitCode === 0\n ? t(\"finetuningview.ScenariosCompleted\")\n : t(\"finetuningview.ScenariosFailed\", {\n exitCode: result.exitCode,\n }),\n result.exitCode === 0 ? \"success\" : \"error\",\n 5200,\n );\n if (!scenarioDryRun) {\n void handleBuildAnalysisIndex();\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunScenarios\"),\n \"error\",\n 5200,\n );\n } finally {\n setScenarioRunning(false);\n }\n }, [\n handleBuildAnalysisIndex,\n scenarioDeterministicProxy,\n scenarioDryRun,\n scenarioExportNative,\n scenarioFilter,\n scenarioOutputDir,\n setActionNotice,\n t,\n ]);\n\n const handleStartJob = useCallback(async () => {\n setStartingJob(true);\n try {\n const options: StartTrainingOptions = {\n datasetId: selectedDatasetId || undefined,\n backend: startBackend,\n model: startModel.trim() || undefined,\n iterations: parsePositiveInteger(startIterations),\n batchSize: parsePositiveInteger(startBatchSize),\n learningRate: parsePositiveFloat(startLearningRate),\n };\n const result = await client.startTrainingJob(options);\n setSelectedJobId(result.job.id);\n await Promise.all([loadJobs(), loadStatus()]);\n setActionNotice(\n t(\"finetuningview.StartedTrainingJobMessage\", { id: result.job.id }),\n \"success\",\n 3200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToStartTrainingJob\"),\n \"error\",\n 4200,\n );\n } finally {\n setStartingJob(false);\n }\n }, [\n loadJobs,\n loadStatus,\n selectedDatasetId,\n setActionNotice,\n startBackend,\n startBatchSize,\n startIterations,\n startLearningRate,\n startModel,\n t,\n ]);\n\n const handleCancelJob = useCallback(\n async (jobId: string) => {\n setCancellingJobId(jobId);\n try {\n await client.cancelTrainingJob(jobId);\n await Promise.all([loadJobs(), loadStatus()]);\n setActionNotice(\n t(\"finetuningview.CancelledJobMessage\", { id: jobId }),\n \"success\",\n 2600,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToCancelJob\", { id: jobId }),\n \"error\",\n 4200,\n );\n } finally {\n setCancellingJobId(\"\");\n }\n },\n [loadJobs, loadStatus, setActionNotice, t],\n );\n\n const handleImportSelectedModel = useCallback(async () => {\n if (!selectedModel) return;\n const actionId = `import:${selectedModel.id}`;\n setModelAction(actionId);\n try {\n const result = await client.importTrainingModelToOllama(\n selectedModel.id,\n {\n modelName: importModelName.trim() || undefined,\n baseModel: importBaseModel.trim() || undefined,\n ollamaUrl: importOllamaUrl.trim() || undefined,\n },\n );\n await loadModels();\n setActivateProviderModel(\n result.model.ollamaModel ? `ollama/${result.model.ollamaModel}` : \"\",\n );\n setActionNotice(\n t(\"finetuningview.ImportedModelToOllamaMessage\", {\n id: result.model.id,\n ollamaModel: result.model.ollamaModel\n ? ` as ${result.model.ollamaModel}`\n : \"\",\n }),\n \"success\",\n 4200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToImportModelToOllama\"),\n \"error\",\n 4200,\n );\n } finally {\n setModelAction(\"\");\n }\n }, [\n importBaseModel,\n importModelName,\n importOllamaUrl,\n loadModels,\n selectedModel,\n setActionNotice,\n t,\n ]);\n\n const handleActivateSelectedModel = useCallback(async () => {\n if (!selectedModel) return;\n const actionId = `activate:${selectedModel.id}`;\n setModelAction(actionId);\n try {\n const result = await client.activateTrainingModel(\n selectedModel.id,\n activateProviderModel.trim() || undefined,\n );\n await loadModels();\n setActionNotice(\n t(\"finetuningview.ActivatedModelMessage\", {\n id: result.modelId,\n providerModel: result.providerModel,\n }),\n \"success\",\n 4200,\n );\n if (result.needsRestart) {\n const shouldRestart = await confirmDesktopAction({\n title: t(\"finetuningview.RestartAgentTitle\"),\n message: t(\"finetuningview.RestartAgentMessage\"),\n confirmLabel: t(\"finetuningview.Restart\"),\n cancelLabel: t(\"restartbanner.Later\"),\n type: \"question\",\n });\n if (shouldRestart) {\n await handleRestart();\n }\n }\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToActivateModel\"),\n \"error\",\n 4200,\n );\n } finally {\n setModelAction(\"\");\n }\n }, [\n activateProviderModel,\n handleRestart,\n loadModels,\n selectedModel,\n setActionNotice,\n t,\n ]);\n\n const handleBenchmarkSelectedModel = useCallback(async () => {\n if (!selectedModel) return;\n const actionId = `benchmark:${selectedModel.id}`;\n setModelAction(actionId);\n try {\n const result = await client.benchmarkTrainingModel(selectedModel.id);\n await loadModels();\n setActionNotice(\n t(\"finetuningview.BenchmarkStatusMessage\", {\n status: result.status,\n id: selectedModel.id,\n }),\n result.status === \"passed\" ? \"success\" : \"error\",\n 4200,\n );\n } catch (err) {\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToBenchmarkModel\"),\n \"error\",\n 4200,\n );\n } finally {\n setModelAction(\"\");\n }\n }, [loadModels, selectedModel, setActionNotice, t]);\n\n const handleSmokeTestSelectedModel = useCallback(async () => {\n if (!selectedModel) return;\n const actionId = `smoke:${selectedModel.id}`;\n setModelAction(actionId);\n try {\n const result = await client.sendChatRest(\n \"Model smoke test. Reply with exactly: MODEL_OK\",\n );\n setSmokeResult(result.text);\n setActionNotice(t(\"finetuningview.SmokeTestCompleted\"), \"success\", 3200);\n } catch (err) {\n setSmokeResult(null);\n setActionNotice(\n err instanceof Error\n ? err.message\n : t(\"finetuningview.FailedToRunSmokeTest\"),\n \"error\",\n 4200,\n );\n } finally {\n setModelAction(\"\");\n }\n }, [selectedModel, setActionNotice, t]);\n\n useEffect(() => {\n void refreshAll();\n }, [refreshAll]);\n\n useIntervalWhenDocumentVisible(() => {\n void loadStatus();\n void loadJobs();\n void loadModels();\n }, 5000);\n\n useEffect(() => {\n const unbind = client.onWsEvent(\n \"training_event\",\n (rawEnvelope: Record<string, unknown>) => {\n const event = asTrainingEvent(\n rawEnvelope as Partial<StreamEventEnvelope>,\n );\n if (!event) return;\n setTrainingEvents((prev) => {\n const merged = [event, ...prev];\n return merged.slice(0, 240);\n });\n if (event.kind !== \"job_log\") {\n void loadStatus();\n void loadJobs();\n void loadModels();\n if (event.kind === \"dataset_built\") {\n void loadDatasets();\n }\n }\n },\n );\n return () => {\n unbind();\n };\n }, [loadDatasets, loadJobs, loadModels, loadStatus]);\n\n const onBuildDataset = useCallback(() => {\n void handleBuildDataset();\n }, [handleBuildDataset]);\n const onRefreshDatasets = useCallback(() => {\n void loadDatasets();\n }, [loadDatasets]);\n const onStartJob = useCallback(() => {\n void handleStartJob();\n }, [handleStartJob]);\n const onRefreshJobs = useCallback(() => {\n void loadJobs();\n void loadStatus();\n }, [loadJobs, loadStatus]);\n const onCancelJob = useCallback(\n (jobId: string) => {\n void handleCancelJob(jobId);\n },\n [handleCancelJob],\n );\n const onImportModel = useCallback(() => {\n void handleImportSelectedModel();\n }, [handleImportSelectedModel]);\n const onActivateModel = useCallback(() => {\n void handleActivateSelectedModel();\n }, [handleActivateSelectedModel]);\n const onBenchmarkModel = useCallback(() => {\n void handleBenchmarkSelectedModel();\n }, [handleBenchmarkSelectedModel]);\n const onSmokeTestModel = useCallback(() => {\n void handleSmokeTestSelectedModel();\n }, [handleSmokeTestSelectedModel]);\n\n if (pageLoading) {\n return (\n <ContentLayout contentHeader={contentHeader}>\n <div data-testid=\"fine-tuning-view\" className=\"text-sm text-muted\">\n {t(\"finetuningview.LoadingFineTuning\")}\n </div>\n </ContentLayout>\n );\n }\n\n return (\n <ContentLayout contentHeader={contentHeader}>\n <div data-testid=\"fine-tuning-view\" className=\"space-y-4 pb-32\">\n <section className=\"px-2 py-2\">\n <div className=\"flex flex-wrap items-center justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-txt\">\n {t(\"finetuningview.FineTuning\")}\n </h2>\n </div>\n <TrainingActionButton\n agentId=\"action-refresh-all\"\n label={t(\"finetuningview.RefreshAll\")}\n group=\"overview\"\n description=\"Refresh all training status, datasets, jobs, and models\"\n onClick={() => {\n void refreshAll();\n }}\n >\n {t(\"finetuningview.RefreshAll\")}\n </TrainingActionButton>\n </div>\n {errorMessage && (\n <div className=\"mt-3 px-1 py-2 text-sm text-danger\">\n {errorMessage}\n </div>\n )}\n </section>\n\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.Status\")}\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3 text-sm md:grid-cols-3 xl:grid-cols-6\">\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Runtime\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.runtimeAvailable\n ? t(\"finetuningview.Ready\")\n : t(\"finetuningview.Offline\")}\n </div>\n </div>\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.RunningJobs\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.runningJobs ?? 0}\n </div>\n </div>\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.QueuedJobs\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.queuedJobs ?? 0}\n </div>\n </div>\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Datasets\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.datasetCount ?? 0}\n </div>\n </div>\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Models\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.modelCount ?? 0}\n </div>\n </div>\n <div className={FINE_TUNING_STATUS_CARD_CLASS}>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.FailedJobs\")}\n </div>\n <div className=\"mt-2 text-base font-semibold text-txt\">\n {status?.failedJobs ?? 0}\n </div>\n </div>\n </div>\n </section>\n\n <TrajectoriesSection\n trajectoryList={trajectoryList}\n selectedTrajectory={selectedTrajectory}\n trajectoryLoading={trajectoryLoading}\n publishingTrajectories={publishingTrajectories}\n publishConfigured={publishConfigured}\n onRefresh={() => {\n void loadTrajectories();\n }}\n onSelectTrajectory={(trajectoryId) => {\n void loadTrajectoryDetail(trajectoryId);\n }}\n onPublishTrajectories={() => {\n void handlePublishTrajectories();\n }}\n t={t}\n />\n\n <section className={FINE_TUNING_SECTION_CLASS}>\n <div className={FINE_TUNING_SECTION_HEADER_CLASS}>\n <div className=\"text-lg font-semibold text-txt\">\n {t(\"finetuningview.TrainingAnalysisIndex\", {\n defaultValue: \"Training analysis\",\n })}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <TrainingActionButton\n agentId=\"action-collect-and-index\"\n label={t(\"finetuningview.CollectAndIndex\", {\n defaultValue: \"Collect and index\",\n })}\n group=\"analysis\"\n description=\"Run the full training data collection and build the analysis index\"\n disabled={collectionRunning}\n onClick={() => {\n void handleRunTrainingCollection();\n }}\n >\n {collectionRunning\n ? t(\"finetuningview.Collecting\", {\n defaultValue: \"Collecting\",\n })\n : t(\"finetuningview.CollectAndIndex\", {\n defaultValue: \"Collect and index\",\n })}\n </TrainingActionButton>\n <TrainingActionButton\n agentId=\"action-collection-preflight\"\n label=\"Run collection preflight\"\n group=\"analysis\"\n description=\"Run a preflight check of the training data collection without writing artifacts\"\n disabled={collectionPreflightRunning}\n onClick={() => {\n void handleRunTrainingCollection(true);\n }}\n >\n {collectionPreflightRunning\n ? \"Checking\"\n : \"Run collection preflight\"}\n </TrainingActionButton>\n <TrainingActionButton\n agentId=\"action-build-analysis-index\"\n label={t(\"finetuningview.BuildAnalysisIndex\", {\n defaultValue: \"Build index\",\n })}\n group=\"analysis\"\n description=\"Build the training analysis index from collected artifacts\"\n disabled={analysisBuilding}\n onClick={() => {\n void handleBuildAnalysisIndex();\n }}\n >\n {analysisBuilding\n ? t(\"finetuningview.Indexing\", { defaultValue: \"Indexing\" })\n : t(\"finetuningview.BuildAnalysisIndex\", {\n defaultValue: \"Build index\",\n })}\n </TrainingActionButton>\n <TrainingActionButton\n agentId=\"action-build-readiness-report\"\n label={t(\"finetuningview.BuildReadinessReport\", {\n defaultValue: \"Readiness report\",\n })}\n group=\"analysis\"\n description=\"Build the training readiness report and surface missing checks\"\n disabled={readinessBuilding}\n onClick={() => {\n void handleBuildReadinessReport();\n }}\n >\n {readinessBuilding\n ? t(\"finetuningview.CheckingReadiness\", {\n defaultValue: \"Checking\",\n })\n : t(\"finetuningview.BuildReadinessReport\", {\n defaultValue: \"Readiness report\",\n })}\n </TrainingActionButton>\n </div>\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} p-3 text-sm`}>\n <div className=\"mb-3 pb-2\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"analysis-probe-endpoints\"\n label=\"Probe live endpoints\"\n group=\"analysis\"\n description=\"Probe live endpoints during the collection preflight\"\n checked={collectionPreflightProbe}\n onChange={setCollectionPreflightProbe}\n />\n Probe live endpoints\n </div>\n </div>\n <div className=\"mb-3 pb-2\">\n <div className=\"mb-2 text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Natural trajectory import\n </div>\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-1 text-xs text-muted md:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n Sanitized JSONL\n </span>\n <AgentTextField\n agentId=\"natural-sanitized-jsonl\"\n label=\"Sanitized JSONL path\"\n group=\"natural-import\"\n description=\"Path to the sanitized trajectory JSONL file\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={naturalSanitizedJsonlPath}\n onChange={setNaturalSanitizedJsonlPath}\n placeholder=\"/path/to/trajectories.sanitized.jsonl\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted md:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n Raw JSONL\n </span>\n <AgentTextField\n agentId=\"natural-raw-jsonl\"\n label=\"Raw JSONL path\"\n group=\"natural-import\"\n description=\"Path to the raw trajectory JSONL file\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={naturalRawJsonlPath}\n onChange={setNaturalRawJsonlPath}\n placeholder=\"/path/to/trajectories.raw.jsonl\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n Run ID\n </span>\n <AgentTextField\n agentId=\"natural-run-id\"\n label=\"Run ID\"\n group=\"natural-import\"\n description=\"Run identifier for the imported trajectories\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={naturalRunId}\n onChange={setNaturalRunId}\n placeholder=\"app-run-1\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n Task buckets\n </span>\n <AgentTextField\n agentId=\"natural-task-buckets\"\n label=\"Task buckets\"\n group=\"natural-import\"\n description=\"Comma-separated task buckets to import\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={naturalTasks}\n onChange={setNaturalTasks}\n placeholder=\"response,action_planner\"\n />\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"natural-include-raw\"\n label=\"Include raw trajectories\"\n group=\"natural-import\"\n description=\"Include raw trajectories in the import\"\n checked={naturalIncludeRaw}\n onChange={setNaturalIncludeRaw}\n />\n Include raw\n </div>\n </div>\n </div>\n {readinessReport ? (\n <div className=\"mb-3 pb-2\">\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Readiness\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {readinessReport.report.status}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ReadyChecks\")}\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n {readinessReport.report.counts.ready ?? 0}/\n {readinessReport.report.counts.checks ?? 0}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Missing\")}\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n {readinessReport.report.counts.missing ?? 0}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Report\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {readinessReport.reportPath}\n </div>\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"readiness-open-report\"\n label=\"Open readiness report\"\n group=\"readiness\"\n description=\"Open the readiness report file\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(readinessReport.reportPath),\n );\n }}\n >\n Open readiness report\n </AgentInlineButton>\n {readinessReport.report.analysisIndexHtmlPath ? (\n <AgentInlineButton\n agentId=\"readiness-open-viewer\"\n label=\"Open readiness viewer\"\n group=\"readiness\"\n description=\"Open the readiness analysis viewer\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(\n readinessReport.report.analysisIndexHtmlPath,\n ),\n );\n }}\n >\n Open readiness viewer\n </AgentInlineButton>\n ) : null}\n <AgentInlineButton\n agentId=\"readiness-open-output\"\n label=\"Open readiness output\"\n group=\"readiness\"\n description=\"Open the readiness output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(readinessReport.outputDir),\n );\n }}\n >\n Open readiness output\n </AgentInlineButton>\n </div>\n {readinessReport.report.checks.some(\n (check) => check.status !== \"ready\",\n ) ? (\n <div className=\"mt-3 space-y-2\">\n {readinessReport.report.checks\n .filter((check) => check.status !== \"ready\")\n .slice(0, 5)\n .map((check) => (\n <ReadinessCheckRow\n key={check.id}\n check={check}\n readinessActionRunning={readinessActionRunning}\n onRunRecommendation={handleRunReadinessRecommendation}\n t={t}\n />\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n {collectionPreflightResult ? (\n <div className=\"mb-3 pb-2\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Collection preflight\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n live:{collectionPreflightResult.liveRequired ? \"yes\" : \"no\"}{\" \"}\n {collectionPreflightResult.checks\n .map(\n (check) =>\n `${check.id}:${check.status}${\n check.path ? `->${check.path}` : \"\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult ? (\n <div className=\"mb-3 grid gap-3 pb-2 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Collection\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.outputDir}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Manifest\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifestPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Run summary\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.readmePath}\n </div>\n <AgentInlineButton\n agentId=\"collection-open-summary\"\n label=\"Open collection summary\"\n group=\"collection-result\"\n description=\"Open the collection run summary\"\n className={`${FINE_TUNING_ACTION_CLASS} mt-2`}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(collectionResult.readmePath),\n )\n }\n >\n Open summary\n </AgentInlineButton>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Steps\")}\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n {collectionResult.manifest.steps\n .map((step) => `${step.id}:${step.status}`)\n .join(\" \")}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Viewer\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.analysis.indexHtmlPath}\n </div>\n <AgentInlineButton\n agentId=\"collection-open-viewer\"\n label=\"Open collection viewer\"\n group=\"collection-result\"\n description=\"Open the collection analysis viewer\"\n className={`${FINE_TUNING_ACTION_CLASS} mt-2`}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(\n collectionResult.manifest.analysis.indexHtmlPath,\n ),\n )\n }\n >\n Open viewer\n </AgentInlineButton>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Collection index\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.collectionIndex.indexHtmlPath}\n </div>\n <AgentInlineButton\n agentId=\"collection-open-index\"\n label=\"Open collection index\"\n group=\"collection-result\"\n description=\"Open the collection index\"\n className={`${FINE_TUNING_ACTION_CLASS} mt-2`}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(\n collectionResult.collectionIndex.indexHtmlPath,\n ),\n )\n }\n >\n Open index\n </AgentInlineButton>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Readiness\")}\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n {collectionResult.manifest.readiness.status}{\" \"}\n {collectionResult.manifest.readiness.ready}/\n {collectionResult.manifest.readiness.ready +\n collectionResult.manifest.readiness.partial +\n collectionResult.manifest.readiness.missing}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Data sources\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n hf:\n {\n collectionResult.manifest.evidence.dataSources\n .huggingFaceDatasets\n }{\" \"}\n feed:\n {\n collectionResult.manifest.evidence.dataSources\n .feedDatasets\n }{\" \"}\n natural:\n {\n collectionResult.manifest.evidence.dataSources\n .naturalTrajectoryBundles\n }{\" \"}\n scenarios:\n {\n collectionResult.manifest.evidence.dataSources\n .scenarioRuns\n }{\" \"}\n native:\n {\n collectionResult.manifest.evidence.dataSources\n .scenarioNativeDatasets\n }{\" \"}\n tests:\n {\n collectionResult.manifest.evidence.dataSources\n .testTrajectories\n }{\" \"}\n jsonl:\n {\n collectionResult.manifest.evidence.dataSources\n .trainingJsonlDatasets\n }\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Eval evidence\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n evals:\n {collectionResult.manifest.evidence.evals.evalArtifacts}{\" \"}\n matrices:\n {collectionResult.manifest.evidence.evals.benchmarkMatrices}{\" \"}\n models:{collectionResult.manifest.evidence.training.models}\n {formatModelInventorySummary(\n collectionResult.manifest.evidence.training\n .modelInventory,\n )}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark evidence\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n pairs:\n {\n collectionResult.manifest.evidence.benchmarks\n .actionBenchmarkPairs\n }{\" \"}\n sources:\n {\n collectionResult.manifest.evidence.benchmarks\n .actionBenchmarkMatrixSources\n }{\" \"}\n rows:\n {\n collectionResult.manifest.evidence.benchmarks\n .benchmarkRows\n }{\" \"}\n comparisons:\n {\n collectionResult.manifest.evidence.benchmarks\n .benchmarkComparisons\n }\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark tiers\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.benchmarks.tiers\n .length > 0\n ? collectionResult.manifest.evidence.benchmarks.tiers.join(\n \",\",\n )\n : \"none\"}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark readiness\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n smallest:\n {\n collectionResult.manifest.evidence.benchmarkReadiness\n .smallestTier\n }{\" \"}\n improvement:\n {\n collectionResult.manifest.evidence.benchmarkReadiness\n .baseTrainedImprovement\n }{\" \"}\n all-tier:\n {\n collectionResult.manifest.evidence.benchmarkReadiness\n .allEliza1TierImprovements\n }{\" \"}\n samples:\n {collectionResult.manifest.evidence.readinessGaps.find(\n (gap) => gap.id === \"readable_source_samples\",\n )?.status ?? \"ready\"}\n </div>\n </div>\n {collectionResult.manifest.evidence.preflight ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Live preflight\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n live:\n {collectionResult.manifest.evidence.preflight.liveRequired\n ? \"yes\"\n : \"no\"}{\" \"}\n {collectionResult.manifest.evidence.preflight.checks\n .map(\n (check) =>\n `${check.id}:${check.status}${\n check.path ? `->${check.path}` : \"\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.artifactLinks.length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Evidence artifacts\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.artifactLinks\n .slice(0, 8)\n .map(\n (artifact) =>\n `${artifact.category}:${artifact.title} -> ${artifact.path}`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.stepArtifacts?.length ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Step artifact outputs\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.stepArtifacts\n .flatMap((step) =>\n step.paths\n .slice(0, 3)\n .map(\n (path) =>\n `${step.stepId}:${path.label}->${path.path}${\n step.command?.length\n ? ` cmd:${step.command.join(\" \")}`\n : \"\"\n }${\n step.stdout ? ` stdout:${step.stdout}` : \"\"\n }${step.stderr ? ` stderr:${step.stderr}` : \"\"}`,\n ),\n )\n .slice(0, 8)\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.feed?.runs.length ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Feed generation evidence\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.feed.runs\n .slice(0, 4)\n .map(\n (run) =>\n `${run.sourceKind ?? run.schema ?? \"feed\"} ${\n run.archetype ?? \"all\"\n } trajectories:${run.trajectories ?? \"n/a\"} ticks:${\n run.totalTicks ?? \"n/a\"\n } errors:${run.errors ?? \"n/a\"} -> ${run.path}`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.feed?.trajectorySamples\n .length ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Feed trajectory samples\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.feed.trajectorySamples\n .slice(0, 5)\n .map(\n (sample) =>\n `${sample.trajectoryId ?? \"trajectory\"} ${\n sample.archetype ?? \"archetype\"\n } scenario:${sample.scenarioId ?? \"n/a\"} score:${\n sample.score ?? \"n/a\"\n } steps:${sample.steps ?? \"n/a\"} first:${\n sample.firstStep ?? \"n/a\"\n } input:${sample.firstInput ?? \"n/a\"} output:${\n sample.firstOutput ?? \"n/a\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.sourceSamples &&\n Object.values(\n collectionResult.manifest.evidence.sourceSamples,\n ).flat().length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Collection source samples\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {Object.entries(\n collectionResult.manifest.evidence.sourceSamples,\n )\n .flatMap(([category, samples]) =>\n samples.slice(0, 2).map((sample) => {\n const input =\n typeof sample.input === \"string\"\n ? sample.input\n : JSON.stringify(sample.input);\n const output =\n typeof sample.output === \"string\"\n ? sample.output\n : JSON.stringify(sample.output);\n return `${category}:${\n sample.trajectoryId ?? sample.title\n } task:${sample.task ?? \"n/a\"} model:${\n sample.model ?? \"n/a\"\n } input:${input ?? \"n/a\"} output:${output ?? \"n/a\"}`;\n }),\n )\n .slice(0, 8)\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.evals.comparisonInventory\n ?.length ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Eval comparison evidence\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.evals.comparisonInventory\n .slice(0, 5)\n .map(\n (comparison) =>\n `${comparison.baseModel ?? \"base\"} -> ${\n comparison.trainedModel ?? \"trained\"\n } backend:${\n comparison.backend ?? \"n/a\"\n } base:${comparison.baseScore ?? \"n/a\"} trained:${\n comparison.trainedScore ?? \"n/a\"\n } improvement:${\n comparison.improvementPercent ?? \"n/a\"\n }% latency:${\n comparison.baseLatencyMs ?? \"n/a\"\n }ms->${comparison.trainedLatencyMs ?? \"n/a\"}ms report:${\n comparison.reportPath ?? comparison.path\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.benchmarks\n .improvementComparisons.length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark improvement\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.benchmarks.improvementComparisons\n .slice(0, 5)\n .map(\n (comparison) =>\n `${comparison.tier ?? \"tier\"} ${\n comparison.benchmark ?? \"benchmark\"\n } base:${comparison.baseScore ?? \"n/a\"} trained:${\n comparison.trainedScore ?? \"n/a\"\n } improvement:${\n comparison.improvementPercent ?? \"n/a\"\n }% evidence:${\n comparison.modelBacked\n ? \"model-backed\"\n : \"partial\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Baseline progression\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n order:\n {collectionResult.manifest.evidence.benchmarks.baselineProgress.tierOrder.join(\n \" -> \",\n )}{\" \"}\n established:\n {collectionResult.manifest.evidence.benchmarks.baselineProgress.establishedTiers.join(\n \",\",\n ) || \"none\"}{\" \"}\n next:\n {collectionResult.manifest.evidence.benchmarks\n .baselineProgress.nextTier ?? \"none\"}{\" \"}\n remaining:\n {collectionResult.manifest.evidence.benchmarks.baselineProgress.remainingTiers.join(\n \",\",\n ) || \"none\"}\n </div>\n </div>\n {collectionResult.manifest.evidence.benchmarks.caseSamples\n ?.length ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark case samples\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.benchmarks.caseSamples\n .slice(0, 5)\n .map(\n (sample) =>\n `${sample.tier ?? \"tier\"} ${\n sample.variant ?? \"variant\"\n } ${sample.caseId ?? \"case\"} pass:${\n sample.pass\n } input:${sample.prompt ?? \"n/a\"} expected:${\n sample.expectedAction ?? \"n/a\"\n } actual:${sample.actualAction ?? \"n/a\"} output:${\n sample.response ?? \"n/a\"\n } trajectory:${sample.trajectoryPath ?? \"n/a\"}`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n {collectionResult.manifest.evidence.readinessGaps.length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Readiness gaps\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {collectionResult.manifest.evidence.readinessGaps\n .slice(0, 5)\n .map(\n (gap) =>\n `${gap.id}:${gap.status}${\n gap.recommendedCapability\n ? ` -> ${gap.recommendedCapability}`\n : \"\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n </div>\n ) : null}\n {collectionHistory ? (\n <div className=\"mb-3 pb-2\">\n <div className=\"mb-2 flex flex-wrap items-center justify-between gap-2\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Saved collection runs\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n {collectionHistory.root}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n {collectionHistory.indexHtmlPath}\n </div>\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"collection-history-refresh\"\n label=\"Refresh collection runs\"\n group=\"collection-history\"\n description=\"Reload the saved collection runs list\"\n className={FINE_TUNING_ACTION_CLASS}\n disabled={collectionHistoryLoading}\n onClick={() => {\n void loadCollectionHistory();\n }}\n >\n {collectionHistoryLoading ? \"Refreshing\" : \"Refresh runs\"}\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"collection-history-open-index\"\n label=\"Open collection runs index\"\n group=\"collection-history\"\n description=\"Open the saved collection runs index\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(collectionHistory.indexHtmlPath),\n )\n }\n >\n Open collection index\n </AgentInlineButton>\n </div>\n </div>\n {collectionHistory.collections.length > 0 ? (\n <div className=\"grid gap-2\">\n {collectionHistory.collections.slice(0, 5).map((run) => (\n <div key={run.manifestPath} className=\"p-2\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <div className=\"break-all font-mono text-xs text-txt\">\n {run.generatedAt} {run.readinessStatus} ready:\n {run.readiness.ready} partial:\n {run.readiness.partial} missing:\n {run.readiness.missing}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n {run.outputDir}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n artifacts:{run.artifactCount} steps:\n {run.stepCounts.succeeded ?? 0} ok/\n {run.stepCounts.failed ?? 0} failed sources hf:\n {run.dataSources.huggingFaceDatasets} feed:\n {run.dataSources.feedDatasets} natural:\n {run.dataSources.naturalTrajectoryBundles} cases:\n {run.benchmarks.caseSamples} comparisons:\n {run.benchmarks.benchmarkComparisons} tiers:\n {run.benchmarks.tiers.join(\",\") || \"n/a\"}\n {run.benchmarks.comparisonInventory?.length\n ? ` ${run.benchmarks.comparisonInventory\n .slice(0, 2)\n .map(\n (comparison) =>\n `${comparison.tier ?? \"tier\"} ${\n comparison.benchmark ?? \"benchmark\"\n } base:${\n comparison.baseScore ?? \"n/a\"\n } trained:${\n comparison.trainedScore ?? \"n/a\"\n } reference:${\n comparison.referenceScore ?? \"n/a\"\n } improvement:${\n comparison.improvementPercent ?? \"n/a\"\n }% vs-reference:${\n comparison.trainedVsReferencePercent ??\n \"n/a\"\n }% ${\n comparison.dryRun\n ? \"dry-run\"\n : comparison.modelBacked\n ? \"model-backed\"\n : comparison.useMocks\n ? \"mocked\"\n : \"unverified\"\n }`,\n )\n .join(\" \")}`\n : \"\"}{\" \"}\n evals:{run.evals?.evalArtifacts ?? 0}{\" \"}\n eval-comparisons:\n {run.evals?.evalComparisons ?? 0}\n {run.evals?.comparisonInventory?.length\n ? ` ${run.evals.comparisonInventory\n .slice(0, 2)\n .map(\n (comparison) =>\n `${comparison.baseModel ?? \"base\"}->${\n comparison.trainedModel ?? \"trained\"\n } improvement:${\n comparison.improvementPercent ?? \"n/a\"\n }%`,\n )\n .join(\" \")}`\n : \"\"}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n baseline established:\n {run.benchmarks.baselineProgress.establishedTiers.join(\n \",\",\n ) || \"none\"}{\" \"}\n next:\n {run.benchmarks.baselineProgress.nextTier ??\n \"none\"}{\" \"}\n remaining:\n {run.benchmarks.baselineProgress.remainingTiers.join(\n \",\",\n ) || \"none\"}\n </div>\n {run.training ? (\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n models:{run.training.models} training-runs:\n {run.training.trainingRuns} inventory:\n {run.training.modelInventory.length}\n {run.training.modelInventory.length\n ? ` ${run.training.modelInventory\n .slice(0, 2)\n .map(\n (model) =>\n `${model.tier ?? \"tier\"} ${\n model.variant ?? \"variant\"\n } ${model.model ?? \"model\"} base:${\n model.baseModel ?? \"n/a\"\n } score:${\n model.baseEvalScore ?? \"n/a\"\n }->${\n model.trainedEvalScore ?? \"n/a\"\n } output:${\n model.outputPath ?? \"n/a\"\n } improvement:${\n model.evalImprovementPercent ??\n \"n/a\"\n }%`,\n )\n .join(\" \")}`\n : \"\"}\n </div>\n ) : null}\n {run.readinessGaps?.length ? (\n <>\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n gaps:{\" \"}\n {run.readinessGaps\n .slice(0, 4)\n .map(\n (gap) =>\n `${gap.id}:${gap.status}${\n gap.recommendedCapability\n ? `->${gap.recommendedCapability}`\n : \"\"\n }`,\n )\n .join(\" | \")}\n </div>\n {run.readinessGaps.some(\n (gap) => gap.recommendedCapability,\n ) ? (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {run.readinessGaps\n .filter(\n (gap) => gap.recommendedCapability,\n )\n .slice(0, 4)\n .map((gap) => (\n <AgentInlineButton\n key={`${run.manifestPath}:${gap.id}:${gap.recommendedCapability}`}\n agentId={`history-gap-${run.manifestPath}-${gap.id}`}\n label={`Run recommendation for ${gap.id}`}\n group=\"collection-history\"\n description={`Run the recommended action ${gap.recommendedCapability} for gap ${gap.id}`}\n title={`${gap.id}: ${gap.recommendedCapability}`}\n className={FINE_TUNING_ACTION_CLASS}\n disabled={\n readinessActionRunning ===\n `history:${gap.id}`\n }\n onClick={() => {\n const capability =\n gap.recommendedCapability;\n if (!capability) return;\n void handleRunReadinessRecommendation(\n `history:${gap.id}`,\n {\n label: gap.label,\n capability,\n params:\n gap.recommendedParams ?? {},\n },\n );\n }}\n >\n Run {gap.id}\n </AgentInlineButton>\n ))}\n </div>\n ) : null}\n </>\n ) : null}\n {run.coverage ? (\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n coverage samples:\n {run.coverage.readableSamples.total} hf:\n {run.coverage.dataSources.huggingFace} feed:\n {run.coverage.dataSources.feed} natural:\n {run.coverage.dataSources.natural} scenarios:\n {run.coverage.dataSources.scenarios} tests:\n {run.coverage.dataSources.tests} jsonl:\n {run.coverage.dataSources.trainingJsonl}{\" \"}\n scored-evals:\n {run.coverage.evals.scoredComparisons}/\n {run.coverage.evals.comparisons} scored-bench:\n {run.coverage.benchmarks.scoredComparisons}/\n {run.coverage.benchmarks.comparisons} all-tiers:\n {run.coverage.benchmarks.allEliza1TiersCovered\n ? \"yes\"\n : \"no\"}\n </div>\n ) : null}\n {run.sourceSamples &&\n Object.values(run.sourceSamples).flat().length >\n 0 ? (\n <div className=\"mt-1 break-all font-mono text-xs text-muted\">\n source samples:{\" \"}\n {Object.entries(run.sourceSamples)\n .flatMap(([category, samples]) =>\n samples.slice(0, 2).map((sample) => {\n const input = compactDisplayValue(\n sample.input,\n );\n const output = compactDisplayValue(\n sample.output,\n );\n return `${category}:${\n sample.trajectoryId ??\n sample.scenarioId ??\n sample.title\n } task:${\n sample.task ??\n sample.sourceKind ??\n \"n/a\"\n } input:${input || \"n/a\"} output:${\n output || \"n/a\"\n }`;\n }),\n )\n .slice(0, 8)\n .join(\" | \")}\n </div>\n ) : null}\n {run.sourceArtifacts?.length ? (\n <div className=\"mt-2 flex flex-wrap gap-1\">\n {run.sourceArtifacts\n .slice(0, 6)\n .map((artifact) => (\n <AgentInlineButton\n key={`${artifact.category}:${artifact.path}`}\n agentId={`history-source-artifact-${run.manifestPath}-${artifact.category}-${artifact.path}`}\n label={`Open source artifact ${artifact.category}:${artifact.title}`}\n group=\"collection-history\"\n description={`Open the source artifact ${artifact.path}`}\n variant=\"ghost\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(artifact.path),\n )\n }\n >\n {artifact.category}:{artifact.title}\n </AgentInlineButton>\n ))}\n </div>\n ) : null}\n {run.evidenceArtifacts?.length ? (\n <div className=\"mt-1 flex flex-wrap gap-1\">\n {run.evidenceArtifacts\n .slice(0, 6)\n .map((artifact) => (\n <AgentInlineButton\n key={`${artifact.category}:${artifact.path}`}\n agentId={`history-evidence-artifact-${run.manifestPath}-${artifact.category}-${artifact.path}`}\n label={`Open evidence artifact ${artifact.category}:${artifact.title}`}\n group=\"collection-history\"\n description={`Open the evidence artifact ${artifact.path}`}\n variant=\"ghost\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(artifact.path),\n )\n }\n >\n {artifact.category}:{artifact.title}\n </AgentInlineButton>\n ))}\n </div>\n ) : null}\n </div>\n <div className=\"flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId={`history-run-viewer-${run.manifestPath}`}\n label={`Open saved viewer for ${run.generatedAt}`}\n group=\"collection-history\"\n description=\"Open the saved collection run viewer\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(run.analysisIndexHtmlPath),\n )\n }\n >\n Open saved viewer\n </AgentInlineButton>\n <AgentInlineButton\n agentId={`history-run-summary-${run.manifestPath}`}\n label={`Open saved summary for ${run.generatedAt}`}\n group=\"collection-history\"\n description=\"Open the saved collection run summary\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(run.readmePath),\n )\n }\n >\n Open saved summary\n </AgentInlineButton>\n </div>\n </div>\n </div>\n ))}\n </div>\n ) : (\n <div className=\"font-mono text-xs text-muted\">None</div>\n )}\n </div>\n ) : null}\n {analysisIndex ? (\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Artifacts\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {analysisIndex.manifest.artifacts.length}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Viewer\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {analysisIndex.indexHtmlPath}\n </div>\n <AgentInlineButton\n agentId=\"analysis-open-viewer\"\n label=\"Open analysis viewer\"\n group=\"analysis\"\n description=\"Open the analysis index viewer\"\n className={`${FINE_TUNING_ACTION_CLASS} mt-2`}\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(analysisIndex.indexHtmlPath),\n )\n }\n >\n Open viewer\n </AgentInlineButton>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Manifest\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {analysisIndex.manifestPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Output\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {analysisIndex.outputDir}\n </div>\n </div>\n {analysisCoverage ? (\n <>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Source coverage\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n hf:{analysisCoverage.dataSources.huggingFace} feed:\n {analysisCoverage.dataSources.feed} natural:\n {analysisCoverage.dataSources.natural} scenarios:\n {analysisCoverage.dataSources.scenarios} tests:\n {analysisCoverage.dataSources.tests} jsonl:\n {analysisCoverage.dataSources.trainingJsonl}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Readable samples\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n total:{analysisCoverage.readableSamples.total} hf:\n {analysisCoverage.readableSamples.huggingFace} feed:\n {analysisCoverage.readableSamples.feed} natural:\n {analysisCoverage.readableSamples.natural} scenarios:\n {analysisCoverage.readableSamples.scenarios} tests:\n {analysisCoverage.readableSamples.tests} jsonl:\n {analysisCoverage.readableSamples.trainingJsonl}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Eval coverage\n </div>\n <div className=\"mt-1 font-mono text-xs text-txt\">\n evals:{analysisCoverage.evals} matrices:\n {analysisCoverage.benchmarkMatrices} models:\n {analysisCoverage.models}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Benchmark model stats\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n models:\n {analysisCoverage.benchmarkModelStats.modelCount} best:\n {analysisCoverage.benchmarkModelStats.bestModelId ??\n \"none\"}\n {analysisCoverage.benchmarkModelStats\n .bestAverageScore !== null\n ? ` avg:${analysisCoverage.benchmarkModelStats.bestAverageScore}`\n : \"\"}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Eliza-1 tier coverage\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {analysisCoverage.allEliza1TiersCovered\n ? \"all tiers covered\"\n : \"partial\"}{\" \"}\n {analysisCoverage.benchmarkTierCoverage\n .map(\n (tier) =>\n `${tier.tier}:${\n tier.hasBase ? \"base\" : \"-\"\n }/${tier.hasTrained ? \"trained\" : \"-\"}/${\n tier.hasReference ? \"ref\" : \"-\"\n }/${tier.hasImprovement ? \"improvement\" : \"-\"}`,\n )\n .join(\" \")}\n </div>\n </div>\n {analysisCoverage.benchmarkComparisons.length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Analysis benchmark improvement\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {analysisCoverage.benchmarkComparisons\n .slice(0, 5)\n .map(\n (comparison) =>\n `${comparison.tier ?? \"tier\"} ${\n comparison.benchmark ?? \"benchmark\"\n } base:${\n comparison.baseScore ?? \"n/a\"\n } trained:${\n comparison.trainedScore ?? \"n/a\"\n } reference:${\n comparison.referenceScore ?? \"n/a\"\n } improvement:${\n comparison.improvementPercent ?? \"n/a\"\n }% vs-ref:${\n comparison.trainedVsReferencePercent ?? \"n/a\"\n }%`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n </>\n ) : null}\n </div>\n ) : (\n <div className=\"text-xs text-muted\">\n {t(\"finetuningview.NoAnalysisIndexBuilt\")}\n </div>\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-4 p-3 text-sm`}>\n <div className=\"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.HuggingFaceRepo\")}\n </span>\n <AgentTextField\n agentId=\"hf-repo-id\"\n label=\"HuggingFace repo\"\n group=\"hf-ingest\"\n description=\"HuggingFace dataset repo id to ingest\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={hfRepoId}\n onChange={setHfRepoId}\n placeholder=\"elizaos/eliza-1-training\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Revision\")}\n </span>\n <AgentTextField\n agentId=\"hf-revision\"\n label=\"HuggingFace revision\"\n group=\"hf-ingest\"\n description=\"Dataset revision/branch to ingest\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={hfRevision}\n onChange={setHfRevision}\n placeholder=\"main\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted md:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Output\")}\n </span>\n <AgentTextField\n agentId=\"hf-output-dir\"\n label=\"HuggingFace output directory\"\n group=\"hf-ingest\"\n description=\"Output directory for the ingested dataset\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={hfOutputDir}\n onChange={setHfOutputDir}\n placeholder=\"default\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted md:col-span-2 xl:col-span-4\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Files\")}\n </span>\n <AgentTextAreaField\n agentId=\"hf-files\"\n label=\"HuggingFace files\"\n group=\"hf-ingest\"\n description=\"Newline-separated dataset files to ingest\"\n className=\"min-h-24 w-full border-border/60 bg-transparent px-3 py-2 font-mono text-xs text-txt outline-none focus:border-accent\"\n value={hfFiles}\n onChange={setHfFiles}\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"hf-dry-run\"\n label=\"HuggingFace ingest dry run\"\n group=\"hf-ingest\"\n description=\"Run the HuggingFace ingest as a dry run\"\n checked={hfDryRun}\n onChange={setHfDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-ingest-hf-dataset\"\n label={t(\"finetuningview.IngestHuggingFaceDataset\")}\n group=\"huggingface\"\n description=\"Ingest the configured HuggingFace dataset files into a training dataset\"\n disabled={hfIngestRunning}\n onClick={() => {\n void handleIngestHuggingFaceDataset();\n }}\n >\n {hfIngestRunning\n ? t(\"finetuningview.Ingesting\")\n : t(\"finetuningview.IngestHuggingFaceDataset\")}\n </TrainingActionButton>\n </div>\n </div>\n {hfIngestResult && (\n <>\n <div className=\"mt-3 grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Files\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {hfIngestResult.manifest.counts.files ??\n hfIngestResult.manifest.files.length}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Rows\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {hfIngestResult.manifest.counts.jsonlRows ?? 0}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Manifest\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {hfIngestResult.manifestPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Output\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {hfIngestResult.outputDir}\n </div>\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"hf-open-manifest\"\n label=\"Open HF manifest\"\n group=\"hf-ingest\"\n description=\"Open the HuggingFace ingest manifest\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(hfIngestResult.manifestPath),\n );\n }}\n >\n Open HF manifest\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"hf-open-output\"\n label=\"Open HF output\"\n group=\"hf-ingest\"\n description=\"Open the HuggingFace ingest output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(hfIngestResult.outputDir),\n );\n }}\n >\n Open HF output\n </AgentInlineButton>\n </div>\n </>\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-4 p-3 text-sm`}>\n <div className=\"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-5\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Archetypes\")}\n </span>\n <AgentTextField\n agentId=\"feed-archetypes\"\n label=\"Feed archetypes\"\n group=\"feed-gen\"\n description=\"Comma-separated archetypes for feed generation\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={feedArchetypes}\n onChange={setFeedArchetypes}\n placeholder=\"trader\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Agents\")}\n </span>\n <AgentTextField\n agentId=\"feed-num-agents\"\n label=\"Feed agents\"\n group=\"feed-gen\"\n description=\"Number of agents for feed generation\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={feedNumAgents}\n onChange={setFeedNumAgents}\n type=\"number\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Ticks\")}\n </span>\n <AgentTextField\n agentId=\"feed-ticks\"\n label=\"Feed ticks\"\n group=\"feed-gen\"\n description=\"Number of simulation ticks for feed generation\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={feedTicks}\n onChange={setFeedTicks}\n type=\"number\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Parallel\")}\n </span>\n <AgentTextField\n agentId=\"feed-parallel\"\n label=\"Feed parallelism\"\n group=\"feed-gen\"\n description=\"Parallelism for feed generation\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={feedParallel}\n onChange={setFeedParallel}\n type=\"number\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Output\")}\n </span>\n <AgentTextField\n agentId=\"feed-output-dir\"\n label=\"Feed output directory\"\n group=\"feed-gen\"\n description=\"Output directory for generated feed trajectories\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={feedOutputDir}\n onChange={setFeedOutputDir}\n placeholder=\"default\"\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"feed-cleanup\"\n label=\"Feed cleanup\"\n group=\"feed-gen\"\n description=\"Clean up intermediate feed artifacts\"\n checked={feedCleanup}\n onChange={setFeedCleanup}\n />\n {t(\"finetuningview.Cleanup\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"feed-dry-run\"\n label=\"Feed generation dry run\"\n group=\"feed-gen\"\n description=\"Run feed generation as a dry run\"\n checked={feedDryRun}\n onChange={setFeedDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-generate-feed-trajectories\"\n label={t(\"finetuningview.GenerateFeedTrajectories\")}\n group=\"feed\"\n description=\"Generate feed simulation trajectories for the configured archetypes\"\n disabled={feedGenerationRunning}\n onClick={() => {\n void handleRunFeedGeneration();\n }}\n >\n {feedGenerationRunning\n ? t(\"finetuningview.Generating\")\n : t(\"finetuningview.GenerateFeedTrajectories\")}\n </TrainingActionButton>\n </div>\n </div>\n {feedGenerationResult && (\n <>\n <div className=\"mt-3 grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {feedGenerationResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Output\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {feedGenerationResult.outputDir}\n </div>\n </div>\n <div className=\"md:col-span-2\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {feedGenerationResult.command.join(\" \")}\n </div>\n </div>\n {feedGenerationResult.artifacts.length > 0 ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Feed artifacts\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {feedGenerationResult.artifacts\n .map(\n (artifact) =>\n `${artifact.schema ?? \"feed\"}${\n artifact.sourceKind\n ? ` source:${artifact.sourceKind}`\n : \"\"\n } trajectories:${\n artifact.trajectories ?? \"n/a\"\n } manifest:${artifact.manifestPath}${\n artifact.exportPath\n ? ` export:${artifact.exportPath}`\n : \"\"\n }${\n artifact.outputDir\n ? ` output:${artifact.outputDir}`\n : \"\"\n }`,\n )\n .join(\" | \")}\n </div>\n </div>\n ) : null}\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"feed-open-output\"\n label=\"Open feed output\"\n group=\"feed-gen\"\n description=\"Open the feed generation output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(feedGenerationResult.outputDir),\n );\n }}\n >\n Open feed output\n </AgentInlineButton>\n {feedGenerationResult.artifacts[0]?.manifestPath ? (\n <AgentInlineButton\n agentId=\"feed-open-manifest\"\n label=\"Open feed manifest\"\n group=\"feed-gen\"\n description=\"Open the feed generation manifest\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(\n feedGenerationResult.artifacts[0].manifestPath,\n ),\n );\n }}\n >\n Open feed manifest\n </AgentInlineButton>\n ) : null}\n {feedGenerationResult.artifacts[0]?.exportPath ? (\n <AgentInlineButton\n agentId=\"feed-open-export\"\n label=\"Open feed export\"\n group=\"feed-gen\"\n description=\"Open the feed generation export\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n const exportPath =\n feedGenerationResult.artifacts[0]?.exportPath;\n if (!exportPath) return;\n void openExternalUrl(localViewerUrl(exportPath));\n }}\n >\n Open feed export\n </AgentInlineButton>\n ) : null}\n </div>\n </>\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-4 p-3 text-sm`}>\n <div className=\"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Scenario\")}\n </span>\n <AgentTextField\n agentId=\"scenario-filter\"\n label=\"Scenario filter\"\n group=\"scenarios\"\n description=\"Filter expression to select scenarios to run\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={scenarioFilter}\n onChange={setScenarioFilter}\n placeholder=\"deterministic-pr-smoke\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted sm:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Output\")}\n </span>\n <AgentTextField\n agentId=\"scenario-output-dir\"\n label=\"Scenario output directory\"\n group=\"scenarios\"\n description=\"Output directory for scenario results\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={scenarioOutputDir}\n onChange={setScenarioOutputDir}\n placeholder=\"default\"\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"scenario-export-native\"\n label=\"Export native trajectories\"\n group=\"scenarios\"\n description=\"Export native trajectories from scenario runs\"\n checked={scenarioExportNative}\n onChange={setScenarioExportNative}\n />\n {t(\"finetuningview.ExportNative\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"scenario-deterministic-proxy\"\n label=\"Deterministic proxy\"\n group=\"scenarios\"\n description=\"Use a deterministic proxy for scenario runs\"\n checked={scenarioDeterministicProxy}\n onChange={setScenarioDeterministicProxy}\n />\n {t(\"finetuningview.Proxy\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"scenario-dry-run\"\n label=\"Scenario dry run\"\n group=\"scenarios\"\n description=\"Run the scenario suite as a dry run\"\n checked={scenarioDryRun}\n onChange={setScenarioDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-run-scenarios\"\n label={t(\"finetuningview.RunScenarios\")}\n group=\"scenarios\"\n description=\"Run the configured scenario suite and export native trajectories\"\n disabled={scenarioRunning}\n onClick={() => {\n void handleRunScenarios();\n }}\n >\n {scenarioRunning\n ? t(\"finetuningview.RunningScenarios\")\n : t(\"finetuningview.RunScenarios\")}\n </TrainingActionButton>\n </div>\n </div>\n {scenarioResult && (\n <>\n <div className=\"mt-3 grid gap-3 md:grid-cols-2 xl:grid-cols-5\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {scenarioResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Matrix\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {scenarioResult.matrixPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Viewer\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {scenarioResult.viewerHtmlPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.NativeJsonl\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {scenarioResult.nativeJsonlPath ?? \"n/a\"}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {scenarioResult.command.join(\" \")}\n </div>\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"scenario-open-viewer\"\n label=\"Open scenario viewer\"\n group=\"scenarios\"\n description=\"Open the scenario results viewer\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(scenarioResult.viewerHtmlPath),\n );\n }}\n >\n Open scenario viewer\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"scenario-open-matrix\"\n label=\"Open scenario matrix\"\n group=\"scenarios\"\n description=\"Open the scenario results matrix\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(scenarioResult.matrixPath),\n );\n }}\n >\n Open scenario matrix\n </AgentInlineButton>\n {scenarioResult.nativeJsonlPath ? (\n <AgentInlineButton\n agentId=\"scenario-open-native-jsonl\"\n label=\"Open native JSONL\"\n group=\"scenarios\"\n description=\"Open the scenario native JSONL export\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n if (scenarioResult.nativeJsonlPath) {\n void openExternalUrl(\n localViewerUrl(scenarioResult.nativeJsonlPath),\n );\n }\n }}\n >\n Open native JSONL\n </AgentInlineButton>\n ) : null}\n <AgentInlineButton\n agentId=\"scenario-open-output\"\n label=\"Open scenario output\"\n group=\"scenarios\"\n description=\"Open the scenario output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(scenarioResult.outputDir),\n );\n }}\n >\n Open scenario output\n </AgentInlineButton>\n </div>\n </>\n )}\n </div>\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-4 p-3 text-sm`}>\n <div className=\"grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-5\">\n <div className=\"space-y-1 text-xs text-muted md:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Manifest\")}\n </span>\n <AgentTextField\n agentId=\"eval-manifest-path\"\n label=\"Eval manifest path\"\n group=\"eval-comparison\"\n description=\"Training manifest path for the eval comparison\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={evalComparisonManifestPath}\n onChange={setEvalComparisonManifestPath}\n placeholder=\"training manifest path\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BaseModel\")}\n </span>\n <AgentTextField\n agentId=\"eval-base-model\"\n label=\"Eval base model\"\n group=\"eval-comparison\"\n description=\"Base model id for the eval comparison\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={evalComparisonBaseModel}\n onChange={setEvalComparisonBaseModel}\n placeholder=\"eliza-1-2b-base\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.TrainedModel\")}\n </span>\n <AgentTextField\n agentId=\"eval-trained-model\"\n label=\"Eval trained model\"\n group=\"eval-comparison\"\n description=\"Trained model path for the eval comparison\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={evalComparisonTrainedModelPath}\n onChange={setEvalComparisonTrainedModelPath}\n placeholder=\"eliza-1-2b-trained\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Backend\")}\n </span>\n <AgentNativeSelect\n agentId=\"eval-backend\"\n label=\"Eval backend\"\n group=\"eval-comparison\"\n description=\"Compute backend for the eval comparison\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={evalComparisonBackend}\n onChange={(value) =>\n setEvalComparisonBackend(value as \"cpu\" | \"mlx\" | \"cuda\")\n }\n options={[\"cpu\", \"mlx\", \"cuda\"]}\n >\n <option value=\"cpu\">cpu</option>\n <option value=\"mlx\">mlx</option>\n <option value=\"cuda\">cuda</option>\n </AgentNativeSelect>\n </div>\n <div className=\"space-y-1 text-xs text-muted md:col-span-2 xl:col-span-5\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Output\")}\n </span>\n <AgentTextField\n agentId=\"eval-output-dir\"\n label=\"Eval output directory\"\n group=\"eval-comparison\"\n description=\"Output directory for the eval comparison\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={evalComparisonOutputDir}\n onChange={setEvalComparisonOutputDir}\n placeholder=\"default\"\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"eval-include-in-collection\"\n label=\"Include eval in collection\"\n group=\"eval-comparison\"\n description=\"Include the eval comparison in the collection run\"\n checked={evalComparisonEnabled}\n onChange={setEvalComparisonEnabled}\n />\n {t(\"finetuningview.IncludeInCollection\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"eval-dry-run\"\n label=\"Eval comparison dry run\"\n group=\"eval-comparison\"\n description=\"Run the eval comparison as a dry run\"\n checked={evalComparisonDryRun}\n onChange={setEvalComparisonDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-run-eval-comparison\"\n label={t(\"finetuningview.RunEvalComparison\")}\n group=\"eval-comparison\"\n description=\"Run a local eval comparison between the base and trained models\"\n disabled={evalComparisonRunning}\n onClick={() => {\n void handleRunEvalComparison();\n }}\n >\n {evalComparisonRunning\n ? t(\"finetuningview.Evaluating\")\n : t(\"finetuningview.RunEvalComparison\")}\n </TrainingActionButton>\n </div>\n </div>\n {evalComparisonResult && (\n <>\n <div className=\"mt-3 grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {evalComparisonResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Artifact\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {evalComparisonResult.artifactPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Report\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {evalComparisonResult.reportPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {evalComparisonResult.command.join(\" \")}\n </div>\n </div>\n {formatEvalComparisonSummary(evalComparisonResult) ? (\n <div className=\"md:col-span-2 xl:col-span-4\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n Eval metrics\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {formatEvalComparisonSummary(evalComparisonResult)}\n </div>\n </div>\n ) : null}\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"eval-open-artifact\"\n label=\"Open eval artifact\"\n group=\"eval-comparison\"\n description=\"Open the eval comparison artifact\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(evalComparisonResult.artifactPath),\n );\n }}\n >\n Open eval artifact\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"eval-open-report\"\n label=\"Open eval report\"\n group=\"eval-comparison\"\n description=\"Open the eval comparison report\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(evalComparisonResult.reportPath),\n );\n }}\n >\n Open eval report\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"eval-open-output\"\n label=\"Open eval output\"\n group=\"eval-comparison\"\n description=\"Open the eval comparison output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(evalComparisonResult.outputDir),\n );\n }}\n >\n Open eval output\n </AgentInlineButton>\n </div>\n </>\n )}\n </div>\n <div className=\"mt-4 grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-5\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Tiers\")}\n </span>\n <AgentTextField\n agentId=\"benchmark-tiers\"\n label=\"Benchmark tiers\"\n group=\"benchmark\"\n description=\"Comma-separated benchmark tiers to run\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkTiers}\n onChange={setBenchmarkTiers}\n placeholder={ELIZA_ONE_BENCHMARK_TIER_LIST}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Benchmark\")}\n </span>\n <AgentNativeSelect\n agentId=\"benchmark-kind\"\n label=\"Benchmark kind\"\n group=\"benchmark\"\n description=\"Which benchmark suite to run\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkKind}\n onChange={(value) =>\n setBenchmarkKind(\n value as\n | \"eliza_harness_action_selection\"\n | \"hermes\"\n | \"clawbench\"\n | \"all\",\n )\n }\n options={[\n \"eliza_harness_action_selection\",\n \"hermes\",\n \"clawbench\",\n \"all\",\n ]}\n >\n <option value=\"eliza_harness_action_selection\">\n eliza_harness_action_selection\n </option>\n <option value=\"hermes\">hermes</option>\n <option value=\"clawbench\">clawbench</option>\n <option value=\"all\">all</option>\n </AgentNativeSelect>\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Variants\")}\n </span>\n <AgentNativeSelect\n agentId=\"benchmark-variants\"\n label=\"Benchmark variants\"\n group=\"benchmark\"\n description=\"Which model variants to benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkVariants}\n onChange={(value) =>\n setBenchmarkVariants(value as \"trained\" | \"base\" | \"both\")\n }\n options={[\"both\", \"base\", \"trained\"]}\n >\n <option value=\"both\">both</option>\n <option value=\"base\">base</option>\n <option value=\"trained\">trained</option>\n </AgentNativeSelect>\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.MaxSamples\")}\n </span>\n <AgentTextField\n agentId=\"benchmark-max-samples\"\n label=\"Benchmark max samples\"\n group=\"benchmark\"\n description=\"Maximum samples per benchmark run\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkMaxSamples}\n onChange={setBenchmarkMaxSamples}\n type=\"number\"\n placeholder=\"50\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.ResultsDb\")}\n </span>\n <AgentTextField\n agentId=\"benchmark-results-db\"\n label=\"Benchmark results DB\"\n group=\"benchmark\"\n description=\"Path to the benchmark results database\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkResultsDb}\n onChange={setBenchmarkResultsDb}\n placeholder=\"default\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted sm:col-span-2 xl:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.TrainedModelPath\")}\n </span>\n <AgentTextField\n agentId=\"benchmark-trained-model-path\"\n label=\"Benchmark trained model path\"\n group=\"benchmark\"\n description=\"Path to the trained model for benchmarking\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkTrainedModelPath}\n onChange={setBenchmarkTrainedModelPath}\n placeholder=\"packages/training/checkpoints/eliza-1-2b/final\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.MatrixOutput\")}\n </span>\n <AgentTextField\n agentId=\"benchmark-matrix-output\"\n label=\"Benchmark matrix output\"\n group=\"benchmark\"\n description=\"Output directory for the benchmark matrix\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={benchmarkMatrixOutputDir}\n onChange={setBenchmarkMatrixOutputDir}\n placeholder=\"default\"\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"benchmark-dry-run\"\n label=\"Benchmark dry run\"\n group=\"benchmark\"\n description=\"Run the benchmark suite as a dry run\"\n checked={benchmarkDryRun}\n onChange={setBenchmarkDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-run-benchmark-vs-cerebras\"\n label={t(\"finetuningview.RunBenchmarkVsCerebras\")}\n group=\"benchmark\"\n description=\"Run the benchmark-vs-Cerebras suite for the configured tiers and variants\"\n disabled={benchmarkRunning}\n onClick={() => {\n void handleRunBenchmarkVsCerebras();\n }}\n >\n {benchmarkRunning\n ? t(\"finetuningview.RunningBenchmark\")\n : t(\"finetuningview.RunBenchmarkVsCerebras\")}\n </TrainingActionButton>\n </div>\n </div>\n {benchmarkResult && (\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-3 p-3 text-sm`}>\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {benchmarkResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ResultsDb\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {benchmarkResult.resultsDb ?? t(\"finetuningview.None\")}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.MatrixOutput\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {benchmarkResult.matrixOutputDir ??\n t(\"finetuningview.None\")}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.MatrixArtifact\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {benchmarkResult.matrixArtifactPath ??\n t(\"finetuningview.None\")}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Output\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {benchmarkResult.outputDir}\n </div>\n </div>\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {benchmarkResult.command.join(\" \")}\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n {benchmarkResult.matrixArtifactPath ? (\n <AgentInlineButton\n agentId=\"benchmark-open-matrix-artifact\"\n label=\"Open matrix artifact\"\n group=\"benchmark\"\n description=\"Open the benchmark matrix artifact\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n if (benchmarkResult.matrixArtifactPath) {\n void openExternalUrl(\n localViewerUrl(benchmarkResult.matrixArtifactPath),\n );\n }\n }}\n >\n Open matrix artifact\n </AgentInlineButton>\n ) : null}\n {benchmarkResult.outputDir ? (\n <AgentInlineButton\n agentId=\"benchmark-open-output\"\n label=\"Open benchmark output\"\n group=\"benchmark\"\n description=\"Open the benchmark output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(benchmarkResult.outputDir),\n );\n }}\n >\n Open benchmark output\n </AgentInlineButton>\n ) : null}\n </div>\n </div>\n )}\n <div className=\"mt-4 grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-5\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BundleRepo\")}\n </span>\n <AgentTextField\n agentId=\"bundle-repo-id\"\n label=\"Bundle repo\"\n group=\"bundle-stage\"\n description=\"HuggingFace repo id for the bundle\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={bundleStageRepoId}\n onChange={setBundleStageRepoId}\n placeholder=\"elizaos/eliza-1\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BundleTier\")}\n </span>\n <AgentNativeSelect\n agentId=\"bundle-tier\"\n label=\"Bundle tier\"\n group=\"bundle-stage\"\n description=\"Model tier to stage\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={bundleStageTier}\n onChange={setBundleStageTier}\n options={[\"2b\", \"4b\", \"9b\", \"27b\", \"27b-256k\"]}\n >\n <option value=\"2b\">2b</option>\n <option value=\"4b\">4b</option>\n <option value=\"9b\">9b</option>\n <option value=\"27b\">27b</option>\n <option value=\"27b-256k\">27b-256k</option>\n </AgentNativeSelect>\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.LocalDir\")}\n </span>\n <AgentTextField\n agentId=\"bundle-local-dir\"\n label=\"Bundle local directory\"\n group=\"bundle-stage\"\n description=\"Local directory to stage the bundle into\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={bundleStageLocalDir}\n onChange={setBundleStageLocalDir}\n placeholder=\"/tmp/eliza-1-bundles\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.MaxBytes\")}\n </span>\n <AgentTextField\n agentId=\"bundle-max-bytes\"\n label=\"Bundle max bytes\"\n group=\"bundle-stage\"\n description=\"Maximum bytes to stage for the bundle\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={bundleStageMaxBytes}\n onChange={setBundleStageMaxBytes}\n type=\"number\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted sm:col-span-2 xl:col-span-1\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.ManifestOutput\")}\n </span>\n <AgentTextField\n agentId=\"bundle-output-dir\"\n label=\"Bundle manifest output\"\n group=\"bundle-stage\"\n description=\"Output directory for the bundle manifest\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={bundleStageOutputDir}\n onChange={setBundleStageOutputDir}\n placeholder=\"default\"\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"bundle-apply\"\n label=\"Apply bundle\"\n group=\"bundle-stage\"\n description=\"Apply the staged bundle\"\n checked={bundleStageApply}\n onChange={setBundleStageApply}\n />\n {t(\"finetuningview.Apply\")}\n </div>\n <TrainingActionButton\n agentId=\"action-stage-eliza1-bundle\"\n label={t(\"finetuningview.StageEliza1Bundle\")}\n group=\"bundle\"\n description=\"Stage the Eliza-1 model bundle for the configured repo and tier\"\n disabled={bundleStageRunning}\n onClick={() => {\n void handleStageEliza1Bundle();\n }}\n >\n {bundleStageRunning\n ? t(\"finetuningview.StagingBundle\")\n : t(\"finetuningview.StageEliza1Bundle\")}\n </TrainingActionButton>\n </div>\n </div>\n {bundleStageResult && (\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-3 p-3 text-sm`}>\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {bundleStageResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.PlannedBytes\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {String(\n bundleStageResult.plan?.plannedBytes ??\n t(\"finetuningview.None\"),\n )}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.FileCount\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {String(\n bundleStageResult.plan?.fileCount ??\n t(\"finetuningview.None\"),\n )}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.BundleDir\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {String(\n bundleStageResult.plan?.bundleDir ??\n t(\"finetuningview.None\"),\n )}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Manifest\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {bundleStageResult.manifestPath}\n </div>\n </div>\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {bundleStageResult.command.join(\" \")}\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"bundle-open-manifest\"\n label=\"Open bundle manifest\"\n group=\"bundle-stage\"\n description=\"Open the bundle manifest\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(bundleStageResult.manifestPath),\n );\n }}\n >\n Open bundle manifest\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"bundle-open-output\"\n label=\"Open bundle output\"\n group=\"bundle-stage\"\n description=\"Open the bundle output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(bundleStageResult.outputDir),\n );\n }}\n >\n Open bundle output\n </AgentInlineButton>\n {bundleStageResult.plan?.bundleDir ? (\n <AgentInlineButton\n agentId=\"bundle-open-dir\"\n label=\"Open bundle directory\"\n group=\"bundle-stage\"\n description=\"Open the staged bundle directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n const bundleDir =\n typeof bundleStageResult.plan?.bundleDir === \"string\"\n ? bundleStageResult.plan.bundleDir\n : null;\n if (!bundleDir) return;\n void openExternalUrl(localViewerUrl(bundleDir));\n }}\n >\n Open bundle dir\n </AgentInlineButton>\n ) : null}\n </div>\n </div>\n )}\n <div className=\"mt-4 grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto] lg:items-end\">\n <div className=\"grid gap-3 sm:grid-cols-2 xl:grid-cols-4\">\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.ActionBenchmarkFilter\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-filter\"\n label=\"Action benchmark filter\"\n group=\"action-benchmark\"\n description=\"Case id filter for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkFilter}\n onChange={setActionBenchmarkFilter}\n placeholder=\"case-id[,case-id]\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.RunsPerCase\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-runs-per-case\"\n label=\"Action benchmark runs per case\"\n group=\"action-benchmark\"\n description=\"Number of runs per benchmark case\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkRunsPerCase}\n onChange={setActionBenchmarkRunsPerCase}\n type=\"number\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted sm:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Output\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-output-dir\"\n label=\"Action benchmark output directory\"\n group=\"action-benchmark\"\n description=\"Output directory for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkOutputDir}\n onChange={setActionBenchmarkOutputDir}\n placeholder=\"default\"\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Model\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-model-id\"\n label=\"Action benchmark model\"\n group=\"action-benchmark\"\n description=\"Model id for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkModelId}\n onChange={setActionBenchmarkModelId}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BaseModel\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-base-model-id\"\n label=\"Action benchmark base model\"\n group=\"action-benchmark\"\n description=\"Base model id for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkBaseModelId}\n onChange={setActionBenchmarkBaseModelId}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.CollectionTiers\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-pair-tiers\"\n label=\"Action benchmark collection tiers\"\n group=\"action-benchmark\"\n description=\"Collection tiers for the paired action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkPairTiers}\n onChange={setActionBenchmarkPairTiers}\n placeholder={`${ELIZA_ONE_BENCHMARK_TIER_LIST} or all`}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.RuntimeModel\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-runtime-model\"\n label=\"Action benchmark runtime model\"\n group=\"action-benchmark\"\n description=\"Runtime model for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkRuntimeModel}\n onChange={setActionBenchmarkRuntimeModel}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BaseRuntimeModel\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-base-runtime-model\"\n label=\"Action benchmark base runtime model\"\n group=\"action-benchmark\"\n description=\"Base runtime model for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkBaseRuntimeModel}\n onChange={setActionBenchmarkBaseRuntimeModel}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Provider\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-provider\"\n label=\"Action benchmark provider\"\n group=\"action-benchmark\"\n description=\"Provider for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkProvider}\n onChange={setActionBenchmarkProvider}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.BaseUrl\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-base-url\"\n label=\"Action benchmark base URL\"\n group=\"action-benchmark\"\n description=\"Base URL for the action benchmark provider\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkBaseUrl}\n onChange={setActionBenchmarkBaseUrl}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Variant\")}\n </span>\n <AgentNativeSelect\n agentId=\"action-benchmark-variant\"\n label=\"Action benchmark variant\"\n group=\"action-benchmark\"\n description=\"Model variant for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkVariant}\n onChange={(value) =>\n setActionBenchmarkVariant(\n value as \"reference\" | \"base\" | \"trained\",\n )\n }\n options={[\"trained\", \"base\", \"reference\"]}\n >\n <option value=\"trained\">trained</option>\n <option value=\"base\">base</option>\n <option value=\"reference\">reference</option>\n </AgentNativeSelect>\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Tier\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-tier\"\n label=\"Action benchmark tier\"\n group=\"action-benchmark\"\n description=\"Tier for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkTier}\n onChange={setActionBenchmarkTier}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.Benchmark\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-matrix-benchmark\"\n label=\"Action benchmark name\"\n group=\"action-benchmark\"\n description=\"Benchmark name for the action benchmark matrix\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkMatrixBenchmark}\n onChange={setActionBenchmarkMatrixBenchmark}\n />\n </div>\n <div className=\"space-y-1 text-xs text-muted sm:col-span-2\">\n <span className=\"font-semibold uppercase tracking-[0.14em]\">\n {t(\"finetuningview.DatasetVersion\")}\n </span>\n <AgentTextField\n agentId=\"action-benchmark-dataset-version\"\n label=\"Action benchmark dataset version\"\n group=\"action-benchmark\"\n description=\"Dataset version for the action benchmark\"\n className={AGENT_FIELD_INPUT_CLASS}\n value={actionBenchmarkDatasetVersion}\n onChange={setActionBenchmarkDatasetVersion}\n />\n </div>\n </div>\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"action-benchmark-pair-enabled\"\n label=\"Pair base and trained\"\n group=\"action-benchmark\"\n description=\"Pair base and trained variants in the action benchmark\"\n checked={actionBenchmarkPairEnabled}\n onChange={setActionBenchmarkPairEnabled}\n />\n {t(\"finetuningview.PairBaseTrained\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"action-benchmark-use-mocks\"\n label=\"Use mocks\"\n group=\"action-benchmark\"\n description=\"Use mocked responses in the action benchmark\"\n checked={actionBenchmarkUseMocks}\n onChange={setActionBenchmarkUseMocks}\n />\n {t(\"finetuningview.UseMocks\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"action-benchmark-capture\"\n label=\"Capture trajectories\"\n group=\"action-benchmark\"\n description=\"Capture trajectories during the action benchmark\"\n checked={actionBenchmarkCapture}\n onChange={setActionBenchmarkCapture}\n />\n {t(\"finetuningview.CaptureTrajectories\")}\n </div>\n <div className=\"flex h-10 items-center gap-2 px-1 text-xs font-semibold uppercase tracking-[0.14em] text-muted\">\n <AgentCheckboxField\n agentId=\"action-benchmark-dry-run\"\n label=\"Action benchmark dry run\"\n group=\"action-benchmark\"\n description=\"Run the action benchmark as a dry run\"\n checked={actionBenchmarkDryRun}\n onChange={setActionBenchmarkDryRun}\n />\n {t(\"finetuningview.DryRun\")}\n </div>\n <TrainingActionButton\n agentId=\"action-run-action-benchmark\"\n label={t(\"finetuningview.RunActionBenchmark\")}\n group=\"action-benchmark\"\n description=\"Run the action-selection benchmark for the configured model and tier\"\n disabled={actionBenchmarkRunning}\n onClick={() => {\n void handleRunActionBenchmark();\n }}\n >\n {actionBenchmarkRunning\n ? t(\"finetuningview.RunningBenchmark\")\n : t(\"finetuningview.RunActionBenchmark\")}\n </TrainingActionButton>\n </div>\n </div>\n {actionBenchmarkResult && (\n <div className={`${FINE_TUNING_PANEL_CLASS} mt-3 p-3 text-sm`}>\n <div className=\"grid gap-3 md:grid-cols-2 xl:grid-cols-4\">\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.ExitCode\")}\n </div>\n <div className=\"mt-1 font-mono text-txt\">\n {actionBenchmarkResult.exitCode}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Report\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {actionBenchmarkResult.reportJsonPath}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Trajectories\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {actionBenchmarkResult.trajectoryDir}\n </div>\n </div>\n <div>\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Output\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {actionBenchmarkResult.outputDir}\n </div>\n </div>\n </div>\n <div className=\"mt-3\">\n <div className=\"text-xs-tight font-semibold uppercase tracking-[0.14em] text-muted/70\">\n {t(\"finetuningview.Command\")}\n </div>\n <div className=\"mt-1 break-all font-mono text-xs text-txt\">\n {actionBenchmarkResult.command.join(\" \")}\n </div>\n </div>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <AgentInlineButton\n agentId=\"action-benchmark-open-report\"\n label=\"Open action report\"\n group=\"action-benchmark\"\n description=\"Open the action benchmark report\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(actionBenchmarkResult.reportJsonPath),\n );\n }}\n >\n Open action report\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"action-benchmark-open-summary\"\n label=\"Open action summary\"\n group=\"action-benchmark\"\n description=\"Open the action benchmark summary\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(actionBenchmarkResult.reportMarkdownPath),\n );\n }}\n >\n Open action summary\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"action-benchmark-open-trajectories\"\n label=\"Open action trajectories\"\n group=\"action-benchmark\"\n description=\"Open the action benchmark trajectories directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(actionBenchmarkResult.trajectoryDir),\n );\n }}\n >\n Open action trajectories\n </AgentInlineButton>\n <AgentInlineButton\n agentId=\"action-benchmark-open-output\"\n label=\"Open action output\"\n group=\"action-benchmark\"\n description=\"Open the action benchmark output directory\"\n className={FINE_TUNING_ACTION_CLASS}\n onClick={() => {\n void openExternalUrl(\n localViewerUrl(actionBenchmarkResult.outputDir),\n );\n }}\n >\n Open action output\n </AgentInlineButton>\n </div>\n </div>\n )}\n </section>\n\n <DatasetSection\n buildLimit={buildLimit}\n setBuildLimit={setBuildLimit}\n buildMinCalls={buildMinCalls}\n setBuildMinCalls={setBuildMinCalls}\n datasetBuilding={datasetBuilding}\n onBuildDataset={onBuildDataset}\n onRefreshDatasets={onRefreshDatasets}\n datasets={datasets}\n selectedDatasetId={selectedDatasetId}\n setSelectedDatasetId={setSelectedDatasetId}\n t={t}\n />\n\n <TrainingJobsSection\n selectedDatasetId={selectedDatasetId}\n setSelectedDatasetId={setSelectedDatasetId}\n datasets={datasets}\n startBackend={startBackend}\n setStartBackend={setStartBackend}\n startModel={startModel}\n setStartModel={setStartModel}\n startIterations={startIterations}\n setStartIterations={setStartIterations}\n startBatchSize={startBatchSize}\n setStartBatchSize={setStartBatchSize}\n startLearningRate={startLearningRate}\n setStartLearningRate={setStartLearningRate}\n startingJob={startingJob}\n activeRunningJob={activeRunningJob}\n onStartJob={onStartJob}\n onRefreshJobs={onRefreshJobs}\n jobs={jobs}\n selectedJobId={selectedJobId}\n setSelectedJobId={setSelectedJobId}\n cancellingJobId={cancellingJobId}\n onCancelJob={onCancelJob}\n selectedJob={selectedJob}\n t={t}\n />\n\n <TrainedModelsSection\n models={models}\n selectedModelId={selectedModelId}\n setSelectedModelId={setSelectedModelId}\n selectedModel={selectedModel}\n importModelName={importModelName}\n setImportModelName={setImportModelName}\n importBaseModel={importBaseModel}\n setImportBaseModel={setImportBaseModel}\n importOllamaUrl={importOllamaUrl}\n setImportOllamaUrl={setImportOllamaUrl}\n activateProviderModel={activateProviderModel}\n setActivateProviderModel={setActivateProviderModel}\n modelAction={modelAction}\n smokeResult={smokeResult}\n onImport={onImportModel}\n onActivate={onActivateModel}\n onBenchmark={onBenchmarkModel}\n onSmokeTest={onSmokeTestModel}\n t={t}\n />\n\n <LiveEventsPanel events={trainingEvents} t={t} />\n </div>\n </ContentLayout>\n );\n}\n\nfunction formatDashboardNumber(value: number | null | undefined): string {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value.toLocaleString()\n : \"0\";\n}\n\nfunction FineTuningDetailMetric({\n label,\n value,\n}: {\n label: string;\n value: string;\n}) {\n return (\n <div className=\"min-w-0 rounded-md border border-border/45 bg-card/35 p-3\">\n <div className=\"text-[10px] uppercase tracking-[0.14em] text-muted\">\n {label}\n </div>\n <div className=\"mt-1 truncate text-sm font-semibold text-foreground\">\n {value}\n </div>\n </div>\n );\n}\n\nexport function FineTuningDetailExtension({ app }: AppDetailExtensionProps) {\n const [history, setHistory] =\n useState<ListTrainingCollectionsResponse | null>(null);\n const [loading, setLoading] = useState(false);\n const [runningGapId, setRunningGapId] = useState<string | null>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const refreshCollections = useCallback(async () => {\n setLoading(true);\n setErrorMessage(null);\n try {\n setHistory(await client.listTrainingCollections({ limit: 3 }));\n } catch (err) {\n setErrorMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n void refreshCollections();\n }, [refreshCollections]);\n\n const runGapRecommendation = useCallback(\n async (\n gap: NonNullable<\n ListTrainingCollectionsResponse[\"collections\"][number][\"readinessGaps\"]\n >[number],\n ) => {\n if (!gap.recommendedCapability) return;\n setRunningGapId(gap.id);\n setErrorMessage(null);\n try {\n await interact(gap.recommendedCapability, gap.recommendedParams ?? {});\n await refreshCollections();\n } catch (err) {\n setErrorMessage(err instanceof Error ? err.message : String(err));\n } finally {\n setRunningGapId(null);\n }\n },\n [refreshCollections],\n );\n\n const latest = history?.collections[0] ?? null;\n const coverage = latest?.coverage;\n const dataSources = latest\n ? Object.values(latest.dataSources).reduce((sum, count) => sum + count, 0)\n : 0;\n const readableSamples = coverage?.readableSamples.total ?? 0;\n const scoredComparisons =\n coverage?.benchmarks.scoredComparisons ??\n latest?.benchmarks.benchmarkComparisons ??\n 0;\n const modelCount =\n coverage?.models.inventoryCount ?? coverage?.models.artifacts ?? 0;\n const baseline = latest?.benchmarks.baselineProgress;\n const topGaps = latest?.readinessGaps.slice(0, 3) ?? [];\n\n return (\n <div\n data-testid=\"fine-tuning-detail-extension\"\n className=\"flex flex-col gap-3 px-1 py-2\"\n >\n <div className=\"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n <div className=\"text-[10px] uppercase tracking-[0.14em] text-muted\">\n {app.displayName ?? \"Fine Tuning\"}\n </div>\n <h3 className=\"mt-1 truncate text-sm font-semibold text-foreground\">\n {latest ? \"Latest training collection\" : \"Training collection\"}\n </h3>\n <p className=\"mt-1 text-xs text-muted\">\n {latest\n ? `${latest.readinessStatus} readiness, ${latest.artifactCount} artifacts`\n : \"None\"}\n </p>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => void refreshCollections()}\n disabled={loading}\n >\n {loading ? \"Refreshing\" : \"Refresh\"}\n </Button>\n </div>\n\n {errorMessage ? (\n <div className=\"rounded-md border border-destructive/35 bg-destructive/10 px-3 py-2 text-xs text-destructive\">\n {errorMessage}\n </div>\n ) : null}\n\n <div className=\"grid gap-2 sm:grid-cols-2 lg:grid-cols-4\">\n <FineTuningDetailMetric\n label=\"Data sources\"\n value={formatDashboardNumber(dataSources)}\n />\n <FineTuningDetailMetric\n label=\"Readable samples\"\n value={formatDashboardNumber(readableSamples)}\n />\n <FineTuningDetailMetric\n label=\"Scored evals\"\n value={formatDashboardNumber(scoredComparisons)}\n />\n <FineTuningDetailMetric\n label=\"Models\"\n value={formatDashboardNumber(modelCount)}\n />\n </div>\n\n {latest ? (\n <div className=\"flex flex-col gap-2 rounded-md border border-border/40 bg-bg/20 p-3 text-xs text-muted\">\n <div className=\"grid gap-2 sm:grid-cols-2\">\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Generated </span>\n <span className=\"text-foreground\">{latest.generatedAt}</span>\n </div>\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Tiers </span>\n <span className=\"text-foreground\">\n {latest.benchmarks.tiers.length\n ? latest.benchmarks.tiers.join(\", \")\n : \"none\"}\n </span>\n </div>\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Readiness </span>\n <span className=\"text-foreground\">\n {latest.readiness.ready} ready / {latest.readiness.partial}{\" \"}\n partial / {latest.readiness.missing} missing\n </span>\n </div>\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Steps </span>\n <span className=\"text-foreground\">\n {Object.entries(latest.stepCounts)\n .map(([status, count]) => `${status}:${count}`)\n .join(\" \")}\n </span>\n </div>\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Baseline </span>\n <span className=\"text-foreground\">\n established{\" \"}\n {baseline?.establishedTiers.length\n ? baseline.establishedTiers.join(\", \")\n : \"none\"}{\" \"}\n / next {baseline?.nextTier ?? \"none\"}\n </span>\n </div>\n <div className=\"min-w-0\">\n <span className=\"text-muted\">Remaining </span>\n <span className=\"text-foreground\">\n {baseline?.remainingTiers.length\n ? baseline.remainingTiers.join(\", \")\n : \"none\"}\n </span>\n </div>\n </div>\n {topGaps.length > 0 ? (\n <div className=\"flex flex-col gap-1 rounded border border-border/35 bg-card/25 p-2\">\n <div className=\"text-[10px] uppercase tracking-[0.14em] text-muted\">\n Next gaps\n </div>\n {topGaps.map((gap) => (\n <div\n key={gap.id}\n className=\"flex flex-col gap-1 sm:flex-row sm:items-center sm:justify-between\"\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-xs font-semibold text-foreground\">\n {gap.id}:{gap.status}\n </div>\n <div className=\"line-clamp-2 text-xs text-muted\">\n {gap.note}\n </div>\n </div>\n {gap.recommendedCapability ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => void runGapRecommendation(gap)}\n disabled={runningGapId === gap.id}\n title={gap.recommendedCapability}\n >\n {runningGapId === gap.id ? \"Running\" : \"Run\"}\n </Button>\n ) : null}\n </div>\n ))}\n </div>\n ) : null}\n <div className=\"flex flex-wrap gap-2 pt-1\">\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n void openExternalUrl(\n localViewerUrl(latest.analysisIndexHtmlPath),\n )\n }\n >\n Open analysis\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n void openExternalUrl(localViewerUrl(latest.readmePath))\n }\n >\n Open README\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n void openExternalUrl(localViewerUrl(latest.manifestPath))\n }\n >\n Open manifest\n </Button>\n {history?.indexHtmlPath ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() =>\n void openExternalUrl(localViewerUrl(history.indexHtmlPath))\n }\n >\n Open run index\n </Button>\n ) : null}\n </div>\n </div>\n ) : null}\n </div>\n );\n}\n\nregisterDetailExtension(FINE_TUNING_DETAIL_PANEL_ID, FineTuningDetailExtension);\n"],"mappings":"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K,KAAA;IACtD;IACA,mBAAmB;KACjB,QAAQ,GAAkB,KAAK,KAAK,KAAA;KACpC,MAAM,GAAgB,KAAK,KAAK,KAAA;KAChC,UAAU,GAAoB,KAAK,KAAK,KAAA;KACxC,WAAW,GAAqB,KAAK,KAAK,KAAA;KAC1C,UAAU,EAAqB,EAAmB;KAClD,OAAO;IACT;GACF,CAAC;GACD,IAAI,eAAe,GAAQ;IAEzB,AADA,GAA6B,EAAO,SAAS,GAC7C,EACE,EAAE,+CAA+C,EAC/C,cAAc,iCAChB,CAAC,GACD,WACA,IACF;IACA;GACF;GAOA,AANA,GAAoB,CAAM,GAC1B,GACE,EAAO,SAAS,SAAS,aAAa,IACxC,GACA,GAAiB,EAAO,QAAQ,GAChC,MAAM,GAAsB,GAC5B,EACE,EAAE,8CAA8C,EAC9C,OAAO,EAAO,SAAS,SAAS,UAAU,OAC5C,CAAC,GACD,WACA,IACF;EACF,SAAS,GAAK;GACZ,EACE,aAAe,QACX,EAAI,UACJ,EAAE,8CAA8C,GACpD,SACA,IACF;EACF,UAAU;GACR,AAAI,IACF,GAA8B,EAAK,IAEnC,GAAqB,EAAK;EAE9B;CACF,GACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CACF,GAEM,KAA0B,EAAY,YAAY;EACtD,GAAyB,EAAI;EAC7B,IAAI;GACF,IAAM,IAAS,MAAM,EAAO,+BAA+B;IACzD,cAAc,EAA2B,KAAK,KAAK,KAAA;IACnD,OAAO,EAA2B,KAAK,IACnC,KAAA,IACA,GAAwB,KAAK,KAAK,KAAA;IACtC,kBAAkB,EAA2B,KAAK,IAC9C,KAAA,IACA,GAA+B,KAAK,KAAK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"}
|