@elizaos/plugin-training 2.0.3-beta.6 → 2.0.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,78 @@
|
|
|
1
|
+
import { appendJobLog } from "./vast-job-store.js";
|
|
2
|
+
class VastServiceError extends Error {
|
|
3
|
+
constructor(message, status) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.status = status;
|
|
6
|
+
this.name = "VastServiceError";
|
|
7
|
+
}
|
|
8
|
+
status;
|
|
9
|
+
}
|
|
10
|
+
function runCapture(spawnImpl, command, args, options) {
|
|
11
|
+
return new Promise((resolveCapture, rejectCapture) => {
|
|
12
|
+
const child = spawnImpl(command, args, {
|
|
13
|
+
cwd: options.cwd,
|
|
14
|
+
env: process.env,
|
|
15
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
16
|
+
});
|
|
17
|
+
let stdout = "";
|
|
18
|
+
let stderr = "";
|
|
19
|
+
child.stdout.on("data", (chunk) => {
|
|
20
|
+
stdout += chunk.toString("utf8");
|
|
21
|
+
});
|
|
22
|
+
child.stderr.on("data", (chunk) => {
|
|
23
|
+
stderr += chunk.toString("utf8");
|
|
24
|
+
});
|
|
25
|
+
child.on("error", (err) => {
|
|
26
|
+
if (err.code === "ENOENT") {
|
|
27
|
+
rejectCapture(
|
|
28
|
+
new VastServiceError(`Required binary not found: ${command}`, 503)
|
|
29
|
+
);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
rejectCapture(err);
|
|
33
|
+
});
|
|
34
|
+
child.on("close", (code) => {
|
|
35
|
+
if (code === 0) {
|
|
36
|
+
resolveCapture(stdout);
|
|
37
|
+
} else {
|
|
38
|
+
rejectCapture(
|
|
39
|
+
new VastServiceError(
|
|
40
|
+
`${command} exited ${code}: ${stderr.slice(0, 500)}`,
|
|
41
|
+
500
|
|
42
|
+
)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function runDetachedToLog(spawnImpl, jobId, command, args, cwd, extraEnv = {}) {
|
|
49
|
+
return new Promise((resolveProc, rejectProc) => {
|
|
50
|
+
const child = spawnImpl(command, args, {
|
|
51
|
+
cwd,
|
|
52
|
+
env: { ...process.env, ...extraEnv },
|
|
53
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
54
|
+
});
|
|
55
|
+
const onChunk = (chunk) => {
|
|
56
|
+
void appendJobLog(jobId, chunk.toString("utf8")).catch(() => {
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
child.stdout.on("data", onChunk);
|
|
60
|
+
child.stderr.on("data", onChunk);
|
|
61
|
+
child.on("error", (err) => {
|
|
62
|
+
if (err.code === "ENOENT") {
|
|
63
|
+
rejectProc(
|
|
64
|
+
new VastServiceError(`Required binary not found: ${command}`, 503)
|
|
65
|
+
);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
rejectProc(err);
|
|
69
|
+
});
|
|
70
|
+
child.on("close", (code) => resolveProc(code ?? -1));
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
VastServiceError,
|
|
75
|
+
runCapture,
|
|
76
|
+
runDetachedToLog
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=vast-subprocess.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/services/vast-subprocess.ts"],"sourcesContent":["/**\n * Subprocess primitives for the Vast training service.\n *\n * Two helpers, both backed by `node:child_process.spawn` via an injectable\n * `spawnImpl` so tests can stand in fake children:\n *\n * - `runCapture` — wait for the child to exit, return stdout, throw\n * `VastServiceError` on non-zero exit.\n * - `runDetachedToLog` — stream stdout + stderr into a per-job append-only\n * log, resolve with the exit code (no throw on non-zero;\n * the caller decides what a non-zero exit means).\n *\n * Both helpers normalize ENOENT-on-binary into a 503 `VastServiceError` so\n * routes can return an actionable failure when `bash`, `python`, or `uv`\n * isn't on PATH.\n */\n\nimport type { spawn } from \"node:child_process\";\nimport { appendJobLog } from \"./vast-job-store.js\";\n\nexport class VastServiceError extends Error {\n constructor(\n message: string,\n public readonly status: number,\n ) {\n super(message);\n this.name = \"VastServiceError\";\n }\n}\n\nexport type SpawnImpl = typeof spawn;\n\nexport function runCapture(\n spawnImpl: SpawnImpl,\n command: string,\n args: string[],\n options: { cwd: string },\n): Promise<string> {\n return new Promise<string>((resolveCapture, rejectCapture) => {\n const child = spawnImpl(command, args, {\n cwd: options.cwd,\n env: process.env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n let stdout = \"\";\n let stderr = \"\";\n child.stdout.on(\"data\", (chunk: Buffer) => {\n stdout += chunk.toString(\"utf8\");\n });\n child.stderr.on(\"data\", (chunk: Buffer) => {\n stderr += chunk.toString(\"utf8\");\n });\n child.on(\"error\", (err) => {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") {\n rejectCapture(\n new VastServiceError(`Required binary not found: ${command}`, 503),\n );\n return;\n }\n rejectCapture(err);\n });\n child.on(\"close\", (code) => {\n if (code === 0) {\n resolveCapture(stdout);\n } else {\n rejectCapture(\n new VastServiceError(\n `${command} exited ${code}: ${stderr.slice(0, 500)}`,\n 500,\n ),\n );\n }\n });\n });\n}\n\nexport function runDetachedToLog(\n spawnImpl: SpawnImpl,\n jobId: string,\n command: string,\n args: string[],\n cwd: string,\n extraEnv: NodeJS.ProcessEnv = {},\n): Promise<number> {\n return new Promise<number>((resolveProc, rejectProc) => {\n const child = spawnImpl(command, args, {\n cwd,\n env: { ...process.env, ...extraEnv },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n const onChunk = (chunk: Buffer) => {\n void appendJobLog(jobId, chunk.toString(\"utf8\")).catch(() => {});\n };\n child.stdout.on(\"data\", onChunk);\n child.stderr.on(\"data\", onChunk);\n child.on(\"error\", (err) => {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") {\n rejectProc(\n new VastServiceError(`Required binary not found: ${command}`, 503),\n );\n return;\n }\n rejectProc(err);\n });\n child.on(\"close\", (code) => resolveProc(code ?? -1));\n });\n}\n"],"mappings":"AAkBA,SAAS,oBAAoB;AAEtB,MAAM,yBAAyB,MAAM;AAAA,EAC1C,YACE,SACgB,QAChB;AACA,UAAM,OAAO;AAFG;AAGhB,SAAK,OAAO;AAAA,EACd;AAAA,EAJkB;AAKpB;AAIO,SAAS,WACd,WACA,SACA,MACA,SACiB;AACjB,SAAO,IAAI,QAAgB,CAAC,gBAAgB,kBAAkB;AAC5D,UAAM,QAAQ,UAAU,SAAS,MAAM;AAAA,MACrC,KAAK,QAAQ;AAAA,MACb,KAAK,QAAQ;AAAA,MACb,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IAClC,CAAC;AACD,QAAI,SAAS;AACb,QAAI,SAAS;AACb,UAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB;AACzC,gBAAU,MAAM,SAAS,MAAM;AAAA,IACjC,CAAC;AACD,UAAM,OAAO,GAAG,QAAQ,CAAC,UAAkB;AACzC,gBAAU,MAAM,SAAS,MAAM;AAAA,IACjC,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,UAAK,IAA8B,SAAS,UAAU;AACpD;AAAA,UACE,IAAI,iBAAiB,8BAA8B,OAAO,IAAI,GAAG;AAAA,QACnE;AACA;AAAA,MACF;AACA,oBAAc,GAAG;AAAA,IACnB,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,SAAS;AAC1B,UAAI,SAAS,GAAG;AACd,uBAAe,MAAM;AAAA,MACvB,OAAO;AACL;AAAA,UACE,IAAI;AAAA,YACF,GAAG,OAAO,WAAW,IAAI,KAAK,OAAO,MAAM,GAAG,GAAG,CAAC;AAAA,YAClD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEO,SAAS,iBACd,WACA,OACA,SACA,MACA,KACA,WAA8B,CAAC,GACd;AACjB,SAAO,IAAI,QAAgB,CAAC,aAAa,eAAe;AACtD,UAAM,QAAQ,UAAU,SAAS,MAAM;AAAA,MACrC;AAAA,MACA,KAAK,EAAE,GAAG,QAAQ,KAAK,GAAG,SAAS;AAAA,MACnC,OAAO,CAAC,UAAU,QAAQ,MAAM;AAAA,IAClC,CAAC;AACD,UAAM,UAAU,CAAC,UAAkB;AACjC,WAAK,aAAa,OAAO,MAAM,SAAS,MAAM,CAAC,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACjE;AACA,UAAM,OAAO,GAAG,QAAQ,OAAO;AAC/B,UAAM,OAAO,GAAG,QAAQ,OAAO;AAC/B,UAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,UAAK,IAA8B,SAAS,UAAU;AACpD;AAAA,UACE,IAAI,iBAAiB,8BAA8B,OAAO,IAAI,GAAG;AAAA,QACnE;AACA;AAAA,MACF;AACA,iBAAW,GAAG;AAAA,IAChB,CAAC;AACD,UAAM,GAAG,SAAS,CAAC,SAAS,YAAY,QAAQ,EAAE,CAAC;AAAA,EACrD,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Training and trajectory HTTP routes for the app-training plugin.
|
|
3
|
+
*
|
|
4
|
+
* These routes were previously dispatched from
|
|
5
|
+
* `packages/agent/src/api/server.ts`. They are now registered through the
|
|
6
|
+
* plugin route registry with `rawPath: true`.
|
|
7
|
+
*
|
|
8
|
+
* The handlers read the live TrainingService from the in-process registry
|
|
9
|
+
* (`getActiveTrainingService`), which server.ts startup populates after it
|
|
10
|
+
* builds the service instance with `getConfig` / `setConfig` callbacks.
|
|
11
|
+
* Trajectory routes do not require the TrainingService — they work directly
|
|
12
|
+
* against the AgentRuntime.
|
|
13
|
+
*/
|
|
14
|
+
import type { Plugin, Route } from "@elizaos/core";
|
|
15
|
+
export declare const trainingRoutes: Route[];
|
|
16
|
+
export declare const trainingPlugin: Plugin;
|
|
17
|
+
//# sourceMappingURL=setup-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-routes.d.ts","sourceRoot":"","sources":["../src/setup-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAGV,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AA8RvB,eAAO,MAAM,cAAc,EAAE,KAAK,EAqCjC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAqC5B,CAAC"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { TLSSocket } from "node:tls";
|
|
2
|
+
import {
|
|
3
|
+
sendJson as httpSendJson,
|
|
4
|
+
sendJsonError as httpSendJsonError
|
|
5
|
+
} from "@elizaos/core";
|
|
6
|
+
import { readJsonBody as httpReadJsonBody } from "@elizaos/shared";
|
|
7
|
+
import { loadTrainingConfig } from "./core/training-config.js";
|
|
8
|
+
import {
|
|
9
|
+
EXPERIENCE_ROUTE_PATHS,
|
|
10
|
+
handleExperienceRoutes
|
|
11
|
+
} from "./routes/experience-routes.js";
|
|
12
|
+
import { handleTrainingRoutes } from "./routes/training-routes.js";
|
|
13
|
+
import { handleVastTrainingRoutes } from "./routes/training-vast-routes.js";
|
|
14
|
+
import { handleTrajectoryRoute } from "./routes/trajectory-routes.js";
|
|
15
|
+
import { getActiveTrainingService } from "./services/training-service-registry.js";
|
|
16
|
+
import { VastTrainingService } from "./services/training-vast-service.js";
|
|
17
|
+
if (typeof window === "undefined") {
|
|
18
|
+
void import("./register-terminal-view.js").then((m) => m.registerFineTuningTerminalView()).catch(() => {
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const LOOPBACK_HOSTS = /* @__PURE__ */ new Set([
|
|
22
|
+
"localhost",
|
|
23
|
+
"127.0.0.1",
|
|
24
|
+
"[::1]",
|
|
25
|
+
"::1",
|
|
26
|
+
"0.0.0.0"
|
|
27
|
+
]);
|
|
28
|
+
function emptyTrainingTaskCounters() {
|
|
29
|
+
return {
|
|
30
|
+
should_respond: 0,
|
|
31
|
+
context_routing: 0,
|
|
32
|
+
action_planner: 0,
|
|
33
|
+
response: 0,
|
|
34
|
+
media_description: 0
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function isLoopbackHost(host) {
|
|
38
|
+
if (!host) return false;
|
|
39
|
+
const trimmed = host.trim();
|
|
40
|
+
if (LOOPBACK_HOSTS.has(trimmed)) return true;
|
|
41
|
+
const noPort = trimmed.replace(/:\d+$/, "");
|
|
42
|
+
return LOOPBACK_HOSTS.has(noPort);
|
|
43
|
+
}
|
|
44
|
+
function json(res, data, status = 200) {
|
|
45
|
+
httpSendJson(res, data, status);
|
|
46
|
+
}
|
|
47
|
+
function error(res, message, status = 400) {
|
|
48
|
+
httpSendJsonError(res, message, status);
|
|
49
|
+
}
|
|
50
|
+
function firstHeaderValue(value) {
|
|
51
|
+
if (Array.isArray(value)) {
|
|
52
|
+
return firstHeaderValue(value[0]);
|
|
53
|
+
}
|
|
54
|
+
if (typeof value !== "string") {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const normalized = value.split(",")[0]?.trim();
|
|
58
|
+
return normalized ? normalized : null;
|
|
59
|
+
}
|
|
60
|
+
function requestBaseUrl(req) {
|
|
61
|
+
const headers = req.headers;
|
|
62
|
+
const protocol = firstHeaderValue(headers["x-forwarded-proto"]) ?? (req.socket instanceof TLSSocket && req.socket.encrypted ? "https" : "http");
|
|
63
|
+
const host = firstHeaderValue(headers["x-forwarded-host"]) ?? firstHeaderValue(headers.host) ?? "localhost";
|
|
64
|
+
return `${protocol}://${host}`;
|
|
65
|
+
}
|
|
66
|
+
function trainingRouteHandler() {
|
|
67
|
+
return async (req, res, runtime) => {
|
|
68
|
+
const httpReq = req;
|
|
69
|
+
const httpRes = res;
|
|
70
|
+
const agentRuntime = runtime ?? null;
|
|
71
|
+
const trainingService = getActiveTrainingService();
|
|
72
|
+
const method = (httpReq.method ?? "GET").toUpperCase();
|
|
73
|
+
const url = new URL(httpReq.url ?? "/", requestBaseUrl(httpReq));
|
|
74
|
+
if (!trainingService) {
|
|
75
|
+
if (method === "GET" && url.pathname === "/api/training/auto/config") {
|
|
76
|
+
json(httpRes, { config: loadTrainingConfig() });
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (method === "GET" && url.pathname === "/api/training/auto/status") {
|
|
80
|
+
const config = loadTrainingConfig();
|
|
81
|
+
json(httpRes, {
|
|
82
|
+
autoTrainEnabled: config.autoTrain,
|
|
83
|
+
triggerThreshold: config.triggerThreshold,
|
|
84
|
+
cooldownHours: config.triggerCooldownHours,
|
|
85
|
+
counters: emptyTrainingTaskCounters(),
|
|
86
|
+
lastTrain: {},
|
|
87
|
+
perTaskThresholds: emptyTrainingTaskCounters(),
|
|
88
|
+
perTaskCooldownMs: emptyTrainingTaskCounters(),
|
|
89
|
+
serviceRegistered: false
|
|
90
|
+
});
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
error(httpRes, "Training service is not available", 503);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
await handleTrainingRoutes({
|
|
97
|
+
req: httpReq,
|
|
98
|
+
res: httpRes,
|
|
99
|
+
method,
|
|
100
|
+
pathname: url.pathname,
|
|
101
|
+
runtime: agentRuntime,
|
|
102
|
+
trainingService,
|
|
103
|
+
readJsonBody: httpReadJsonBody,
|
|
104
|
+
json,
|
|
105
|
+
error,
|
|
106
|
+
isLoopbackHost
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
let cachedVastService = null;
|
|
111
|
+
function getVastService() {
|
|
112
|
+
if (!cachedVastService) cachedVastService = new VastTrainingService();
|
|
113
|
+
return cachedVastService;
|
|
114
|
+
}
|
|
115
|
+
function vastTrainingRouteHandler() {
|
|
116
|
+
return async (req, res) => {
|
|
117
|
+
const httpReq = req;
|
|
118
|
+
const httpRes = res;
|
|
119
|
+
const method = (httpReq.method ?? "GET").toUpperCase();
|
|
120
|
+
const url = new URL(httpReq.url ?? "/", requestBaseUrl(httpReq));
|
|
121
|
+
await handleVastTrainingRoutes({
|
|
122
|
+
req: httpReq,
|
|
123
|
+
res: httpRes,
|
|
124
|
+
method,
|
|
125
|
+
pathname: url.pathname,
|
|
126
|
+
service: getVastService(),
|
|
127
|
+
readJsonBody: httpReadJsonBody,
|
|
128
|
+
json,
|
|
129
|
+
error
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function trajectoryRouteHandler() {
|
|
134
|
+
return async (req, res, runtime) => {
|
|
135
|
+
const httpReq = req;
|
|
136
|
+
const httpRes = res;
|
|
137
|
+
const agentRuntime = runtime ?? null;
|
|
138
|
+
if (!agentRuntime) {
|
|
139
|
+
error(httpRes, "Agent runtime not started yet", 503);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const method = (httpReq.method ?? "GET").toUpperCase();
|
|
143
|
+
const url = new URL(httpReq.url ?? "/", requestBaseUrl(httpReq));
|
|
144
|
+
await handleTrajectoryRoute(
|
|
145
|
+
httpReq,
|
|
146
|
+
httpRes,
|
|
147
|
+
agentRuntime,
|
|
148
|
+
url.pathname,
|
|
149
|
+
method
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function experienceRouteHandler() {
|
|
154
|
+
return async (req, res, runtime) => {
|
|
155
|
+
const httpReq = req;
|
|
156
|
+
const httpRes = res;
|
|
157
|
+
const agentRuntime = runtime ?? null;
|
|
158
|
+
const method = (httpReq.method ?? "GET").toUpperCase();
|
|
159
|
+
const url = new URL(httpReq.url ?? "/", requestBaseUrl(httpReq));
|
|
160
|
+
await handleExperienceRoutes({
|
|
161
|
+
req: httpReq,
|
|
162
|
+
res: httpRes,
|
|
163
|
+
method,
|
|
164
|
+
pathname: url.pathname,
|
|
165
|
+
runtime: agentRuntime,
|
|
166
|
+
url,
|
|
167
|
+
readJsonBody: httpReadJsonBody,
|
|
168
|
+
json,
|
|
169
|
+
error
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
const TRAINING_ROUTES = [
|
|
174
|
+
// Static training endpoints
|
|
175
|
+
{ type: "GET", path: "/api/training/status" },
|
|
176
|
+
{ type: "GET", path: "/api/training/auto/status" },
|
|
177
|
+
{ type: "POST", path: "/api/training/auto/trigger" },
|
|
178
|
+
{ type: "GET", path: "/api/training/auto/runs" },
|
|
179
|
+
{ type: "GET", path: "/api/training/auto/runs/:runId" },
|
|
180
|
+
{ type: "GET", path: "/api/training/auto/config" },
|
|
181
|
+
{ type: "POST", path: "/api/training/auto/config" },
|
|
182
|
+
// Analysis + readiness
|
|
183
|
+
{ type: "POST", path: "/api/training/analysis/index" },
|
|
184
|
+
{ type: "POST", path: "/api/training/analysis/readiness" },
|
|
185
|
+
// Data collection pipeline
|
|
186
|
+
{ type: "GET", path: "/api/training/collections" },
|
|
187
|
+
{ type: "POST", path: "/api/training/collect" },
|
|
188
|
+
{ type: "POST", path: "/api/training/feed/generate" },
|
|
189
|
+
{ type: "POST", path: "/api/training/scenarios/run" },
|
|
190
|
+
{ type: "POST", path: "/api/training/datasets/ingest-hf" },
|
|
191
|
+
// Evals + benchmarks
|
|
192
|
+
{ type: "POST", path: "/api/training/evals/record-comparison" },
|
|
193
|
+
{ type: "POST", path: "/api/training/evals/run-local-comparison" },
|
|
194
|
+
{ type: "POST", path: "/api/training/benchmarks/action-selection/run" },
|
|
195
|
+
{ type: "POST", path: "/api/training/benchmarks/matrix" },
|
|
196
|
+
{ type: "POST", path: "/api/training/benchmarks/matrix/from-artifacts" },
|
|
197
|
+
{ type: "POST", path: "/api/training/benchmarks/run-vs-cerebras" },
|
|
198
|
+
{ type: "POST", path: "/api/training/models/stage-eliza1-bundle" },
|
|
199
|
+
{ type: "GET", path: "/api/training/trajectories" },
|
|
200
|
+
{ type: "GET", path: "/api/training/trajectories/:trajectoryId" },
|
|
201
|
+
{ type: "POST", path: "/api/training/trajectories/export" },
|
|
202
|
+
{ type: "POST", path: "/api/training/trajectories/publish" },
|
|
203
|
+
{ type: "GET", path: "/api/training/datasets" },
|
|
204
|
+
{ type: "POST", path: "/api/training/datasets/build" },
|
|
205
|
+
{ type: "GET", path: "/api/training/backends" },
|
|
206
|
+
{ type: "GET", path: "/api/training/jobs" },
|
|
207
|
+
{ type: "POST", path: "/api/training/jobs" },
|
|
208
|
+
{ type: "GET", path: "/api/training/jobs/:jobId" },
|
|
209
|
+
{ type: "POST", path: "/api/training/jobs/:jobId/cancel" },
|
|
210
|
+
{ type: "GET", path: "/api/training/models" },
|
|
211
|
+
{ type: "POST", path: "/api/training/models/:modelId/import-ollama" },
|
|
212
|
+
{ type: "POST", path: "/api/training/models/:modelId/activate" },
|
|
213
|
+
{ type: "POST", path: "/api/training/models/:modelId/benchmark" },
|
|
214
|
+
{ type: "GET", path: "/api/training/blueprints" },
|
|
215
|
+
{ type: "GET", path: "/api/training/context-catalog" },
|
|
216
|
+
{ type: "GET", path: "/api/training/context-audit" },
|
|
217
|
+
{ type: "POST", path: "/api/training/generate-dataset" },
|
|
218
|
+
{ type: "POST", path: "/api/training/generate-roleplay" },
|
|
219
|
+
{ type: "POST", path: "/api/training/roleplay/execute" }
|
|
220
|
+
];
|
|
221
|
+
const VAST_ROUTES = [
|
|
222
|
+
{ type: "POST", path: "/api/training/vast/jobs" },
|
|
223
|
+
{ type: "GET", path: "/api/training/vast/jobs" },
|
|
224
|
+
{ type: "GET", path: "/api/training/vast/jobs/:id" },
|
|
225
|
+
{ type: "POST", path: "/api/training/vast/jobs/:id/cancel" },
|
|
226
|
+
{ type: "POST", path: "/api/training/vast/jobs/:id/eval" },
|
|
227
|
+
{ type: "GET", path: "/api/training/vast/jobs/:id/logs" },
|
|
228
|
+
{ type: "GET", path: "/api/training/vast/jobs/:id/budget" },
|
|
229
|
+
{ type: "GET", path: "/api/training/vast/models" },
|
|
230
|
+
{ type: "GET", path: "/api/training/vast/models/:short_name/checkpoints" },
|
|
231
|
+
{ type: "GET", path: "/api/training/vast/inference/endpoints" },
|
|
232
|
+
{ type: "POST", path: "/api/training/vast/inference/endpoints" },
|
|
233
|
+
{ type: "DELETE", path: "/api/training/vast/inference/endpoints/:id" },
|
|
234
|
+
{ type: "GET", path: "/api/training/vast/inference/stats" }
|
|
235
|
+
];
|
|
236
|
+
const TRAJECTORY_ROUTES = [
|
|
237
|
+
{ type: "GET", path: "/api/trajectories" },
|
|
238
|
+
{ type: "DELETE", path: "/api/trajectories" },
|
|
239
|
+
{ type: "GET", path: "/api/trajectories/config" },
|
|
240
|
+
{ type: "PUT", path: "/api/trajectories/config" },
|
|
241
|
+
{ type: "POST", path: "/api/trajectories/export" },
|
|
242
|
+
{ type: "GET", path: "/api/trajectories/stats" },
|
|
243
|
+
{ type: "GET", path: "/api/trajectories/:id" }
|
|
244
|
+
];
|
|
245
|
+
const trainingRoutes = [
|
|
246
|
+
...TRAINING_ROUTES.map(
|
|
247
|
+
(r) => ({
|
|
248
|
+
type: r.type,
|
|
249
|
+
path: r.path,
|
|
250
|
+
rawPath: true,
|
|
251
|
+
handler: trainingRouteHandler()
|
|
252
|
+
})
|
|
253
|
+
),
|
|
254
|
+
...VAST_ROUTES.map(
|
|
255
|
+
(r) => ({
|
|
256
|
+
type: r.type,
|
|
257
|
+
path: r.path,
|
|
258
|
+
rawPath: true,
|
|
259
|
+
handler: vastTrainingRouteHandler()
|
|
260
|
+
})
|
|
261
|
+
),
|
|
262
|
+
...TRAJECTORY_ROUTES.map(
|
|
263
|
+
(r) => ({
|
|
264
|
+
type: r.type,
|
|
265
|
+
path: r.path,
|
|
266
|
+
rawPath: true,
|
|
267
|
+
handler: trajectoryRouteHandler()
|
|
268
|
+
})
|
|
269
|
+
),
|
|
270
|
+
...EXPERIENCE_ROUTE_PATHS.map(
|
|
271
|
+
(r) => ({
|
|
272
|
+
type: r.type,
|
|
273
|
+
path: r.path,
|
|
274
|
+
rawPath: true,
|
|
275
|
+
handler: experienceRouteHandler()
|
|
276
|
+
})
|
|
277
|
+
)
|
|
278
|
+
];
|
|
279
|
+
const trainingPlugin = {
|
|
280
|
+
name: "@elizaos/plugin-training-routes",
|
|
281
|
+
description: "Training jobs, datasets, models, blueprints, and trajectory routes",
|
|
282
|
+
routes: trainingRoutes,
|
|
283
|
+
views: [
|
|
284
|
+
// ONE declaration → GUI + XR + TUI. The rich `FineTuningView` is the
|
|
285
|
+
// catalog componentExport for GUI/XR; the terminal surface renders the
|
|
286
|
+
// registered FineTuningSpatialView via the spatial terminal registry (see
|
|
287
|
+
// register-terminal-view.tsx). `modalities` is a plain literal here, so no
|
|
288
|
+
// brand-new `@elizaos/core` runtime export reaches the bundle build.
|
|
289
|
+
{
|
|
290
|
+
id: "training",
|
|
291
|
+
label: "Training",
|
|
292
|
+
description: "Fine-tuning jobs, data collection, analysis, evals, benchmarks, trained models, and trajectory management",
|
|
293
|
+
icon: "BrainCircuit",
|
|
294
|
+
path: "/apps/fine-tuning",
|
|
295
|
+
modalities: ["gui", "xr", "tui"],
|
|
296
|
+
bundlePath: "dist/views/bundle.js",
|
|
297
|
+
componentExport: "FineTuningView",
|
|
298
|
+
tags: [
|
|
299
|
+
"training",
|
|
300
|
+
"fine-tuning",
|
|
301
|
+
"models",
|
|
302
|
+
"trajectories",
|
|
303
|
+
"datasets",
|
|
304
|
+
"evals",
|
|
305
|
+
"benchmarks",
|
|
306
|
+
"analysis",
|
|
307
|
+
"data-collection"
|
|
308
|
+
],
|
|
309
|
+
developerOnly: true,
|
|
310
|
+
visibleInManager: true,
|
|
311
|
+
desktopTabEnabled: true
|
|
312
|
+
}
|
|
313
|
+
]
|
|
314
|
+
};
|
|
315
|
+
export {
|
|
316
|
+
trainingPlugin,
|
|
317
|
+
trainingRoutes
|
|
318
|
+
};
|
|
319
|
+
//# sourceMappingURL=setup-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/setup-routes.ts"],"sourcesContent":["/**\n * Training and trajectory HTTP routes for the app-training plugin.\n *\n * These routes were previously dispatched from\n * `packages/agent/src/api/server.ts`. They are now registered through the\n * plugin route registry with `rawPath: true`.\n *\n * The handlers read the live TrainingService from the in-process registry\n * (`getActiveTrainingService`), which server.ts startup populates after it\n * builds the service instance with `getConfig` / `setConfig` callbacks.\n * Trajectory routes do not require the TrainingService — they work directly\n * against the AgentRuntime.\n */\n\nimport type http from \"node:http\";\nimport { TLSSocket } from \"node:tls\";\nimport type {\n AgentRuntime,\n LegacyRouteHandler,\n Plugin,\n Route,\n} from \"@elizaos/core\";\nimport {\n sendJson as httpSendJson,\n sendJsonError as httpSendJsonError,\n} from \"@elizaos/core\";\nimport { readJsonBody as httpReadJsonBody } from \"@elizaos/shared\";\nimport { loadTrainingConfig } from \"./core/training-config.js\";\nimport {\n EXPERIENCE_ROUTE_PATHS,\n handleExperienceRoutes,\n} from \"./routes/experience-routes.js\";\nimport { handleTrainingRoutes } from \"./routes/training-routes.js\";\nimport { handleVastTrainingRoutes } from \"./routes/training-vast-routes.js\";\nimport { handleTrajectoryRoute } from \"./routes/trajectory-routes.js\";\nimport { getActiveTrainingService } from \"./services/training-service-registry.js\";\nimport { VastTrainingService } from \"./services/training-vast-service.js\";\n\n// In a terminal host (the Node agent, no DOM), register the training view so it\n// renders inline in the terminal. Lazy + DOM-guarded so the terminal engine\n// stays out of browser/mobile bundles.\nif (typeof window === \"undefined\") {\n void import(\"./register-terminal-view.js\")\n .then((m) => m.registerFineTuningTerminalView())\n .catch(() => {\n // Terminal rendering is best-effort; never block plugin load.\n });\n}\n\nconst LOOPBACK_HOSTS = new Set([\n \"localhost\",\n \"127.0.0.1\",\n \"[::1]\",\n \"::1\",\n \"0.0.0.0\",\n]);\n\nfunction emptyTrainingTaskCounters(): Record<string, number> {\n return {\n should_respond: 0,\n context_routing: 0,\n action_planner: 0,\n response: 0,\n media_description: 0,\n };\n}\n\nfunction isLoopbackHost(host: string): boolean {\n if (!host) return false;\n const trimmed = host.trim();\n if (LOOPBACK_HOSTS.has(trimmed)) return true;\n const noPort = trimmed.replace(/:\\d+$/, \"\");\n return LOOPBACK_HOSTS.has(noPort);\n}\n\nfunction json(res: http.ServerResponse, data: unknown, status = 200): void {\n httpSendJson(res, data, status);\n}\n\nfunction error(res: http.ServerResponse, message: string, status = 400): void {\n httpSendJsonError(res, message, status);\n}\n\nfunction firstHeaderValue(value: string | string[] | undefined): string | null {\n if (Array.isArray(value)) {\n return firstHeaderValue(value[0]);\n }\n if (typeof value !== \"string\") {\n return null;\n }\n const normalized = value.split(\",\")[0]?.trim();\n return normalized ? normalized : null;\n}\n\nfunction requestBaseUrl(req: http.IncomingMessage): string {\n const headers = req.headers;\n const protocol =\n firstHeaderValue(headers[\"x-forwarded-proto\"]) ??\n (req.socket instanceof TLSSocket && req.socket.encrypted\n ? \"https\"\n : \"http\");\n const host =\n firstHeaderValue(headers[\"x-forwarded-host\"]) ??\n firstHeaderValue(headers.host) ??\n \"localhost\";\n return `${protocol}://${host}`;\n}\n\nfunction trainingRouteHandler(): LegacyRouteHandler {\n return async (\n req: unknown,\n res: unknown,\n runtime: unknown,\n ): Promise<void> => {\n const httpReq = req as http.IncomingMessage;\n const httpRes = res as http.ServerResponse;\n const agentRuntime = (runtime as AgentRuntime) ?? null;\n const trainingService = getActiveTrainingService();\n const method = (httpReq.method ?? \"GET\").toUpperCase();\n const url = new URL(httpReq.url ?? \"/\", requestBaseUrl(httpReq));\n if (!trainingService) {\n if (method === \"GET\" && url.pathname === \"/api/training/auto/config\") {\n json(httpRes, { config: loadTrainingConfig() });\n return;\n }\n if (method === \"GET\" && url.pathname === \"/api/training/auto/status\") {\n const config = loadTrainingConfig();\n json(httpRes, {\n autoTrainEnabled: config.autoTrain,\n triggerThreshold: config.triggerThreshold,\n cooldownHours: config.triggerCooldownHours,\n counters: emptyTrainingTaskCounters(),\n lastTrain: {},\n perTaskThresholds: emptyTrainingTaskCounters(),\n perTaskCooldownMs: emptyTrainingTaskCounters(),\n serviceRegistered: false,\n });\n return;\n }\n error(httpRes, \"Training service is not available\", 503);\n return;\n }\n await handleTrainingRoutes({\n req: httpReq,\n res: httpRes,\n method,\n pathname: url.pathname,\n runtime: agentRuntime,\n trainingService,\n readJsonBody: httpReadJsonBody,\n json,\n error,\n isLoopbackHost,\n });\n };\n}\n\nlet cachedVastService: VastTrainingService | null = null;\nfunction getVastService(): VastTrainingService {\n if (!cachedVastService) cachedVastService = new VastTrainingService();\n return cachedVastService;\n}\n\nfunction vastTrainingRouteHandler(): LegacyRouteHandler {\n return async (req: unknown, res: unknown): Promise<void> => {\n const httpReq = req as http.IncomingMessage;\n const httpRes = res as http.ServerResponse;\n const method = (httpReq.method ?? \"GET\").toUpperCase();\n const url = new URL(httpReq.url ?? \"/\", requestBaseUrl(httpReq));\n await handleVastTrainingRoutes({\n req: httpReq,\n res: httpRes,\n method,\n pathname: url.pathname,\n service: getVastService(),\n readJsonBody: httpReadJsonBody,\n json,\n error,\n });\n };\n}\n\nfunction trajectoryRouteHandler(): LegacyRouteHandler {\n return async (\n req: unknown,\n res: unknown,\n runtime: unknown,\n ): Promise<void> => {\n const httpReq = req as http.IncomingMessage;\n const httpRes = res as http.ServerResponse;\n const agentRuntime = (runtime as AgentRuntime) ?? null;\n if (!agentRuntime) {\n error(httpRes, \"Agent runtime not started yet\", 503);\n return;\n }\n const method = (httpReq.method ?? \"GET\").toUpperCase();\n const url = new URL(httpReq.url ?? \"/\", requestBaseUrl(httpReq));\n await handleTrajectoryRoute(\n httpReq,\n httpRes,\n agentRuntime,\n url.pathname,\n method,\n );\n };\n}\n\nfunction experienceRouteHandler(): LegacyRouteHandler {\n return async (\n req: unknown,\n res: unknown,\n runtime: unknown,\n ): Promise<void> => {\n const httpReq = req as http.IncomingMessage;\n const httpRes = res as http.ServerResponse;\n const agentRuntime = (runtime as AgentRuntime) ?? null;\n const method = (httpReq.method ?? \"GET\").toUpperCase();\n const url = new URL(httpReq.url ?? \"/\", requestBaseUrl(httpReq));\n await handleExperienceRoutes({\n req: httpReq,\n res: httpRes,\n method,\n pathname: url.pathname,\n runtime: agentRuntime,\n url,\n readJsonBody: httpReadJsonBody,\n json,\n error,\n });\n };\n}\n\nconst TRAINING_ROUTES: Array<{ type: string; path: string }> = [\n // Static training endpoints\n { type: \"GET\", path: \"/api/training/status\" },\n { type: \"GET\", path: \"/api/training/auto/status\" },\n { type: \"POST\", path: \"/api/training/auto/trigger\" },\n { type: \"GET\", path: \"/api/training/auto/runs\" },\n { type: \"GET\", path: \"/api/training/auto/runs/:runId\" },\n { type: \"GET\", path: \"/api/training/auto/config\" },\n { type: \"POST\", path: \"/api/training/auto/config\" },\n // Analysis + readiness\n { type: \"POST\", path: \"/api/training/analysis/index\" },\n { type: \"POST\", path: \"/api/training/analysis/readiness\" },\n // Data collection pipeline\n { type: \"GET\", path: \"/api/training/collections\" },\n { type: \"POST\", path: \"/api/training/collect\" },\n { type: \"POST\", path: \"/api/training/feed/generate\" },\n { type: \"POST\", path: \"/api/training/scenarios/run\" },\n { type: \"POST\", path: \"/api/training/datasets/ingest-hf\" },\n // Evals + benchmarks\n { type: \"POST\", path: \"/api/training/evals/record-comparison\" },\n { type: \"POST\", path: \"/api/training/evals/run-local-comparison\" },\n { type: \"POST\", path: \"/api/training/benchmarks/action-selection/run\" },\n { type: \"POST\", path: \"/api/training/benchmarks/matrix\" },\n { type: \"POST\", path: \"/api/training/benchmarks/matrix/from-artifacts\" },\n { type: \"POST\", path: \"/api/training/benchmarks/run-vs-cerebras\" },\n { type: \"POST\", path: \"/api/training/models/stage-eliza1-bundle\" },\n { type: \"GET\", path: \"/api/training/trajectories\" },\n { type: \"GET\", path: \"/api/training/trajectories/:trajectoryId\" },\n { type: \"POST\", path: \"/api/training/trajectories/export\" },\n { type: \"POST\", path: \"/api/training/trajectories/publish\" },\n { type: \"GET\", path: \"/api/training/datasets\" },\n { type: \"POST\", path: \"/api/training/datasets/build\" },\n { type: \"GET\", path: \"/api/training/backends\" },\n { type: \"GET\", path: \"/api/training/jobs\" },\n { type: \"POST\", path: \"/api/training/jobs\" },\n { type: \"GET\", path: \"/api/training/jobs/:jobId\" },\n { type: \"POST\", path: \"/api/training/jobs/:jobId/cancel\" },\n { type: \"GET\", path: \"/api/training/models\" },\n { type: \"POST\", path: \"/api/training/models/:modelId/import-ollama\" },\n { type: \"POST\", path: \"/api/training/models/:modelId/activate\" },\n { type: \"POST\", path: \"/api/training/models/:modelId/benchmark\" },\n { type: \"GET\", path: \"/api/training/blueprints\" },\n { type: \"GET\", path: \"/api/training/context-catalog\" },\n { type: \"GET\", path: \"/api/training/context-audit\" },\n { type: \"POST\", path: \"/api/training/generate-dataset\" },\n { type: \"POST\", path: \"/api/training/generate-roleplay\" },\n { type: \"POST\", path: \"/api/training/roleplay/execute\" },\n];\n\nconst VAST_ROUTES: Array<{ type: string; path: string }> = [\n { type: \"POST\", path: \"/api/training/vast/jobs\" },\n { type: \"GET\", path: \"/api/training/vast/jobs\" },\n { type: \"GET\", path: \"/api/training/vast/jobs/:id\" },\n { type: \"POST\", path: \"/api/training/vast/jobs/:id/cancel\" },\n { type: \"POST\", path: \"/api/training/vast/jobs/:id/eval\" },\n { type: \"GET\", path: \"/api/training/vast/jobs/:id/logs\" },\n { type: \"GET\", path: \"/api/training/vast/jobs/:id/budget\" },\n { type: \"GET\", path: \"/api/training/vast/models\" },\n { type: \"GET\", path: \"/api/training/vast/models/:short_name/checkpoints\" },\n { type: \"GET\", path: \"/api/training/vast/inference/endpoints\" },\n { type: \"POST\", path: \"/api/training/vast/inference/endpoints\" },\n { type: \"DELETE\", path: \"/api/training/vast/inference/endpoints/:id\" },\n { type: \"GET\", path: \"/api/training/vast/inference/stats\" },\n];\n\nconst TRAJECTORY_ROUTES: Array<{ type: string; path: string }> = [\n { type: \"GET\", path: \"/api/trajectories\" },\n { type: \"DELETE\", path: \"/api/trajectories\" },\n { type: \"GET\", path: \"/api/trajectories/config\" },\n { type: \"PUT\", path: \"/api/trajectories/config\" },\n { type: \"POST\", path: \"/api/trajectories/export\" },\n { type: \"GET\", path: \"/api/trajectories/stats\" },\n { type: \"GET\", path: \"/api/trajectories/:id\" },\n];\n\nexport const trainingRoutes: Route[] = [\n ...TRAINING_ROUTES.map(\n (r) =>\n ({\n type: r.type as Route[\"type\"],\n path: r.path,\n rawPath: true as const,\n handler: trainingRouteHandler(),\n }) as Route,\n ),\n ...VAST_ROUTES.map(\n (r) =>\n ({\n type: r.type as Route[\"type\"],\n path: r.path,\n rawPath: true as const,\n handler: vastTrainingRouteHandler(),\n }) as Route,\n ),\n ...TRAJECTORY_ROUTES.map(\n (r) =>\n ({\n type: r.type as Route[\"type\"],\n path: r.path,\n rawPath: true as const,\n handler: trajectoryRouteHandler(),\n }) as Route,\n ),\n ...EXPERIENCE_ROUTE_PATHS.map(\n (r) =>\n ({\n type: r.type as Route[\"type\"],\n path: r.path,\n rawPath: true as const,\n handler: experienceRouteHandler(),\n }) as Route,\n ),\n];\n\nexport const trainingPlugin: Plugin = {\n name: \"@elizaos/plugin-training-routes\",\n description:\n \"Training jobs, datasets, models, blueprints, and trajectory routes\",\n routes: trainingRoutes,\n views: [\n // ONE declaration → GUI + XR + TUI. The rich `FineTuningView` is the\n // catalog componentExport for GUI/XR; the terminal surface renders the\n // registered FineTuningSpatialView via the spatial terminal registry (see\n // register-terminal-view.tsx). `modalities` is a plain literal here, so no\n // brand-new `@elizaos/core` runtime export reaches the bundle build.\n {\n id: \"training\",\n label: \"Training\",\n description:\n \"Fine-tuning jobs, data collection, analysis, evals, benchmarks, trained models, and trajectory management\",\n icon: \"BrainCircuit\",\n path: \"/apps/fine-tuning\",\n modalities: [\"gui\", \"xr\", \"tui\"],\n bundlePath: \"dist/views/bundle.js\",\n componentExport: \"FineTuningView\",\n tags: [\n \"training\",\n \"fine-tuning\",\n \"models\",\n \"trajectories\",\n \"datasets\",\n \"evals\",\n \"benchmarks\",\n \"analysis\",\n \"data-collection\",\n ],\n developerOnly: true,\n visibleInManager: true,\n desktopTabEnabled: true,\n },\n ],\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FineTuningSpatialView — the training surface authored once with the spatial
|
|
3
|
+
* vocabulary, so it renders correctly wherever it is displayed:
|
|
4
|
+
*
|
|
5
|
+
* - GUI / XR - the rich `FineTuningView` is the catalog componentExport; this
|
|
6
|
+
* spatial view is the compact cross-modality summary.
|
|
7
|
+
* - TUI - rendered to real terminal lines by the agent terminal, via
|
|
8
|
+
* `registerSpatialTerminalView` (see `register-terminal-view.tsx`).
|
|
9
|
+
*
|
|
10
|
+
* It is purely presentational (a snapshot + an action callback in, primitives
|
|
11
|
+
* out) and imports only the cross-modality primitives, so it is safe to render
|
|
12
|
+
* in the Node agent process where the terminal lives (no shell-host UI or heavy
|
|
13
|
+
* API-client import).
|
|
14
|
+
*/
|
|
15
|
+
export interface FineTuningJobRow {
|
|
16
|
+
id: string;
|
|
17
|
+
status: string;
|
|
18
|
+
phase: string;
|
|
19
|
+
/** 0..1 progress fraction. */
|
|
20
|
+
progress: number;
|
|
21
|
+
datasetId: string;
|
|
22
|
+
}
|
|
23
|
+
export interface FineTuningSnapshot {
|
|
24
|
+
runtimeAvailable: boolean;
|
|
25
|
+
runningJobs: number;
|
|
26
|
+
queuedJobs: number;
|
|
27
|
+
completedJobs: number;
|
|
28
|
+
failedJobs: number;
|
|
29
|
+
jobs: FineTuningJobRow[];
|
|
30
|
+
/** Trained-model count. */
|
|
31
|
+
models: number;
|
|
32
|
+
/** Built-dataset count. */
|
|
33
|
+
datasets: number;
|
|
34
|
+
/** Total trajectories available for dataset building. */
|
|
35
|
+
trajectoryCount: number;
|
|
36
|
+
loading?: boolean;
|
|
37
|
+
error?: string | null;
|
|
38
|
+
}
|
|
39
|
+
export interface FineTuningSpatialViewProps {
|
|
40
|
+
snapshot: FineTuningSnapshot;
|
|
41
|
+
/**
|
|
42
|
+
* Dispatched action ids: `refresh`, `start-job`, `cancel-job`, and
|
|
43
|
+
* `job:<id>` (open a specific job's detail).
|
|
44
|
+
*/
|
|
45
|
+
onAction?: (action: string) => void;
|
|
46
|
+
}
|
|
47
|
+
export declare function FineTuningSpatialView({ snapshot, onAction, }: FineTuningSpatialViewProps): import("react/jsx-runtime").JSX.Element;
|
|
48
|
+
export default FineTuningSpatialView;
|
|
49
|
+
//# sourceMappingURL=FineTuningSpatialView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FineTuningSpatialView.d.ts","sourceRoot":"","sources":["../../src/ui/FineTuningSpatialView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAaH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAqBD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,QAAQ,GACT,EAAE,0BAA0B,2CAuI5B;AAED,eAAe,qBAAqB,CAAC"}
|