cognitive-core 0.2.5 → 0.3.1
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/LICENSE +21 -0
- package/README.md +88 -143
- package/dist/agents/mock-provider.d.ts.map +1 -1
- package/dist/agents/mock-provider.js.map +1 -1
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/types.js +5 -4
- package/dist/agents/types.js.map +1 -1
- package/dist/atlas.d.ts +309 -97
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +743 -277
- package/dist/atlas.js.map +1 -1
- package/dist/bin/cli-utils.d.ts +25 -2
- package/dist/bin/cli-utils.d.ts.map +1 -1
- package/dist/bin/cli-utils.js +79 -9
- package/dist/bin/cli-utils.js.map +1 -1
- package/dist/bin/cognitive-core.js +32 -0
- package/dist/bin/cognitive-core.js.map +1 -1
- package/dist/bin/commands/dream.d.ts +17 -0
- package/dist/bin/commands/dream.d.ts.map +1 -0
- package/dist/bin/commands/dream.js +168 -0
- package/dist/bin/commands/dream.js.map +1 -0
- package/dist/bin/commands/eval.d.ts +181 -0
- package/dist/bin/commands/eval.d.ts.map +1 -0
- package/dist/bin/commands/eval.js +1582 -0
- package/dist/bin/commands/eval.js.map +1 -0
- package/dist/bin/commands/kb.js +0 -8
- package/dist/bin/commands/kb.js.map +1 -1
- package/dist/bin/commands/learn.js +12 -4
- package/dist/bin/commands/learn.js.map +1 -1
- package/dist/bin/commands/legacy.d.ts.map +1 -1
- package/dist/bin/commands/legacy.js +1 -1
- package/dist/bin/commands/legacy.js.map +1 -1
- package/dist/bin/commands/run.d.ts.map +1 -1
- package/dist/bin/commands/run.js +10 -9
- package/dist/bin/commands/run.js.map +1 -1
- package/dist/bin/commands/sessions.d.ts.map +1 -1
- package/dist/bin/commands/sessions.js.map +1 -1
- package/dist/bin/commands/skills.d.ts.map +1 -1
- package/dist/bin/commands/skills.js +283 -1
- package/dist/bin/commands/skills.js.map +1 -1
- package/dist/embeddings/bm25.d.ts.map +1 -1
- package/dist/embeddings/bm25.js +1 -2
- package/dist/embeddings/bm25.js.map +1 -1
- package/dist/embeddings/index.d.ts +3 -3
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +3 -3
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/inverted-index.js +62 -7
- package/dist/embeddings/inverted-index.js.map +1 -1
- package/dist/embeddings/manager.d.ts.map +1 -1
- package/dist/embeddings/manager.js +6 -5
- package/dist/embeddings/manager.js.map +1 -1
- package/dist/embeddings/provider.d.ts +96 -5
- package/dist/embeddings/provider.d.ts.map +1 -1
- package/dist/embeddings/provider.js +171 -48
- package/dist/embeddings/provider.js.map +1 -1
- package/dist/embeddings/vector-store.d.ts.map +1 -1
- package/dist/embeddings/vector-store.js +3 -1
- package/dist/embeddings/vector-store.js.map +1 -1
- package/dist/eval/ablation-validate.d.ts +12 -0
- package/dist/eval/ablation-validate.d.ts.map +1 -0
- package/dist/eval/ablation-validate.js +78 -0
- package/dist/eval/ablation-validate.js.map +1 -0
- package/dist/eval/ablation.d.ts +94 -0
- package/dist/eval/ablation.d.ts.map +1 -0
- package/dist/eval/ablation.js +161 -0
- package/dist/eval/ablation.js.map +1 -0
- package/dist/eval/ci-smoke.d.ts +11 -0
- package/dist/eval/ci-smoke.d.ts.map +1 -0
- package/dist/eval/ci-smoke.js +49 -0
- package/dist/eval/ci-smoke.js.map +1 -0
- package/dist/eval/diagnostics.d.ts +214 -0
- package/dist/eval/diagnostics.d.ts.map +1 -0
- package/dist/eval/diagnostics.js +107 -0
- package/dist/eval/diagnostics.js.map +1 -0
- package/dist/eval/index.d.ts +27 -0
- package/dist/eval/index.d.ts.map +1 -0
- package/dist/eval/index.js +27 -0
- package/dist/eval/index.js.map +1 -0
- package/dist/eval/live/alfworld.d.ts +248 -0
- package/dist/eval/live/alfworld.d.ts.map +1 -0
- package/dist/eval/live/alfworld.js +637 -0
- package/dist/eval/live/alfworld.js.map +1 -0
- package/dist/eval/live/alfworld_h1.d.ts +16 -0
- package/dist/eval/live/alfworld_h1.d.ts.map +1 -0
- package/dist/eval/live/alfworld_h1.js +75 -0
- package/dist/eval/live/alfworld_h1.js.map +1 -0
- package/dist/eval/live/alfworld_memory.d.ts +38 -0
- package/dist/eval/live/alfworld_memory.d.ts.map +1 -0
- package/dist/eval/live/alfworld_memory.js +184 -0
- package/dist/eval/live/alfworld_memory.js.map +1 -0
- package/dist/eval/live/alfworld_strategy.d.ts +65 -0
- package/dist/eval/live/alfworld_strategy.d.ts.map +1 -0
- package/dist/eval/live/alfworld_strategy.js +89 -0
- package/dist/eval/live/alfworld_strategy.js.map +1 -0
- package/dist/eval/live/azure-openai-llm-provider.d.ts +41 -0
- package/dist/eval/live/azure-openai-llm-provider.d.ts.map +1 -0
- package/dist/eval/live/azure-openai-llm-provider.js +92 -0
- package/dist/eval/live/azure-openai-llm-provider.js.map +1 -0
- package/dist/eval/live/bridges/skillflow_e2b_bridge.d.ts +3 -0
- package/dist/eval/live/bridges/skillflow_e2b_bridge.d.ts.map +1 -0
- package/dist/eval/live/bridges/skillflow_e2b_bridge.js +12 -0
- package/dist/eval/live/bridges/skillflow_e2b_bridge.js.map +1 -0
- package/dist/eval/live/claude-cli-llm-provider.d.ts +53 -0
- package/dist/eval/live/claude-cli-llm-provider.d.ts.map +1 -0
- package/dist/eval/live/claude-cli-llm-provider.js +71 -0
- package/dist/eval/live/claude-cli-llm-provider.js.map +1 -0
- package/dist/eval/live/claude-cli.d.ts +96 -0
- package/dist/eval/live/claude-cli.d.ts.map +1 -0
- package/dist/eval/live/claude-cli.js +314 -0
- package/dist/eval/live/claude-cli.js.map +1 -0
- package/dist/eval/live/claude-delegate.d.ts +41 -0
- package/dist/eval/live/claude-delegate.d.ts.map +1 -0
- package/dist/eval/live/claude-delegate.js +59 -0
- package/dist/eval/live/claude-delegate.js.map +1 -0
- package/dist/eval/live/claude-workspace-backend.d.ts +24 -0
- package/dist/eval/live/claude-workspace-backend.d.ts.map +1 -0
- package/dist/eval/live/claude-workspace-backend.js +76 -0
- package/dist/eval/live/claude-workspace-backend.js.map +1 -0
- package/dist/eval/live/clbench.d.ts +64 -0
- package/dist/eval/live/clbench.d.ts.map +1 -0
- package/dist/eval/live/clbench.js +291 -0
- package/dist/eval/live/clbench.js.map +1 -0
- package/dist/eval/live/cold-reuse.d.ts +21 -0
- package/dist/eval/live/cold-reuse.d.ts.map +1 -0
- package/dist/eval/live/cold-reuse.js +102 -0
- package/dist/eval/live/cold-reuse.js.map +1 -0
- package/dist/eval/live/difficulty-registry.d.ts +68 -0
- package/dist/eval/live/difficulty-registry.d.ts.map +1 -0
- package/dist/eval/live/difficulty-registry.js +169 -0
- package/dist/eval/live/difficulty-registry.js.map +1 -0
- package/dist/eval/live/docker.d.ts +52 -0
- package/dist/eval/live/docker.d.ts.map +1 -0
- package/dist/eval/live/docker.js +164 -0
- package/dist/eval/live/docker.js.map +1 -0
- package/dist/eval/live/env-bridge.d.ts +68 -0
- package/dist/eval/live/env-bridge.d.ts.map +1 -0
- package/dist/eval/live/env-bridge.js +188 -0
- package/dist/eval/live/env-bridge.js.map +1 -0
- package/dist/eval/live/gsm8k.d.ts +44 -0
- package/dist/eval/live/gsm8k.d.ts.map +1 -0
- package/dist/eval/live/gsm8k.js +142 -0
- package/dist/eval/live/gsm8k.js.map +1 -0
- package/dist/eval/live/index.d.ts +38 -0
- package/dist/eval/live/index.d.ts.map +1 -0
- package/dist/eval/live/index.js +38 -0
- package/dist/eval/live/index.js.map +1 -0
- package/dist/eval/live/lifelongagent.d.ts +64 -0
- package/dist/eval/live/lifelongagent.d.ts.map +1 -0
- package/dist/eval/live/lifelongagent.js +216 -0
- package/dist/eval/live/lifelongagent.js.map +1 -0
- package/dist/eval/live/lift-registry.d.ts +128 -0
- package/dist/eval/live/lift-registry.d.ts.map +1 -0
- package/dist/eval/live/lift-registry.js +147 -0
- package/dist/eval/live/lift-registry.js.map +1 -0
- package/dist/eval/live/live-benchmark.d.ts +84 -0
- package/dist/eval/live/live-benchmark.d.ts.map +1 -0
- package/dist/eval/live/live-benchmark.js +2 -0
- package/dist/eval/live/live-benchmark.js.map +1 -0
- package/dist/eval/live/live-runner.d.ts +609 -0
- package/dist/eval/live/live-runner.d.ts.map +1 -0
- package/dist/eval/live/live-runner.js +1409 -0
- package/dist/eval/live/live-runner.js.map +1 -0
- package/dist/eval/live/refine.d.ts +88 -0
- package/dist/eval/live/refine.d.ts.map +1 -0
- package/dist/eval/live/refine.js +135 -0
- package/dist/eval/live/refine.js.map +1 -0
- package/dist/eval/live/registry-store.d.ts +109 -0
- package/dist/eval/live/registry-store.d.ts.map +1 -0
- package/dist/eval/live/registry-store.js +272 -0
- package/dist/eval/live/registry-store.js.map +1 -0
- package/dist/eval/live/run-checkpoint.d.ts +55 -0
- package/dist/eval/live/run-checkpoint.d.ts.map +1 -0
- package/dist/eval/live/run-checkpoint.js +86 -0
- package/dist/eval/live/run-checkpoint.js.map +1 -0
- package/dist/eval/live/run-resume.d.ts +22 -0
- package/dist/eval/live/run-resume.d.ts.map +1 -0
- package/dist/eval/live/run-resume.js +70 -0
- package/dist/eval/live/run-resume.js.map +1 -0
- package/dist/eval/live/skill-injector.d.ts +36 -0
- package/dist/eval/live/skill-injector.d.ts.map +1 -0
- package/dist/eval/live/skill-injector.js +81 -0
- package/dist/eval/live/skill-injector.js.map +1 -0
- package/dist/eval/live/skillflow-embedded-workbook-bundle.d.ts +3 -0
- package/dist/eval/live/skillflow-embedded-workbook-bundle.d.ts.map +1 -0
- package/dist/eval/live/skillflow-embedded-workbook-bundle.js +391 -0
- package/dist/eval/live/skillflow-embedded-workbook-bundle.js.map +1 -0
- package/dist/eval/live/skillflow.d.ts +154 -0
- package/dist/eval/live/skillflow.d.ts.map +1 -0
- package/dist/eval/live/skillflow.js +612 -0
- package/dist/eval/live/skillflow.js.map +1 -0
- package/dist/eval/live/skilllearnbench.d.ts +43 -0
- package/dist/eval/live/skilllearnbench.d.ts.map +1 -0
- package/dist/eval/live/skilllearnbench.js +154 -0
- package/dist/eval/live/skilllearnbench.js.map +1 -0
- package/dist/eval/live/skillopt_v1.d.ts +96 -0
- package/dist/eval/live/skillopt_v1.d.ts.map +1 -0
- package/dist/eval/live/skillopt_v1.js +0 -0
- package/dist/eval/live/skillopt_v1.js.map +1 -0
- package/dist/eval/live/skillopt_v1_causal.d.ts +26 -0
- package/dist/eval/live/skillopt_v1_causal.d.ts.map +1 -0
- package/dist/eval/live/skillopt_v1_causal.js +106 -0
- package/dist/eval/live/skillopt_v1_causal.js.map +1 -0
- package/dist/eval/live/skillopt_v1_memory.d.ts +53 -0
- package/dist/eval/live/skillopt_v1_memory.d.ts.map +1 -0
- package/dist/eval/live/skillopt_v1_memory.js +147 -0
- package/dist/eval/live/skillopt_v1_memory.js.map +1 -0
- package/dist/eval/live/skillopt_v1_rules.d.ts +39 -0
- package/dist/eval/live/skillopt_v1_rules.d.ts.map +1 -0
- package/dist/eval/live/skillopt_v1_rules.js +91 -0
- package/dist/eval/live/skillopt_v1_rules.js.map +1 -0
- package/dist/eval/live/skillsbench.d.ts +138 -0
- package/dist/eval/live/skillsbench.d.ts.map +1 -0
- package/dist/eval/live/skillsbench.js +626 -0
- package/dist/eval/live/skillsbench.js.map +1 -0
- package/dist/eval/live/stopping.d.ts +69 -0
- package/dist/eval/live/stopping.d.ts.map +1 -0
- package/dist/eval/live/stopping.js +213 -0
- package/dist/eval/live/stopping.js.map +1 -0
- package/dist/eval/live/trace.d.ts +20 -0
- package/dist/eval/live/trace.d.ts.map +1 -0
- package/dist/eval/live/trace.js +41 -0
- package/dist/eval/live/trace.js.map +1 -0
- package/dist/eval/mechanism-trace-adapter.d.ts +8 -0
- package/dist/eval/mechanism-trace-adapter.d.ts.map +1 -0
- package/dist/eval/mechanism-trace-adapter.js +118 -0
- package/dist/eval/mechanism-trace-adapter.js.map +1 -0
- package/dist/eval/memory-ab.d.ts +61 -0
- package/dist/eval/memory-ab.d.ts.map +1 -0
- package/dist/eval/memory-ab.js +161 -0
- package/dist/eval/memory-ab.js.map +1 -0
- package/dist/eval/memory-mock.d.ts +54 -0
- package/dist/eval/memory-mock.d.ts.map +1 -0
- package/dist/eval/memory-mock.js +129 -0
- package/dist/eval/memory-mock.js.map +1 -0
- package/dist/eval/memory-qa/index.d.ts +13 -0
- package/dist/eval/memory-qa/index.d.ts.map +1 -0
- package/dist/eval/memory-qa/index.js +13 -0
- package/dist/eval/memory-qa/index.js.map +1 -0
- package/dist/eval/memory-qa/iterative.d.ts +80 -0
- package/dist/eval/memory-qa/iterative.d.ts.map +1 -0
- package/dist/eval/memory-qa/iterative.js +107 -0
- package/dist/eval/memory-qa/iterative.js.map +1 -0
- package/dist/eval/memory-qa/loaders.d.ts +11 -0
- package/dist/eval/memory-qa/loaders.d.ts.map +1 -0
- package/dist/eval/memory-qa/loaders.js +21 -0
- package/dist/eval/memory-qa/loaders.js.map +1 -0
- package/dist/eval/memory-qa/metrics.d.ts +3 -0
- package/dist/eval/memory-qa/metrics.d.ts.map +1 -0
- package/dist/eval/memory-qa/metrics.js +2 -0
- package/dist/eval/memory-qa/metrics.js.map +1 -0
- package/dist/eval/memory-qa/qa.d.ts +186 -0
- package/dist/eval/memory-qa/qa.d.ts.map +1 -0
- package/dist/eval/memory-qa/qa.js +424 -0
- package/dist/eval/memory-qa/qa.js.map +1 -0
- package/dist/eval/memory-qa/retrieval.d.ts +33 -0
- package/dist/eval/memory-qa/retrieval.d.ts.map +1 -0
- package/dist/eval/memory-qa/retrieval.js +44 -0
- package/dist/eval/memory-qa/retrieval.js.map +1 -0
- package/dist/eval/memory-qa/serving.d.ts +60 -0
- package/dist/eval/memory-qa/serving.d.ts.map +1 -0
- package/dist/eval/memory-qa/serving.js +267 -0
- package/dist/eval/memory-qa/serving.js.map +1 -0
- package/dist/eval/memory-qa/types.d.ts +2 -0
- package/dist/eval/memory-qa/types.d.ts.map +1 -0
- package/dist/eval/memory-qa/types.js +2 -0
- package/dist/eval/memory-qa/types.js.map +1 -0
- package/dist/eval/metrics.d.ts +120 -0
- package/dist/eval/metrics.d.ts.map +1 -0
- package/dist/eval/metrics.js +361 -0
- package/dist/eval/metrics.js.map +1 -0
- package/dist/eval/oracle-smoke.d.ts +75 -0
- package/dist/eval/oracle-smoke.d.ts.map +1 -0
- package/dist/eval/oracle-smoke.js +143 -0
- package/dist/eval/oracle-smoke.js.map +1 -0
- package/dist/eval/playbook-calibration-report.d.ts +40 -0
- package/dist/eval/playbook-calibration-report.d.ts.map +1 -0
- package/dist/eval/playbook-calibration-report.js +246 -0
- package/dist/eval/playbook-calibration-report.js.map +1 -0
- package/dist/eval/playbook-candidate-decisions-report.d.ts +36 -0
- package/dist/eval/playbook-candidate-decisions-report.d.ts.map +1 -0
- package/dist/eval/playbook-candidate-decisions-report.js +201 -0
- package/dist/eval/playbook-candidate-decisions-report.js.map +1 -0
- package/dist/eval/playbook-usage-report.d.ts +7 -0
- package/dist/eval/playbook-usage-report.d.ts.map +1 -0
- package/dist/eval/playbook-usage-report.js +222 -0
- package/dist/eval/playbook-usage-report.js.map +1 -0
- package/dist/eval/report.d.ts +28 -0
- package/dist/eval/report.d.ts.map +1 -0
- package/dist/eval/report.js +567 -0
- package/dist/eval/report.js.map +1 -0
- package/dist/eval/retrieval/corpus.d.ts +41 -0
- package/dist/eval/retrieval/corpus.d.ts.map +1 -0
- package/dist/eval/retrieval/corpus.js +158 -0
- package/dist/eval/retrieval/corpus.js.map +1 -0
- package/dist/eval/retrieval/index.d.ts +12 -0
- package/dist/eval/retrieval/index.d.ts.map +1 -0
- package/dist/eval/retrieval/index.js +14 -0
- package/dist/eval/retrieval/index.js.map +1 -0
- package/dist/eval/retrieval/knowledge-corpus.d.ts +91 -0
- package/dist/eval/retrieval/knowledge-corpus.d.ts.map +1 -0
- package/dist/eval/retrieval/knowledge-corpus.js +268 -0
- package/dist/eval/retrieval/knowledge-corpus.js.map +1 -0
- package/dist/eval/retrieval/knowledge-quality.d.ts +91 -0
- package/dist/eval/retrieval/knowledge-quality.d.ts.map +1 -0
- package/dist/eval/retrieval/knowledge-quality.js +247 -0
- package/dist/eval/retrieval/knowledge-quality.js.map +1 -0
- package/dist/eval/retrieval/ladder.d.ts +69 -0
- package/dist/eval/retrieval/ladder.d.ts.map +1 -0
- package/dist/eval/retrieval/ladder.js +80 -0
- package/dist/eval/retrieval/ladder.js.map +1 -0
- package/dist/eval/retrieval/quality.d.ts +39 -0
- package/dist/eval/retrieval/quality.d.ts.map +1 -0
- package/dist/eval/retrieval/quality.js +75 -0
- package/dist/eval/retrieval/quality.js.map +1 -0
- package/dist/eval/rng.d.ts +25 -0
- package/dist/eval/rng.d.ts.map +1 -0
- package/dist/eval/rng.js +43 -0
- package/dist/eval/rng.js.map +1 -0
- package/dist/eval/runner.d.ts +65 -0
- package/dist/eval/runner.d.ts.map +1 -0
- package/dist/eval/runner.js +216 -0
- package/dist/eval/runner.js.map +1 -0
- package/dist/eval/skill-bundle.d.ts +18 -0
- package/dist/eval/skill-bundle.d.ts.map +1 -0
- package/dist/eval/skill-bundle.js +38 -0
- package/dist/eval/skill-bundle.js.map +1 -0
- package/dist/eval/swarmkit-report.d.ts +21 -0
- package/dist/eval/swarmkit-report.d.ts.map +1 -0
- package/dist/eval/swarmkit-report.js +93 -0
- package/dist/eval/swarmkit-report.js.map +1 -0
- package/dist/eval/task-stream.d.ts +22 -0
- package/dist/eval/task-stream.d.ts.map +1 -0
- package/dist/eval/task-stream.js +99 -0
- package/dist/eval/task-stream.js.map +1 -0
- package/dist/eval/types.d.ts +173 -0
- package/dist/eval/types.d.ts.map +1 -0
- package/dist/eval/types.js +11 -0
- package/dist/eval/types.js.map +1 -0
- package/dist/experimental/causal-store.d.ts +97 -0
- package/dist/experimental/causal-store.d.ts.map +1 -0
- package/dist/experimental/causal-store.js +213 -0
- package/dist/experimental/causal-store.js.map +1 -0
- package/dist/experimental/graph-layers/base.d.ts +29 -0
- package/dist/experimental/graph-layers/base.d.ts.map +1 -0
- package/dist/experimental/graph-layers/base.js +143 -0
- package/dist/experimental/graph-layers/base.js.map +1 -0
- package/dist/experimental/graph-layers/causal.d.ts +14 -0
- package/dist/experimental/graph-layers/causal.d.ts.map +1 -0
- package/dist/experimental/graph-layers/causal.js +14 -0
- package/dist/experimental/graph-layers/causal.js.map +1 -0
- package/dist/experimental/graph-layers/entity.d.ts +14 -0
- package/dist/experimental/graph-layers/entity.d.ts.map +1 -0
- package/dist/experimental/graph-layers/entity.js +14 -0
- package/dist/experimental/graph-layers/entity.js.map +1 -0
- package/dist/experimental/graph-layers/index.d.ts +6 -0
- package/dist/experimental/graph-layers/index.d.ts.map +1 -0
- package/dist/experimental/graph-layers/index.js +6 -0
- package/dist/experimental/graph-layers/index.js.map +1 -0
- package/dist/experimental/graph-layers/semantic.d.ts +14 -0
- package/dist/experimental/graph-layers/semantic.d.ts.map +1 -0
- package/dist/experimental/graph-layers/semantic.js +14 -0
- package/dist/experimental/graph-layers/semantic.js.map +1 -0
- package/dist/experimental/graph-layers/temporal.d.ts +14 -0
- package/dist/experimental/graph-layers/temporal.d.ts.map +1 -0
- package/dist/experimental/graph-layers/temporal.js +14 -0
- package/dist/experimental/graph-layers/temporal.js.map +1 -0
- package/dist/experimental/healing-orchestrator.d.ts +182 -0
- package/dist/experimental/healing-orchestrator.d.ts.map +1 -0
- package/dist/experimental/healing-orchestrator.js +250 -0
- package/dist/experimental/healing-orchestrator.js.map +1 -0
- package/dist/experimental/knowledge-graph-types.d.ts +148 -0
- package/dist/experimental/knowledge-graph-types.d.ts.map +1 -0
- package/dist/experimental/knowledge-graph-types.js +40 -0
- package/dist/experimental/knowledge-graph-types.js.map +1 -0
- package/dist/experimental/knowledge-graph.d.ts +41 -0
- package/dist/experimental/knowledge-graph.d.ts.map +1 -0
- package/dist/experimental/knowledge-graph.js +270 -0
- package/dist/experimental/knowledge-graph.js.map +1 -0
- package/dist/experimental/meta-reflection.d.ts +47 -0
- package/dist/experimental/meta-reflection.d.ts.map +1 -0
- package/dist/experimental/meta-reflection.js +143 -0
- package/dist/experimental/meta-reflection.js.map +1 -0
- package/dist/experimental/moe-gate.d.ts +134 -0
- package/dist/experimental/moe-gate.d.ts.map +1 -0
- package/dist/experimental/moe-gate.js +240 -0
- package/dist/experimental/moe-gate.js.map +1 -0
- package/dist/experimental/reasoning-bank.d.ts +130 -0
- package/dist/experimental/reasoning-bank.d.ts.map +1 -0
- package/dist/experimental/reasoning-bank.js +427 -0
- package/dist/experimental/reasoning-bank.js.map +1 -0
- package/dist/experimental/team/team-config.d.ts +127 -0
- package/dist/experimental/team/team-config.d.ts.map +1 -0
- package/dist/experimental/team/team-config.js +48 -0
- package/dist/experimental/team/team-config.js.map +1 -0
- package/dist/experimental/team/team-experience.d.ts +300 -0
- package/dist/experimental/team/team-experience.d.ts.map +1 -0
- package/dist/experimental/team/team-experience.js +355 -0
- package/dist/experimental/team/team-experience.js.map +1 -0
- package/dist/experimental/team/team-ingester.d.ts +152 -0
- package/dist/experimental/team/team-ingester.d.ts.map +1 -0
- package/dist/experimental/team/team-ingester.js +330 -0
- package/dist/experimental/team/team-ingester.js.map +1 -0
- package/dist/experimental/team/team-meta-learner.d.ts +51 -0
- package/dist/experimental/team/team-meta-learner.d.ts.map +1 -0
- package/dist/experimental/team/team-meta-learner.js +404 -0
- package/dist/experimental/team/team-meta-learner.js.map +1 -0
- package/dist/experimental/team/team-meta.d.ts +160 -0
- package/dist/experimental/team/team-meta.d.ts.map +1 -0
- package/dist/experimental/team/team-meta.js +42 -0
- package/dist/experimental/team/team-meta.js.map +1 -0
- package/dist/experimental/team/team-pipeline.d.ts +77 -0
- package/dist/experimental/team/team-pipeline.d.ts.map +1 -0
- package/dist/experimental/team/team-pipeline.js +262 -0
- package/dist/experimental/team/team-pipeline.js.map +1 -0
- package/dist/experimental/team/team-playbook-extraction.d.ts +45 -0
- package/dist/experimental/team/team-playbook-extraction.d.ts.map +1 -0
- package/dist/experimental/team/team-playbook-extraction.js +526 -0
- package/dist/experimental/team/team-playbook-extraction.js.map +1 -0
- package/dist/experimental/team/team-playbook.d.ts +276 -0
- package/dist/experimental/team/team-playbook.d.ts.map +1 -0
- package/dist/experimental/team/team-playbook.js +85 -0
- package/dist/experimental/team/team-playbook.js.map +1 -0
- package/dist/experimental/team/team-router.d.ts +98 -0
- package/dist/experimental/team/team-router.d.ts.map +1 -0
- package/dist/experimental/team/team-router.js +312 -0
- package/dist/experimental/team/team-router.js.map +1 -0
- package/dist/experimental/team/team-skill-library.d.ts +180 -0
- package/dist/experimental/team/team-skill-library.d.ts.map +1 -0
- package/dist/experimental/team/team-skill-library.js +385 -0
- package/dist/experimental/team/team-skill-library.js.map +1 -0
- package/dist/experimental/team/team-trajectory-analysis.d.ts +19 -0
- package/dist/experimental/team/team-trajectory-analysis.d.ts.map +1 -0
- package/dist/experimental/team/team-trajectory-analysis.js +442 -0
- package/dist/experimental/team/team-trajectory-analysis.js.map +1 -0
- package/dist/experimental/team/team-trajectory.d.ts +305 -0
- package/dist/experimental/team/team-trajectory.d.ts.map +1 -0
- package/dist/experimental/team/team-trajectory.js +315 -0
- package/dist/experimental/team/team-trajectory.js.map +1 -0
- package/dist/factory.d.ts +2 -3
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +12 -11
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +9 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -32
- package/dist/index.js.map +1 -1
- package/dist/learning/analyzer.d.ts +26 -36
- package/dist/learning/analyzer.d.ts.map +1 -1
- package/dist/learning/analyzer.js +50 -11
- package/dist/learning/analyzer.js.map +1 -1
- package/dist/learning/compound-bootstrap/external-acquisition.d.ts +63 -0
- package/dist/learning/compound-bootstrap/external-acquisition.d.ts.map +1 -0
- package/dist/learning/compound-bootstrap/external-acquisition.js +255 -0
- package/dist/learning/compound-bootstrap/external-acquisition.js.map +1 -0
- package/dist/learning/compound-bootstrap/index.d.ts +3 -0
- package/dist/learning/compound-bootstrap/index.d.ts.map +1 -0
- package/dist/learning/compound-bootstrap/index.js +3 -0
- package/dist/learning/compound-bootstrap/index.js.map +1 -0
- package/dist/learning/compound-bootstrap/workspace-analyzer.d.ts +33 -0
- package/dist/learning/compound-bootstrap/workspace-analyzer.d.ts.map +1 -0
- package/dist/learning/compound-bootstrap/workspace-analyzer.js +379 -0
- package/dist/learning/compound-bootstrap/workspace-analyzer.js.map +1 -0
- package/dist/learning/consolidation-coordinator.d.ts +49 -0
- package/dist/learning/consolidation-coordinator.d.ts.map +1 -0
- package/dist/learning/consolidation-coordinator.js +75 -0
- package/dist/learning/consolidation-coordinator.js.map +1 -0
- package/dist/learning/convention-distiller.d.ts +84 -0
- package/dist/learning/convention-distiller.d.ts.map +1 -0
- package/dist/learning/convention-distiller.js +268 -0
- package/dist/learning/convention-distiller.js.map +1 -0
- package/dist/learning/distiller.d.ts +82 -0
- package/dist/learning/distiller.d.ts.map +1 -0
- package/dist/learning/distiller.js +353 -0
- package/dist/learning/distiller.js.map +1 -0
- package/dist/learning/effectiveness.d.ts +12 -2
- package/dist/learning/effectiveness.d.ts.map +1 -1
- package/dist/learning/effectiveness.js +18 -14
- package/dist/learning/effectiveness.js.map +1 -1
- package/dist/learning/escalation.d.ts +89 -0
- package/dist/learning/escalation.d.ts.map +1 -0
- package/dist/learning/escalation.js +168 -0
- package/dist/learning/escalation.js.map +1 -0
- package/dist/learning/external-exposure.d.ts +57 -0
- package/dist/learning/external-exposure.d.ts.map +1 -0
- package/dist/learning/external-exposure.js +95 -0
- package/dist/learning/external-exposure.js.map +1 -0
- package/dist/learning/gepa-proposer.d.ts +116 -0
- package/dist/learning/gepa-proposer.d.ts.map +1 -0
- package/dist/learning/gepa-proposer.js +258 -0
- package/dist/learning/gepa-proposer.js.map +1 -0
- package/dist/learning/index.d.ts +21 -8
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +28 -10
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/instant-loop.d.ts +46 -16
- package/dist/learning/instant-loop.d.ts.map +1 -1
- package/dist/learning/instant-loop.js +114 -111
- package/dist/learning/instant-loop.js.map +1 -1
- package/dist/learning/knowledge-extractor.d.ts.map +1 -1
- package/dist/learning/knowledge-extractor.js +1 -2
- package/dist/learning/knowledge-extractor.js.map +1 -1
- package/dist/learning/llm-extractor.d.ts +88 -0
- package/dist/learning/llm-extractor.d.ts.map +1 -0
- package/dist/learning/llm-extractor.js +372 -0
- package/dist/learning/llm-extractor.js.map +1 -0
- package/dist/learning/loop-coordinator.d.ts +61 -0
- package/dist/learning/loop-coordinator.d.ts.map +1 -0
- package/dist/learning/loop-coordinator.js +96 -0
- package/dist/learning/loop-coordinator.js.map +1 -0
- package/dist/learning/maintenance-scheduler.d.ts +15 -4
- package/dist/learning/maintenance-scheduler.d.ts.map +1 -1
- package/dist/learning/maintenance-scheduler.js +19 -16
- package/dist/learning/maintenance-scheduler.js.map +1 -1
- package/dist/learning/mechanism-trace.d.ts +196 -0
- package/dist/learning/mechanism-trace.d.ts.map +1 -0
- package/dist/learning/mechanism-trace.js +81 -0
- package/dist/learning/mechanism-trace.js.map +1 -0
- package/dist/learning/merge-proposer.d.ts +102 -0
- package/dist/learning/merge-proposer.d.ts.map +1 -0
- package/dist/learning/merge-proposer.js +253 -0
- package/dist/learning/merge-proposer.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +9 -7
- package/dist/learning/meta-learner.d.ts.map +1 -1
- package/dist/learning/meta-learner.js +16 -45
- package/dist/learning/meta-learner.js.map +1 -1
- package/dist/learning/mutation-gate.d.ts +218 -0
- package/dist/learning/mutation-gate.d.ts.map +1 -0
- package/dist/learning/mutation-gate.js +390 -0
- package/dist/learning/mutation-gate.js.map +1 -0
- package/dist/learning/oracle-signal.d.ts +67 -0
- package/dist/learning/oracle-signal.d.ts.map +1 -0
- package/dist/learning/oracle-signal.js +94 -0
- package/dist/learning/oracle-signal.js.map +1 -0
- package/dist/learning/pipeline.d.ts +116 -0
- package/dist/learning/pipeline.d.ts.map +1 -0
- package/dist/learning/pipeline.js +288 -0
- package/dist/learning/pipeline.js.map +1 -0
- package/dist/learning/playbook-extractor.d.ts +8 -0
- package/dist/learning/playbook-extractor.d.ts.map +1 -1
- package/dist/learning/playbook-extractor.js +119 -34
- package/dist/learning/playbook-extractor.js.map +1 -1
- package/dist/learning/playbook-optimizer.d.ts +37 -0
- package/dist/learning/playbook-optimizer.d.ts.map +1 -0
- package/dist/learning/playbook-optimizer.js +125 -0
- package/dist/learning/playbook-optimizer.js.map +1 -0
- package/dist/learning/reflective-proposer.d.ts +173 -0
- package/dist/learning/reflective-proposer.d.ts.map +1 -0
- package/dist/learning/reflective-proposer.js +354 -0
- package/dist/learning/reflective-proposer.js.map +1 -0
- package/dist/learning/reflexion-generator.d.ts.map +1 -1
- package/dist/learning/reflexion-generator.js +4 -3
- package/dist/learning/reflexion-generator.js.map +1 -1
- package/dist/learning/replay-executor.d.ts +64 -0
- package/dist/learning/replay-executor.d.ts.map +1 -0
- package/dist/learning/replay-executor.js +92 -0
- package/dist/learning/replay-executor.js.map +1 -0
- package/dist/learning/replay-types.d.ts +150 -0
- package/dist/learning/replay-types.d.ts.map +1 -0
- package/dist/learning/replay-types.js +207 -0
- package/dist/learning/replay-types.js.map +1 -0
- package/dist/learning/replay.d.ts +166 -0
- package/dist/learning/replay.d.ts.map +1 -0
- package/dist/learning/replay.js +228 -0
- package/dist/learning/replay.js.map +1 -0
- package/dist/learning/seed-report.d.ts +88 -0
- package/dist/learning/seed-report.d.ts.map +1 -0
- package/dist/learning/seed-report.js +120 -0
- package/dist/learning/seed-report.js.map +1 -0
- package/dist/learning/trajectory-sources/dataclaw.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/dataclaw.js +6 -18
- package/dist/learning/trajectory-sources/dataclaw.js.map +1 -1
- package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/entire.js +30 -9
- package/dist/learning/trajectory-sources/entire.js.map +1 -1
- package/dist/learning/trajectory-sources/file.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/file.js.map +1 -1
- package/dist/learning/trajectory-sources/huggingface.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/huggingface.js +7 -7
- package/dist/learning/trajectory-sources/huggingface.js.map +1 -1
- package/dist/learning/trajectory-sources/in-memory.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/in-memory.js.map +1 -1
- package/dist/learning/trajectory-sources/index.d.ts +3 -4
- package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/index.js +3 -4
- package/dist/learning/trajectory-sources/index.js.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.d.ts +4 -3
- package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.js +4 -3
- package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +486 -61
- package/dist/learning/unified-pipeline.d.ts.map +1 -1
- package/dist/learning/unified-pipeline.js +1501 -232
- package/dist/learning/unified-pipeline.js.map +1 -1
- package/dist/learning/usage-inference.d.ts.map +1 -1
- package/dist/learning/usage-inference.js +4 -9
- package/dist/learning/usage-inference.js.map +1 -1
- package/dist/learning/workspace-snapshot.d.ts +146 -0
- package/dist/learning/workspace-snapshot.d.ts.map +1 -0
- package/dist/learning/workspace-snapshot.js +269 -0
- package/dist/learning/workspace-snapshot.js.map +1 -0
- package/dist/mcp/playbook-server.d.ts +61 -2
- package/dist/mcp/playbook-server.d.ts.map +1 -1
- package/dist/mcp/playbook-server.js +179 -9
- package/dist/mcp/playbook-server.js.map +1 -1
- package/dist/memory/coherence.d.ts.map +1 -1
- package/dist/memory/coherence.js +5 -7
- package/dist/memory/coherence.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +24 -0
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +22 -5
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/evolution/llm-evolver.d.ts +36 -0
- package/dist/memory/evolution/llm-evolver.d.ts.map +1 -0
- package/dist/memory/evolution/llm-evolver.js +106 -0
- package/dist/memory/evolution/llm-evolver.js.map +1 -0
- package/dist/memory/experience.d.ts +34 -13
- package/dist/memory/experience.d.ts.map +1 -1
- package/dist/memory/experience.js +59 -48
- package/dist/memory/experience.js.map +1 -1
- package/dist/memory/extraction/conversation-extractor.d.ts +62 -0
- package/dist/memory/extraction/conversation-extractor.d.ts.map +1 -0
- package/dist/memory/extraction/conversation-extractor.js +169 -0
- package/dist/memory/extraction/conversation-extractor.js.map +1 -0
- package/dist/memory/filesystem-cascade.d.ts +116 -0
- package/dist/memory/filesystem-cascade.d.ts.map +1 -0
- package/dist/memory/filesystem-cascade.js +221 -0
- package/dist/memory/filesystem-cascade.js.map +1 -0
- package/dist/memory/index.d.ts +14 -10
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +15 -12
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/knowledge-bank.d.ts +145 -29
- package/dist/memory/knowledge-bank.d.ts.map +1 -1
- package/dist/memory/knowledge-bank.js +511 -200
- package/dist/memory/knowledge-bank.js.map +1 -1
- package/dist/memory/knowledge-defrag.d.ts +32 -9
- package/dist/memory/knowledge-defrag.d.ts.map +1 -1
- package/dist/memory/knowledge-defrag.js +57 -49
- package/dist/memory/knowledge-defrag.js.map +1 -1
- package/dist/memory/meta-playbook-bank.d.ts +24 -0
- package/dist/memory/meta-playbook-bank.d.ts.map +1 -0
- package/dist/memory/meta-playbook-bank.js +135 -0
- package/dist/memory/meta-playbook-bank.js.map +1 -0
- package/dist/memory/meta.d.ts.map +1 -1
- package/dist/memory/meta.js +33 -14
- package/dist/memory/meta.js.map +1 -1
- package/dist/memory/playbook-applicability.d.ts +43 -0
- package/dist/memory/playbook-applicability.d.ts.map +1 -0
- package/dist/memory/playbook-applicability.js +155 -0
- package/dist/memory/playbook-applicability.js.map +1 -0
- package/dist/memory/playbook-incorporation.d.ts +24 -0
- package/dist/memory/playbook-incorporation.d.ts.map +1 -0
- package/dist/memory/playbook-incorporation.js +41 -0
- package/dist/memory/playbook-incorporation.js.map +1 -0
- package/dist/memory/playbook.d.ts +444 -7
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +1231 -50
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/procedural-skill.d.ts +142 -0
- package/dist/memory/procedural-skill.d.ts.map +1 -0
- package/dist/memory/procedural-skill.js +846 -0
- package/dist/memory/procedural-skill.js.map +1 -0
- package/dist/memory/search-provider.d.ts +8 -3
- package/dist/memory/search-provider.d.ts.map +1 -1
- package/dist/memory/search-providers/embedding.d.ts +64 -0
- package/dist/memory/search-providers/embedding.d.ts.map +1 -0
- package/dist/memory/search-providers/embedding.js +96 -0
- package/dist/memory/search-providers/embedding.js.map +1 -0
- package/dist/memory/search-providers/hybrid.d.ts +74 -0
- package/dist/memory/search-providers/hybrid.d.ts.map +1 -0
- package/dist/memory/search-providers/hybrid.js +94 -0
- package/dist/memory/search-providers/hybrid.js.map +1 -0
- package/dist/memory/search-providers/index.d.ts +3 -0
- package/dist/memory/search-providers/index.d.ts.map +1 -1
- package/dist/memory/search-providers/index.js +3 -0
- package/dist/memory/search-providers/index.js.map +1 -1
- package/dist/memory/search-providers/keyword-expanding.d.ts +22 -0
- package/dist/memory/search-providers/keyword-expanding.d.ts.map +1 -0
- package/dist/memory/search-providers/keyword-expanding.js +35 -0
- package/dist/memory/search-providers/keyword-expanding.js.map +1 -0
- package/dist/memory/search-providers/minimem.d.ts +16 -4
- package/dist/memory/search-providers/minimem.d.ts.map +1 -1
- package/dist/memory/search-providers/minimem.js +14 -3
- package/dist/memory/search-providers/minimem.js.map +1 -1
- package/dist/memory/search-providers/text-similarity.d.ts +2 -4
- package/dist/memory/search-providers/text-similarity.d.ts.map +1 -1
- package/dist/memory/search-providers/text-similarity.js.map +1 -1
- package/dist/memory/seeds/meta-playbook-seeds.d.ts +27 -0
- package/dist/memory/seeds/meta-playbook-seeds.d.ts.map +1 -0
- package/dist/memory/seeds/meta-playbook-seeds.js +560 -0
- package/dist/memory/seeds/meta-playbook-seeds.js.map +1 -0
- package/dist/memory/seeds/meta-strategy-seeds.d.ts +23 -0
- package/dist/memory/seeds/meta-strategy-seeds.d.ts.map +1 -0
- package/dist/memory/seeds/meta-strategy-seeds.js +82 -0
- package/dist/memory/seeds/meta-strategy-seeds.js.map +1 -0
- package/dist/memory/seeds/seed-loader.d.ts +34 -0
- package/dist/memory/seeds/seed-loader.d.ts.map +1 -0
- package/dist/memory/seeds/seed-loader.js +60 -0
- package/dist/memory/seeds/seed-loader.js.map +1 -0
- package/dist/memory/skill-exporter.d.ts.map +1 -1
- package/dist/memory/skill-exporter.js +1 -2
- package/dist/memory/skill-exporter.js.map +1 -1
- package/dist/memory/source-resolver.d.ts.map +1 -1
- package/dist/memory/source-resolver.js +7 -8
- package/dist/memory/source-resolver.js.map +1 -1
- package/dist/memory/system.d.ts +119 -14
- package/dist/memory/system.d.ts.map +1 -1
- package/dist/memory/system.js +416 -60
- package/dist/memory/system.js.map +1 -1
- package/dist/memory/temporal-compressor.d.ts +1 -1
- package/dist/memory/temporal-compressor.d.ts.map +1 -1
- package/dist/memory/temporal-compressor.js +26 -16
- package/dist/memory/temporal-compressor.js.map +1 -1
- package/dist/persistence/index.d.ts +2 -2
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +1 -1
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/migrator.d.ts +34 -1
- package/dist/persistence/migrator.d.ts.map +1 -1
- package/dist/persistence/migrator.js +163 -33
- package/dist/persistence/migrator.js.map +1 -1
- package/dist/persistence/sqlite-persistence.d.ts +412 -1
- package/dist/persistence/sqlite-persistence.d.ts.map +1 -1
- package/dist/persistence/sqlite-persistence.js +1038 -47
- package/dist/persistence/sqlite-persistence.js.map +1 -1
- package/dist/runtime/backends/acp-protocol.d.ts.map +1 -1
- package/dist/runtime/backends/acp-protocol.js +2 -1
- package/dist/runtime/backends/acp-protocol.js.map +1 -1
- package/dist/runtime/backends/acp.d.ts.map +1 -1
- package/dist/runtime/backends/acp.js +5 -4
- package/dist/runtime/backends/acp.js.map +1 -1
- package/dist/runtime/backends/index.d.ts +2 -2
- package/dist/runtime/backends/index.d.ts.map +1 -1
- package/dist/runtime/backends/index.js +2 -2
- package/dist/runtime/backends/index.js.map +1 -1
- package/dist/runtime/backends/macro-agent.d.ts +17 -1
- package/dist/runtime/backends/macro-agent.d.ts.map +1 -1
- package/dist/runtime/backends/macro-agent.js +1 -1
- package/dist/runtime/backends/macro-agent.js.map +1 -1
- package/dist/runtime/backends/mock.d.ts.map +1 -1
- package/dist/runtime/backends/mock.js.map +1 -1
- package/dist/runtime/backends/subprocess.d.ts.map +1 -1
- package/dist/runtime/backends/subprocess.js +5 -4
- package/dist/runtime/backends/subprocess.js.map +1 -1
- package/dist/runtime/compute-provider.d.ts +2 -18
- package/dist/runtime/compute-provider.d.ts.map +1 -1
- package/dist/runtime/compute-provider.js +8 -8
- package/dist/runtime/compute-provider.js.map +1 -1
- package/dist/runtime/flows/learning.d.ts +2 -1
- package/dist/runtime/flows/learning.d.ts.map +1 -1
- package/dist/runtime/flows/learning.js +4 -5
- package/dist/runtime/flows/learning.js.map +1 -1
- package/dist/runtime/flows/validation.d.ts.map +1 -1
- package/dist/runtime/flows/validation.js +2 -5
- package/dist/runtime/flows/validation.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/manager.d.ts +128 -0
- package/dist/runtime/manager.d.ts.map +1 -1
- package/dist/runtime/manager.js +375 -64
- package/dist/runtime/manager.js.map +1 -1
- package/dist/runtime/types.d.ts +92 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/search/evaluator.d.ts +71 -0
- package/dist/search/evaluator.d.ts.map +1 -1
- package/dist/search/evaluator.js +40 -5
- package/dist/search/evaluator.js.map +1 -1
- package/dist/search/index.d.ts +3 -5
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +4 -7
- package/dist/search/index.js.map +1 -1
- package/dist/search/moe-gate.d.ts +48 -2
- package/dist/search/moe-gate.d.ts.map +1 -1
- package/dist/search/moe-gate.js +117 -4
- package/dist/search/moe-gate.js.map +1 -1
- package/dist/search/refinement-loop.d.ts +63 -3
- package/dist/search/refinement-loop.d.ts.map +1 -1
- package/dist/search/refinement-loop.js +278 -23
- package/dist/search/refinement-loop.js.map +1 -1
- package/dist/search/refinement-types.d.ts +4 -2
- package/dist/search/refinement-types.d.ts.map +1 -1
- package/dist/search/refinement-types.js +2 -11
- package/dist/search/refinement-types.js.map +1 -1
- package/dist/search/router.d.ts +41 -34
- package/dist/search/router.d.ts.map +1 -1
- package/dist/search/router.js +156 -90
- package/dist/search/router.js.map +1 -1
- package/dist/search/solver.js +1 -1
- package/dist/search/solver.js.map +1 -1
- package/dist/search/task-difficulty.d.ts +54 -0
- package/dist/search/task-difficulty.d.ts.map +1 -0
- package/dist/search/task-difficulty.js +116 -0
- package/dist/search/task-difficulty.js.map +1 -0
- package/dist/search/tau-bench-verifier.d.ts +74 -0
- package/dist/search/tau-bench-verifier.d.ts.map +1 -0
- package/dist/search/tau-bench-verifier.js +96 -0
- package/dist/search/tau-bench-verifier.js.map +1 -0
- package/dist/search/verification-runner.d.ts.map +1 -1
- package/dist/search/verification-runner.js +6 -5
- package/dist/search/verification-runner.js.map +1 -1
- package/dist/session-bank/git-reader.d.ts.map +1 -1
- package/dist/session-bank/git-reader.js +5 -19
- package/dist/session-bank/git-reader.js.map +1 -1
- package/dist/session-bank/parser.d.ts.map +1 -1
- package/dist/session-bank/parser.js +26 -0
- package/dist/session-bank/parser.js.map +1 -1
- package/dist/session-bank/session-bank.d.ts.map +1 -1
- package/dist/session-bank/session-bank.js +2 -5
- package/dist/session-bank/session-bank.js.map +1 -1
- package/dist/session-bank/types.d.ts +24 -0
- package/dist/session-bank/types.d.ts.map +1 -1
- package/dist/surfacing/index.d.ts +3 -3
- package/dist/surfacing/index.d.ts.map +1 -1
- package/dist/surfacing/index.js +2 -2
- package/dist/surfacing/index.js.map +1 -1
- package/dist/surfacing/shared-bank.d.ts +43 -0
- package/dist/surfacing/shared-bank.d.ts.map +1 -0
- package/dist/surfacing/shared-bank.js +104 -0
- package/dist/surfacing/shared-bank.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +98 -2
- package/dist/surfacing/skill-library.d.ts.map +1 -1
- package/dist/surfacing/skill-library.js +192 -17
- package/dist/surfacing/skill-library.js.map +1 -1
- package/dist/surfacing/skill-publisher.d.ts +6 -4
- package/dist/surfacing/skill-publisher.d.ts.map +1 -1
- package/dist/surfacing/skill-publisher.js +32 -30
- package/dist/surfacing/skill-publisher.js.map +1 -1
- package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
- package/dist/surfacing/sqlite-storage-adapter.js +12 -8
- package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
- package/dist/types/analysis.d.ts +43 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +10 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +2178 -425
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +600 -88
- package/dist/types/config.js.map +1 -1
- package/dist/types/dataclaw.d.ts +3 -3
- package/dist/types/index.d.ts +4 -7
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -10
- package/dist/types/index.js.map +1 -1
- package/dist/types/knowledge-graph.d.ts +1 -1
- package/dist/types/knowledge-graph.d.ts.map +1 -1
- package/dist/types/knowledge.d.ts +219 -11
- package/dist/types/knowledge.d.ts.map +1 -1
- package/dist/types/knowledge.js +90 -30
- package/dist/types/knowledge.js.map +1 -1
- package/dist/types/memory.d.ts +8 -0
- package/dist/types/memory.d.ts.map +1 -1
- package/dist/types/memory.js +12 -4
- package/dist/types/memory.js.map +1 -1
- package/dist/types/outcome.d.ts +11 -0
- package/dist/types/outcome.d.ts.map +1 -1
- package/dist/types/outcome.js +9 -0
- package/dist/types/outcome.js.map +1 -1
- package/dist/types/playbook.d.ts +63 -0
- package/dist/types/playbook.d.ts.map +1 -1
- package/dist/types/playbook.js +51 -0
- package/dist/types/playbook.js.map +1 -1
- package/dist/types/trajectory-source.d.ts +1 -1
- package/dist/types/trajectory-source.d.ts.map +1 -1
- package/dist/types/trajectory.d.ts +61 -0
- package/dist/types/trajectory.d.ts.map +1 -1
- package/dist/types/trajectory.js +25 -0
- package/dist/types/trajectory.js.map +1 -1
- package/dist/utils/clock.d.ts +36 -0
- package/dist/utils/clock.d.ts.map +1 -0
- package/dist/utils/clock.js +48 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +10 -2
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +31 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +50 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/objectives.d.ts +45 -0
- package/dist/utils/objectives.d.ts.map +1 -0
- package/dist/utils/objectives.js +74 -0
- package/dist/utils/objectives.js.map +1 -0
- package/dist/utils/partitioned-store.d.ts.map +1 -1
- package/dist/utils/partitioned-store.js.map +1 -1
- package/dist/utils/playbook-hash.d.ts +19 -0
- package/dist/utils/playbook-hash.d.ts.map +1 -0
- package/dist/utils/playbook-hash.js +51 -0
- package/dist/utils/playbook-hash.js.map +1 -0
- package/dist/utils/similarity.d.ts.map +1 -1
- package/dist/utils/similarity.js.map +1 -1
- package/dist/utils/solver-canonicalizer.d.ts +22 -0
- package/dist/utils/solver-canonicalizer.d.ts.map +1 -0
- package/dist/utils/solver-canonicalizer.js +41 -0
- package/dist/utils/solver-canonicalizer.js.map +1 -0
- package/dist/utils/storage.d.ts.map +1 -1
- package/dist/utils/storage.js +1 -3
- package/dist/utils/storage.js.map +1 -1
- package/dist/utils/task-signature.d.ts +34 -0
- package/dist/utils/task-signature.d.ts.map +1 -0
- package/dist/utils/task-signature.js +112 -0
- package/dist/utils/task-signature.js.map +1 -0
- package/dist/utils/trajectory-helpers.d.ts.map +1 -1
- package/dist/utils/trajectory-helpers.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js.map +1 -1
- package/dist/workspace/efficacy-toolkit.d.ts.map +1 -1
- package/dist/workspace/efficacy-toolkit.js +18 -26
- package/dist/workspace/efficacy-toolkit.js.map +1 -1
- package/dist/workspace/index.d.ts +4 -3
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +5 -3
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/runner.d.ts.map +1 -1
- package/dist/workspace/runner.js +95 -21
- package/dist/workspace/runner.js.map +1 -1
- package/dist/workspace/skill-converter.d.ts +66 -1
- package/dist/workspace/skill-converter.d.ts.map +1 -1
- package/dist/workspace/skill-converter.js +238 -19
- package/dist/workspace/skill-converter.js.map +1 -1
- package/dist/workspace/skill-import.d.ts +43 -0
- package/dist/workspace/skill-import.d.ts.map +1 -0
- package/dist/workspace/skill-import.js +40 -0
- package/dist/workspace/skill-import.js.map +1 -0
- package/dist/workspace/templates/index.d.ts +6 -8
- package/dist/workspace/templates/index.d.ts.map +1 -1
- package/dist/workspace/templates/index.js +7 -11
- package/dist/workspace/templates/index.js.map +1 -1
- package/dist/workspace/templates/knowledge-defrag.d.ts.map +1 -1
- package/dist/workspace/templates/knowledge-defrag.js +0 -2
- package/dist/workspace/templates/knowledge-defrag.js.map +1 -1
- package/dist/workspace/templates/knowledge-extraction.d.ts +11 -0
- package/dist/workspace/templates/knowledge-extraction.d.ts.map +1 -1
- package/dist/workspace/templates/knowledge-extraction.js +11 -6
- package/dist/workspace/templates/knowledge-extraction.js.map +1 -1
- package/dist/workspace/templates/playbook-conditioning.d.ts +38 -0
- package/dist/workspace/templates/playbook-conditioning.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-conditioning.js +147 -0
- package/dist/workspace/templates/playbook-conditioning.js.map +1 -0
- package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -1
- package/dist/workspace/templates/playbook-decay-detection.js +24 -18
- package/dist/workspace/templates/playbook-decay-detection.js.map +1 -1
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -1
- package/dist/workspace/templates/playbook-efficacy-audit.js +26 -11
- package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -1
- package/dist/workspace/templates/playbook-extraction.d.ts.map +1 -1
- package/dist/workspace/templates/playbook-extraction.js +75 -15
- package/dist/workspace/templates/playbook-extraction.js.map +1 -1
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -1
- package/dist/workspace/templates/playbook-lifecycle-review.js +12 -8
- package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -1
- package/dist/workspace/templates/refinement-analysis.d.ts.map +1 -1
- package/dist/workspace/templates/refinement-analysis.js +11 -5
- package/dist/workspace/templates/refinement-analysis.js.map +1 -1
- package/dist/workspace/templates/skill-enrichment.d.ts.map +1 -1
- package/dist/workspace/templates/skill-enrichment.js +7 -11
- package/dist/workspace/templates/skill-enrichment.js.map +1 -1
- package/dist/workspace/templates/solution-evaluation.d.ts.map +1 -1
- package/dist/workspace/templates/solution-evaluation.js +15 -8
- package/dist/workspace/templates/solution-evaluation.js.map +1 -1
- package/dist/workspace/templates/trajectory-analysis.d.ts.map +1 -1
- package/dist/workspace/templates/trajectory-analysis.js +1 -3
- package/dist/workspace/templates/trajectory-analysis.js.map +1 -1
- package/dist/workspace/templates/usage-inference.d.ts.map +1 -1
- package/dist/workspace/templates/usage-inference.js +9 -7
- package/dist/workspace/templates/usage-inference.js.map +1 -1
- package/dist/workspace/types.d.ts +32 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js +29 -0
- package/dist/workspace/types.js.map +1 -1
- package/package.json +43 -19
- package/playbooks/agent-ops/long-task-checkpointing.json +54 -0
- package/playbooks/agent-ops/progressive-context-gathering.json +56 -0
- package/playbooks/agent-ops/safe-destructive-operations.json +59 -0
- package/playbooks/agent-ops/scope-discipline.json +56 -0
- package/playbooks/agent-ops/stall-detection-strategy-switch.json +55 -0
- package/playbooks/agent-ops/verification-before-completion.json +54 -0
- package/playbooks/alfworld/clean-and-place.json +35 -0
- package/playbooks/alfworld/cool-and-place.json +35 -0
- package/playbooks/alfworld/examine-in-light.json +32 -0
- package/playbooks/alfworld/heat-and-place.json +35 -0
- package/playbooks/alfworld/pick-and-place.json +37 -0
- package/playbooks/alfworld/pick-two-and-place.json +35 -0
- package/.claude/settings.json +0 -197
- package/.entire/settings.json +0 -4
- package/.sessionlog/settings.json +0 -4
- package/CLAUDE.md +0 -233
- package/SKILL.md +0 -193
- package/docs/DESIGN-agentic-workspace.md +0 -2057
- package/docs/DESIGN-semantic-memory-knowledge-bank.md +0 -1789
- package/docs/DESIGN-session-bank.md +0 -1134
- package/docs/DESIGN-team-extraction-pipeline.md +0 -1369
- package/docs/PROPOSAL-team-aware-learning.md +0 -1080
- package/docs/RESEARCH-semantic-memory-knowledge-structures.md +0 -517
- package/docs/RESEARCH-team-trajectory-learning.md +0 -553
- package/gaps.md +0 -204
- package/scripts/migrate-to-playbooks.ts +0 -307
- package/src/agents/index.ts +0 -14
- package/src/agents/mock-provider.ts +0 -93
- package/src/agents/types.ts +0 -137
- package/src/atlas.ts +0 -1198
- package/src/bin/cli-utils.ts +0 -220
- package/src/bin/cognitive-core.ts +0 -162
- package/src/bin/commands/kb.ts +0 -266
- package/src/bin/commands/learn.ts +0 -100
- package/src/bin/commands/legacy.ts +0 -182
- package/src/bin/commands/run.ts +0 -113
- package/src/bin/commands/sessions.ts +0 -221
- package/src/bin/commands/skills.ts +0 -146
- package/src/embeddings/bm25.ts +0 -337
- package/src/embeddings/index.ts +0 -42
- package/src/embeddings/inverted-index.ts +0 -134
- package/src/embeddings/manager.ts +0 -293
- package/src/embeddings/provider.ts +0 -318
- package/src/embeddings/vector-store.ts +0 -365
- package/src/factory.ts +0 -280
- package/src/index.ts +0 -495
- package/src/learning/analyzer.ts +0 -319
- package/src/learning/effectiveness.ts +0 -428
- package/src/learning/energy-evaluator.ts +0 -282
- package/src/learning/healing-orchestrator.ts +0 -383
- package/src/learning/index.ts +0 -150
- package/src/learning/instant-loop.ts +0 -357
- package/src/learning/knowledge-extractor.ts +0 -470
- package/src/learning/maintenance-scheduler.ts +0 -271
- package/src/learning/meta-learner.ts +0 -552
- package/src/learning/playbook-extractor.ts +0 -702
- package/src/learning/reflexion-generator.ts +0 -273
- package/src/learning/team-ingester.ts +0 -499
- package/src/learning/team-meta-learner.ts +0 -558
- package/src/learning/team-pipeline.ts +0 -364
- package/src/learning/trajectory-sources/dataclaw.ts +0 -403
- package/src/learning/trajectory-sources/entire.ts +0 -251
- package/src/learning/trajectory-sources/file.ts +0 -136
- package/src/learning/trajectory-sources/huggingface.ts +0 -248
- package/src/learning/trajectory-sources/in-memory.ts +0 -61
- package/src/learning/trajectory-sources/index.ts +0 -15
- package/src/learning/trajectory-sources/pipeline.ts +0 -69
- package/src/learning/unified-pipeline.ts +0 -1191
- package/src/learning/usage-inference.ts +0 -372
- package/src/mcp/index.ts +0 -12
- package/src/mcp/playbook-server.ts +0 -565
- package/src/memory/candidate-retrieval.ts +0 -72
- package/src/memory/causal-store.ts +0 -273
- package/src/memory/coherence.ts +0 -252
- package/src/memory/curated-loader.ts +0 -213
- package/src/memory/experience.ts +0 -682
- package/src/memory/graph-layers/base.ts +0 -184
- package/src/memory/graph-layers/causal.ts +0 -16
- package/src/memory/graph-layers/entity.ts +0 -16
- package/src/memory/graph-layers/index.ts +0 -5
- package/src/memory/graph-layers/semantic.ts +0 -16
- package/src/memory/graph-layers/temporal.ts +0 -16
- package/src/memory/index.ts +0 -131
- package/src/memory/knowledge-bank.ts +0 -1317
- package/src/memory/knowledge-defrag.ts +0 -329
- package/src/memory/knowledge-graph.ts +0 -361
- package/src/memory/meta.ts +0 -488
- package/src/memory/playbook.ts +0 -676
- package/src/memory/reasoning-bank.ts +0 -458
- package/src/memory/reflexion.ts +0 -122
- package/src/memory/search-provider.ts +0 -35
- package/src/memory/search-providers/index.ts +0 -3
- package/src/memory/search-providers/minimem.ts +0 -84
- package/src/memory/search-providers/text-similarity.ts +0 -35
- package/src/memory/skill-exporter.ts +0 -357
- package/src/memory/source-resolver.ts +0 -422
- package/src/memory/system.ts +0 -620
- package/src/memory/team-experience.ts +0 -604
- package/src/memory/temporal-compressor.ts +0 -409
- package/src/persistence/index.ts +0 -37
- package/src/persistence/migrator.ts +0 -298
- package/src/persistence/serializers.ts +0 -79
- package/src/persistence/sqlite-persistence.ts +0 -925
- package/src/runtime/backends/acp-protocol.ts +0 -231
- package/src/runtime/backends/acp.ts +0 -239
- package/src/runtime/backends/index.ts +0 -38
- package/src/runtime/backends/macro-agent.ts +0 -177
- package/src/runtime/backends/mock.ts +0 -218
- package/src/runtime/backends/subprocess.ts +0 -356
- package/src/runtime/compute-provider.ts +0 -206
- package/src/runtime/flows/learning.ts +0 -166
- package/src/runtime/flows/validation.ts +0 -381
- package/src/runtime/index.ts +0 -75
- package/src/runtime/manager.ts +0 -685
- package/src/runtime/types.ts +0 -198
- package/src/search/evaluator.ts +0 -499
- package/src/search/index.ts +0 -78
- package/src/search/moe-gate.ts +0 -304
- package/src/search/refinement-loop.ts +0 -457
- package/src/search/refinement-types.ts +0 -159
- package/src/search/router.ts +0 -368
- package/src/search/solver.ts +0 -303
- package/src/search/team-router.ts +0 -459
- package/src/search/verification-runner.ts +0 -570
- package/src/session-bank/git-reader.ts +0 -200
- package/src/session-bank/index.ts +0 -26
- package/src/session-bank/parser.ts +0 -548
- package/src/session-bank/session-bank.ts +0 -485
- package/src/session-bank/types.ts +0 -176
- package/src/surfacing/index.ts +0 -29
- package/src/surfacing/publisher.ts +0 -23
- package/src/surfacing/skill-library.ts +0 -625
- package/src/surfacing/skill-publisher.ts +0 -258
- package/src/surfacing/sqlite-storage-adapter.ts +0 -287
- package/src/surfacing/team-skill-library.ts +0 -610
- package/src/types/config.ts +0 -661
- package/src/types/dataclaw.ts +0 -99
- package/src/types/huggingface-transformers.d.ts +0 -12
- package/src/types/index.ts +0 -293
- package/src/types/knowledge-graph.ts +0 -246
- package/src/types/knowledge.ts +0 -388
- package/src/types/memory.ts +0 -300
- package/src/types/meta.ts +0 -218
- package/src/types/outcome.ts +0 -66
- package/src/types/playbook.ts +0 -215
- package/src/types/step.ts +0 -40
- package/src/types/task.ts +0 -52
- package/src/types/team-meta.ts +0 -212
- package/src/types/team-playbook.ts +0 -384
- package/src/types/team-trajectory.ts +0 -673
- package/src/types/trajectory-source.ts +0 -47
- package/src/types/trajectory.ts +0 -80
- package/src/utils/error-classifier.ts +0 -113
- package/src/utils/frontmatter.ts +0 -118
- package/src/utils/index.ts +0 -63
- package/src/utils/partitioned-store.ts +0 -299
- package/src/utils/similarity.ts +0 -139
- package/src/utils/storage.ts +0 -249
- package/src/utils/trajectory-helpers.ts +0 -79
- package/src/utils/validation.ts +0 -286
- package/src/workspace/efficacy-toolkit.ts +0 -496
- package/src/workspace/index.ts +0 -77
- package/src/workspace/runner.ts +0 -281
- package/src/workspace/skill-converter.ts +0 -288
- package/src/workspace/templates/index.ts +0 -95
- package/src/workspace/templates/knowledge-defrag.ts +0 -223
- package/src/workspace/templates/knowledge-extraction.ts +0 -337
- package/src/workspace/templates/meta-reflection.ts +0 -208
- package/src/workspace/templates/playbook-decay-detection.ts +0 -272
- package/src/workspace/templates/playbook-efficacy-audit.ts +0 -246
- package/src/workspace/templates/playbook-extraction.ts +0 -240
- package/src/workspace/templates/playbook-lifecycle-review.ts +0 -274
- package/src/workspace/templates/refinement-analysis.ts +0 -162
- package/src/workspace/templates/skill-enrichment.ts +0 -275
- package/src/workspace/templates/solution-evaluation.ts +0 -199
- package/src/workspace/templates/team-playbook-extraction.ts +0 -631
- package/src/workspace/templates/team-trajectory-analysis.ts +0 -564
- package/src/workspace/templates/trajectory-analysis.ts +0 -234
- package/src/workspace/templates/usage-inference.ts +0 -163
- package/src/workspace/types.ts +0 -185
- package/tests/atlas-knowledge.test.ts +0 -165
- package/tests/embeddings/bm25.test.ts +0 -130
- package/tests/embeddings/inverted-index.test.ts +0 -138
- package/tests/embeddings/manager.test.ts +0 -205
- package/tests/feature-toggles.test.ts +0 -275
- package/tests/fixtures/behavioral-trajectories.ts +0 -210
- package/tests/gap-fixes.test.ts +0 -1116
- package/tests/integration/atlas.test.ts +0 -266
- package/tests/integration/cli-e2e.test.ts +0 -621
- package/tests/integration/curated-sources-e2e.test.ts +0 -502
- package/tests/integration/dataclaw-e2e.test.ts +0 -559
- package/tests/integration/e2e.test.ts +0 -1337
- package/tests/integration/entire-e2e.test.ts +0 -376
- package/tests/integration/huggingface-e2e.test.ts +0 -627
- package/tests/integration/persistence-e2e.test.ts +0 -741
- package/tests/integration/phase-e2e.test.ts +0 -1143
- package/tests/integration/pipeline-data-correctness.test.ts +0 -794
- package/tests/integration/ranking-driven-loadout-e2e.test.ts +0 -185
- package/tests/integration/session-bank.test.ts +0 -231
- package/tests/integration/sessionlog-e2e.test.ts +0 -329
- package/tests/integration/skill-publishing-filesystem-e2e.test.ts +0 -216
- package/tests/integration/skill-tree-wiring.test.ts +0 -152
- package/tests/integration/unified-pipeline-e2e.test.ts +0 -634
- package/tests/learning/analyzer.test.ts +0 -426
- package/tests/learning/dataclaw-trajectory-source.test.ts +0 -642
- package/tests/learning/effectiveness.test.ts +0 -542
- package/tests/learning/energy-evaluator.test.ts +0 -180
- package/tests/learning/entire-trajectory-source.test.ts +0 -380
- package/tests/learning/healing-orchestrator.test.ts +0 -269
- package/tests/learning/huggingface-trajectory-source.test.ts +0 -817
- package/tests/learning/instant-loop.test.ts +0 -243
- package/tests/learning/knowledge-extractor.test.ts +0 -491
- package/tests/learning/maintenance-scheduler.test.ts +0 -191
- package/tests/learning/meta-learner.test.ts +0 -418
- package/tests/learning/pipeline-memory-updates.test.ts +0 -721
- package/tests/learning/playbook-extractor-provenance.test.ts +0 -114
- package/tests/learning/reflexion-generator.test.ts +0 -411
- package/tests/learning/team-ingester.test.ts +0 -349
- package/tests/learning/team-meta-learner.test.ts +0 -618
- package/tests/learning/team-pipeline.test.ts +0 -334
- package/tests/learning/trajectory-sources.test.ts +0 -320
- package/tests/learning/unified-pipeline-efficacy.test.ts +0 -232
- package/tests/learning/unified-pipeline.test.ts +0 -322
- package/tests/learning/usage-inference.test.ts +0 -254
- package/tests/mcp/playbook-server.test.ts +0 -257
- package/tests/memory/candidate-retrieval.test.ts +0 -167
- package/tests/memory/causal-store.test.ts +0 -276
- package/tests/memory/coherence.test.ts +0 -232
- package/tests/memory/compound-engineering-seed.test.ts +0 -338
- package/tests/memory/curated-loader-extended.test.ts +0 -225
- package/tests/memory/experience.test.ts +0 -203
- package/tests/memory/graph-layers/semantic.test.ts +0 -219
- package/tests/memory/knowledge-bank-extraction.test.ts +0 -558
- package/tests/memory/knowledge-bank.test.ts +0 -705
- package/tests/memory/knowledge-defrag.test.ts +0 -366
- package/tests/memory/knowledge-evolution.test.ts +0 -563
- package/tests/memory/knowledge-graph.test.ts +0 -492
- package/tests/memory/knowledge-inbox.test.ts +0 -258
- package/tests/memory/knowledge-minimem.test.ts +0 -251
- package/tests/memory/meta.test.ts +0 -399
- package/tests/memory/playbook-quality-validation.test.ts +0 -430
- package/tests/memory/playbook.test.ts +0 -644
- package/tests/memory/provenance.test.ts +0 -648
- package/tests/memory/reasoning-bank.test.ts +0 -239
- package/tests/memory/reflexion.test.ts +0 -166
- package/tests/memory/skill-exporter.test.ts +0 -475
- package/tests/memory/source-resolver.test.ts +0 -700
- package/tests/memory/system.test.ts +0 -330
- package/tests/memory/team-experience.test.ts +0 -411
- package/tests/memory/temporal-compressor.test.ts +0 -318
- package/tests/persistence/migrator.test.ts +0 -1009
- package/tests/persistence/sqlite-persistence.test.ts +0 -635
- package/tests/runtime/agent-manager.test.ts +0 -517
- package/tests/runtime/compute-provider.test.ts +0 -288
- package/tests/runtime/delegate.test.ts +0 -354
- package/tests/runtime/macro-agent-backend.test.ts +0 -266
- package/tests/runtime/mock-backend.test.ts +0 -248
- package/tests/search/evaluator.test.ts +0 -257
- package/tests/search/moe-gate.test.ts +0 -250
- package/tests/search/refinement-loop.test.ts +0 -477
- package/tests/search/refinement.test.ts +0 -267
- package/tests/search/router.test.ts +0 -506
- package/tests/search/team-router.test.ts +0 -376
- package/tests/search/verification-runner.test.ts +0 -357
- package/tests/session-bank/fixtures/multi-tool-session/full.jsonl +0 -12
- package/tests/session-bank/fixtures/multi-tool-session/metadata.json +0 -28
- package/tests/session-bank/fixtures/root-metadata.json +0 -18
- package/tests/session-bank/fixtures/sessionlog-root-metadata.json +0 -16
- package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +0 -6
- package/tests/session-bank/fixtures/sessionlog-session/metadata.json +0 -55
- package/tests/session-bank/fixtures/simple-session/full.jsonl +0 -6
- package/tests/session-bank/fixtures/simple-session/metadata.json +0 -38
- package/tests/session-bank/git-reader.test.ts +0 -232
- package/tests/session-bank/parser.test.ts +0 -453
- package/tests/session-bank/session-bank.test.ts +0 -546
- package/tests/surfacing/skill-library.test.ts +0 -297
- package/tests/surfacing/skill-publisher.test.ts +0 -432
- package/tests/surfacing/sqlite-storage-adapter.test.ts +0 -197
- package/tests/surfacing/team-skill-library.test.ts +0 -444
- package/tests/types/outcome.test.ts +0 -147
- package/tests/types/step.test.ts +0 -133
- package/tests/types/task.test.ts +0 -158
- package/tests/types/team-meta.test.ts +0 -147
- package/tests/types/team-playbook.test.ts +0 -246
- package/tests/types/team-trajectory.test.ts +0 -557
- package/tests/types/trajectory.test.ts +0 -253
- package/tests/utils/error-classifier.test.ts +0 -149
- package/tests/utils/frontmatter.test.ts +0 -208
- package/tests/utils/partitioned-store.test.ts +0 -230
- package/tests/utils/similarity.test.ts +0 -188
- package/tests/utils/trajectory-helpers.test.ts +0 -163
- package/tests/utils/validation.test.ts +0 -252
- package/tests/workspace/efficacy-toolkit.test.ts +0 -404
- package/tests/workspace/full-flow.test.ts +0 -845
- package/tests/workspace/manager.test.ts +0 -215
- package/tests/workspace/runner.test.ts +0 -336
- package/tests/workspace/skill-converter.test.ts +0 -205
- package/tests/workspace/templates/knowledge-extraction.test.ts +0 -235
- package/tests/workspace/templates/playbook-efficacy.test.ts +0 -377
- package/tests/workspace/templates/team-playbook-extraction.test.ts +0 -341
- package/tests/workspace/templates/team-trajectory-analysis.test.ts +0 -417
- package/tsconfig.json +0 -25
- package/vitest.config.ts +0 -22
|
@@ -0,0 +1,1582 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Evaluation CLI — runs the eval harness and prints a report. Parses its own
|
|
3
|
+
* flags (the shared parser doesn't know eval options).
|
|
4
|
+
*
|
|
5
|
+
* Subcommands / modes:
|
|
6
|
+
* cogcore eval Sequential learning-curve eval (mock)
|
|
7
|
+
* cogcore eval ablation Per-component ablation (mock)
|
|
8
|
+
* cogcore eval --backend live --benchmark <name> Real-agent live arm
|
|
9
|
+
* cogcore eval ablation --backend live --benchmark clbench Live memory ablation
|
|
10
|
+
*
|
|
11
|
+
* Flags:
|
|
12
|
+
* --backend mock|live --benchmark <name> --model haiku
|
|
13
|
+
* --tasks N --skills 6 --seeds 1,2,3 --window 10 --max-steps 30
|
|
14
|
+
* --cold 0.35 --warm 0.9 --batch-every 0 --components a,b,c (ablation)
|
|
15
|
+
* --out report.md --json
|
|
16
|
+
*/
|
|
17
|
+
import { existsSync, rmSync, writeFileSync } from 'node:fs';
|
|
18
|
+
import { join, dirname, resolve } from 'node:path';
|
|
19
|
+
import { fileURLToPath } from 'node:url';
|
|
20
|
+
import { createSequentialEvalRunner, createAblationRunner, createLiveEvalRunner, createLiveAblationRunner, createRunCheckpoint, checkpointPathFor, workdirPathFor, loadColdArmResults, loadDifficultyRegistry, saveDifficultyRegistry, ingestRunRows, extractIngestRows, estimateFamilySuccess, ingestLiftRows, extractLiftIngestRows, estimateLift, mergeLiftRegistries, resolveRegistryStore, migrateJsonRegistryToSqlite, SqliteRegistryStore, ClaudeWorkspaceBackend, createGsm8kBenchmark, createAlfworldBenchmark, createSkillsBenchBenchmark, createSkillFlowBenchmark, createClBenchBenchmark, createSkillLearnBenchBenchmark, createLifelongAgentBenchmark, alfworldSeedDir, ABLATION_COMPONENTS, renderJson, renderMarkdown, renderAblationJson, renderAblationMarkdown, renderDiagnosticsReport, DEFAULT_EVAL_CONFIG, getCiSmokeProfile, } from '../../eval/index.js';
|
|
21
|
+
import { renderSwarmkitTraceReport } from '../../eval/swarmkit-report.js';
|
|
22
|
+
import { renderPlaybookUsageReport } from '../../eval/playbook-usage-report.js';
|
|
23
|
+
import { renderPlaybookCalibrationReport } from '../../eval/playbook-calibration-report.js';
|
|
24
|
+
import { renderPlaybookCandidateDecisionsReport } from '../../eval/playbook-candidate-decisions-report.js';
|
|
25
|
+
import { validateAblationPatch } from '../../eval/ablation-validate.js';
|
|
26
|
+
import { loadOracleManifest, findPlaceholderFiles, evaluateOracleCriteria, } from '../../eval/oracle-smoke.js';
|
|
27
|
+
import { canonicalizeSolver } from '../../utils/solver-canonicalizer.js';
|
|
28
|
+
export async function evalCommand(rawArgs) {
|
|
29
|
+
if (rawArgs[0] === 'eval') {
|
|
30
|
+
rawArgs = rawArgs.slice(1);
|
|
31
|
+
}
|
|
32
|
+
if (rawArgs.includes('--help') || rawArgs.includes('-h')) {
|
|
33
|
+
printUsage();
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
// eval report --diagnostics <traceDir> — post-run stage-funnel report
|
|
37
|
+
if (rawArgs[0] === 'report') {
|
|
38
|
+
await runReport(rawArgs.slice(1));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// eval ingest-difficulty --registry <file> <artifacts...> — backfill the
|
|
42
|
+
// difficulty registry from existing result JSONs / checkpoint files.
|
|
43
|
+
if (rawArgs[0] === 'ingest-difficulty') {
|
|
44
|
+
await runIngestDifficulty(rawArgs.slice(1));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// eval ingest-lift [--registry-db <db> | --registry <file>] <artifacts...>
|
|
48
|
+
// — backfill the lift registry (guided vs unguided per family × solver).
|
|
49
|
+
if (rawArgs[0] === 'ingest-lift') {
|
|
50
|
+
await runIngestLift(rawArgs.slice(1));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// eval lift-report — merged eval + production lift scorecard.
|
|
54
|
+
if (rawArgs[0] === 'lift-report') {
|
|
55
|
+
await runLiftReport(rawArgs.slice(1));
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// eval registry migrate --from <file.json> --to <db> — one-shot JSON → SQLite.
|
|
59
|
+
if (rawArgs[0] === 'registry' && rawArgs[1] === 'migrate') {
|
|
60
|
+
await runRegistryMigrate(rawArgs.slice(2));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const flags = parseEvalFlags(rawArgs);
|
|
64
|
+
// Oracle smoke gate: --smoke oracle [--backend mock|live]
|
|
65
|
+
if (flags['smoke'] === 'oracle') {
|
|
66
|
+
await runOracleSmoke(flags);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (flags.backend === 'live') {
|
|
70
|
+
if (rawArgs.includes('ablation')) {
|
|
71
|
+
await runLiveAblation(flags);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
await runLive(flags);
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const isAblation = rawArgs.includes('ablation');
|
|
79
|
+
const config = {};
|
|
80
|
+
if (flags.backend)
|
|
81
|
+
config.backend = flags.backend;
|
|
82
|
+
if (flags.tasks !== undefined)
|
|
83
|
+
config.taskCount = flags.tasks;
|
|
84
|
+
if (flags.skills !== undefined)
|
|
85
|
+
config.skillCount = flags.skills;
|
|
86
|
+
if (flags.seeds)
|
|
87
|
+
config.seeds = flags.seeds;
|
|
88
|
+
if (flags.window !== undefined)
|
|
89
|
+
config.rollingWindow = flags.window;
|
|
90
|
+
if (flags.cold !== undefined)
|
|
91
|
+
config.coldProb = flags.cold;
|
|
92
|
+
if (flags.warm !== undefined)
|
|
93
|
+
config.warmProb = flags.warm;
|
|
94
|
+
if (flags['batch-every'] !== undefined)
|
|
95
|
+
config.forceBatchEvery = flags['batch-every'];
|
|
96
|
+
const merged = { ...DEFAULT_EVAL_CONFIG, ...config };
|
|
97
|
+
if (isAblation)
|
|
98
|
+
await runAblation(config, merged, flags);
|
|
99
|
+
else
|
|
100
|
+
await runCurve(config, merged, flags);
|
|
101
|
+
}
|
|
102
|
+
async function runCurve(config, merged, flags) {
|
|
103
|
+
if (!flags.json) {
|
|
104
|
+
console.error(`Running sequential learning-curve eval ` +
|
|
105
|
+
`(backend=${merged.backend}, tasks=${merged.taskCount}, ` +
|
|
106
|
+
`skills=${merged.skillCount}, seeds=${merged.seeds.join(',')})...`);
|
|
107
|
+
}
|
|
108
|
+
const result = await createSequentialEvalRunner(config).run();
|
|
109
|
+
const markdown = renderMarkdown(result);
|
|
110
|
+
if (flags.out) {
|
|
111
|
+
writeFileSync(flags.out, flags.out.endsWith('.json') ? renderJson(result) : markdown);
|
|
112
|
+
console.error(`Wrote report to ${flags.out}`);
|
|
113
|
+
}
|
|
114
|
+
if (flags.json)
|
|
115
|
+
console.log(renderJson(result));
|
|
116
|
+
else
|
|
117
|
+
console.log('\n' + markdown);
|
|
118
|
+
if (result.successRateDelta <= 0)
|
|
119
|
+
process.exitCode = 2;
|
|
120
|
+
}
|
|
121
|
+
async function runAblation(config, merged, flags) {
|
|
122
|
+
if (config.forceBatchEvery === undefined) {
|
|
123
|
+
config.forceBatchEvery = Math.max(5, merged.skillCount);
|
|
124
|
+
}
|
|
125
|
+
const components = flags.components
|
|
126
|
+
? ABLATION_COMPONENTS.filter((c) => flags.components.includes(c.key))
|
|
127
|
+
: undefined;
|
|
128
|
+
if (!flags.json) {
|
|
129
|
+
console.error(`Running component ablation (tasks=${merged.taskCount}, seeds=${merged.seeds.join(',')}, ` +
|
|
130
|
+
`components=${components ? components.map((c) => c.key).join(',') : 'all'})...`);
|
|
131
|
+
}
|
|
132
|
+
const result = await createAblationRunner(config, components).run();
|
|
133
|
+
const markdown = renderAblationMarkdown(result);
|
|
134
|
+
if (flags.out) {
|
|
135
|
+
writeFileSync(flags.out, flags.out.endsWith('.json') ? renderAblationJson(result) : markdown);
|
|
136
|
+
console.error(`Wrote report to ${flags.out}`);
|
|
137
|
+
}
|
|
138
|
+
if (flags.json)
|
|
139
|
+
console.log(renderAblationJson(result));
|
|
140
|
+
else
|
|
141
|
+
console.log('\n' + markdown);
|
|
142
|
+
}
|
|
143
|
+
async function runLive(flags) {
|
|
144
|
+
const benchmarkName = flags.benchmark ?? 'gsm8k';
|
|
145
|
+
if (flags['ci-smoke']) {
|
|
146
|
+
const profile = getCiSmokeProfile(benchmarkName);
|
|
147
|
+
if (profile) {
|
|
148
|
+
flags.tasks = flags.tasks ?? profile.taskCount;
|
|
149
|
+
flags.seeds = flags.seeds ?? profile.seeds;
|
|
150
|
+
flags['timeout'] = flags['timeout'] ?? profile.timeoutMinutes * 60;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const taskCount = flags.tasks ?? 12;
|
|
154
|
+
const seeds = flags.seeds ?? [1];
|
|
155
|
+
const model = flags.model ?? 'haiku';
|
|
156
|
+
const rollingWindow = flags.window ?? Math.max(3, Math.ceil(taskCount / 3));
|
|
157
|
+
const seedPlaybookDirs = [];
|
|
158
|
+
const resolved = resolveBenchmark(benchmarkName, flags);
|
|
159
|
+
if (!resolved) {
|
|
160
|
+
process.exitCode = 1;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const { benchmark, delegateFactory } = resolved;
|
|
164
|
+
if (benchmarkName === 'alfworld' && flags['seed-playbooks']) {
|
|
165
|
+
seedPlaybookDirs.push(alfworldSeedDir());
|
|
166
|
+
}
|
|
167
|
+
if (!flags.json) {
|
|
168
|
+
console.error(`Running LIVE eval on ${benchmarkName} ` +
|
|
169
|
+
`(model=${model}, tasks=${taskCount}, seeds=${seeds.join(',')}). ` +
|
|
170
|
+
`This makes ~${taskCount * (flags['single-arm'] ? 1 : 2) * seeds.length} real agent calls — be patient.`);
|
|
171
|
+
}
|
|
172
|
+
// Incremental checkpointing: with --out, write a running partial-result file
|
|
173
|
+
// (<out>.checkpoint.json) after every completed task so an aborted run keeps
|
|
174
|
+
// its per-task results instead of losing hours of paid episodes. Removed
|
|
175
|
+
// once the final report is written.
|
|
176
|
+
// Resumability: with --out, the learning-arm Atlas persists to a stable
|
|
177
|
+
// <out>.workdir/ (next to the checkpoint) instead of temp dirs, so a run that
|
|
178
|
+
// dies can be resumed. --resume auto-loads <out>.checkpoint.json (if present)
|
|
179
|
+
// and skips every task already completed there — reopening the persisted
|
|
180
|
+
// learning dirs so accumulated memory carries forward.
|
|
181
|
+
const runWorkDir = flags.out ? workdirPathFor(flags.out) : undefined;
|
|
182
|
+
let resumeFrom;
|
|
183
|
+
if (flags['resume']) {
|
|
184
|
+
if (!flags.out) {
|
|
185
|
+
console.error('--resume requires --out (it reads <out>.checkpoint.json)');
|
|
186
|
+
process.exitCode = 1;
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const cpPath = checkpointPathFor(flags.out);
|
|
190
|
+
if (existsSync(cpPath)) {
|
|
191
|
+
resumeFrom = cpPath;
|
|
192
|
+
if (!flags.json)
|
|
193
|
+
console.error(`Resuming from checkpoint ${cpPath}`);
|
|
194
|
+
}
|
|
195
|
+
else if (!flags.json) {
|
|
196
|
+
console.error(`--resume: no checkpoint at ${cpPath} — starting a fresh run`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Load the resume checkpoint's cold rows BEFORE the fresh checkpoint's first
|
|
200
|
+
// write would overwrite the file — createRunCheckpoint defers writing until
|
|
201
|
+
// the first record(), and the runner (constructed below) loads resumeFrom in
|
|
202
|
+
// its constructor, so the read still sees the aborted run's rows.
|
|
203
|
+
const checkpoint = flags.out
|
|
204
|
+
? createRunCheckpoint(flags.out, {
|
|
205
|
+
benchmark: benchmarkName,
|
|
206
|
+
model,
|
|
207
|
+
taskCount,
|
|
208
|
+
seeds,
|
|
209
|
+
bundledSeeds: flags['bundled-seeds'] ?? false,
|
|
210
|
+
singleArm: flags['single-arm'] ?? false,
|
|
211
|
+
})
|
|
212
|
+
: undefined;
|
|
213
|
+
// Cold-arm reuse: load per-seed cold results from a prior run's result JSON
|
|
214
|
+
// or checkpoint file. Fail loudly on a bad path/artifact — silently running
|
|
215
|
+
// without the control would waste the whole run.
|
|
216
|
+
let reuseColdBySeed;
|
|
217
|
+
if (flags['reuse-cold-from']) {
|
|
218
|
+
reuseColdBySeed = loadColdArmResults(flags['reuse-cold-from']);
|
|
219
|
+
if (!flags.json) {
|
|
220
|
+
console.error(`Reusing cold-arm results from ${flags['reuse-cold-from']} ` +
|
|
221
|
+
`(seeds: ${Object.keys(reuseColdBySeed).join(',')})`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Registries: loaded up front (difficulty drives discriminative task
|
|
225
|
+
// selection when requested), updated with this run's results afterwards.
|
|
226
|
+
// --difficulty-registry <file.json> keeps its original JSON contract
|
|
227
|
+
// unchanged; --registry-db <path> is the SQLite backend and additionally
|
|
228
|
+
// receives this run's lift rows (guided vs unguided per family × solver).
|
|
229
|
+
let registryStore;
|
|
230
|
+
if (flags['registry-db']) {
|
|
231
|
+
registryStore = new SqliteRegistryStore(flags['registry-db']);
|
|
232
|
+
}
|
|
233
|
+
let difficultyRegistry;
|
|
234
|
+
if (flags['difficulty-registry']) {
|
|
235
|
+
difficultyRegistry = loadDifficultyRegistry(flags['difficulty-registry']);
|
|
236
|
+
}
|
|
237
|
+
else if (registryStore) {
|
|
238
|
+
difficultyRegistry = registryStore.loadDifficulty();
|
|
239
|
+
}
|
|
240
|
+
if (flags['task-selection'] === 'discriminative' && !difficultyRegistry) {
|
|
241
|
+
console.error('--task-selection discriminative requires --difficulty-registry <file> or --registry-db <path>');
|
|
242
|
+
process.exitCode = 1;
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const extended = benchmark;
|
|
246
|
+
try {
|
|
247
|
+
if (extended.setup)
|
|
248
|
+
await extended.setup();
|
|
249
|
+
const runner = createLiveEvalRunner({
|
|
250
|
+
benchmark,
|
|
251
|
+
taskCount,
|
|
252
|
+
seeds,
|
|
253
|
+
rollingWindow,
|
|
254
|
+
model,
|
|
255
|
+
seedPlaybookDirs,
|
|
256
|
+
onTaskBoundary: checkpoint?.record,
|
|
257
|
+
runWorkDir,
|
|
258
|
+
resumeFrom,
|
|
259
|
+
reuseColdBySeed,
|
|
260
|
+
failFast: flags['fail-fast'],
|
|
261
|
+
...(flags['task-selection'] === 'discriminative' && difficultyRegistry
|
|
262
|
+
? { taskSelection: { mode: 'discriminative', registry: difficultyRegistry } }
|
|
263
|
+
: {}),
|
|
264
|
+
...(flags['adaptive-stopping']
|
|
265
|
+
? {
|
|
266
|
+
stopping: {
|
|
267
|
+
enabled: true,
|
|
268
|
+
...(flags['stopping-threshold'] !== undefined
|
|
269
|
+
? { decisionThreshold: flags['stopping-threshold'] }
|
|
270
|
+
: {}),
|
|
271
|
+
},
|
|
272
|
+
}
|
|
273
|
+
: {}),
|
|
274
|
+
embed: flags['embeddings'],
|
|
275
|
+
embedProvider: flags['embed-provider'],
|
|
276
|
+
singleArm: flags['single-arm'],
|
|
277
|
+
interleaveArms: flags['interleave-arms'],
|
|
278
|
+
provider: flags['provider'],
|
|
279
|
+
awsRegion: flags['aws-region'],
|
|
280
|
+
timeoutMs: flags['timeout'] ? flags['timeout'] * 1000 : undefined,
|
|
281
|
+
distill: flags['distill'],
|
|
282
|
+
...(flags['train-eval-split']
|
|
283
|
+
? {
|
|
284
|
+
trainEvalSplit: {
|
|
285
|
+
enabled: true,
|
|
286
|
+
...(flags['train-ratio'] !== undefined ? { trainRatio: flags['train-ratio'] } : {}),
|
|
287
|
+
...(flags['split-seed'] !== undefined ? { splitSeed: flags['split-seed'] } : {}),
|
|
288
|
+
},
|
|
289
|
+
}
|
|
290
|
+
: {}),
|
|
291
|
+
concurrency: flags['concurrency'],
|
|
292
|
+
traceDir: flags['trace-dir'],
|
|
293
|
+
metaPlaybookDirs: flags['meta-playbook-dir'],
|
|
294
|
+
playbookRetriever: flags['playbook-retriever'],
|
|
295
|
+
minPlaybookScore: flags['min-playbook-score'],
|
|
296
|
+
playbookApplicabilityGate: flags['playbook-applicability-gate'],
|
|
297
|
+
playbookIncorporation: flags['playbook-incorporation'],
|
|
298
|
+
mutationMode: flags['mutation-mode'],
|
|
299
|
+
mutationGating: resolveMutationGating(flags),
|
|
300
|
+
liveReplayGating: flags['live-replay-gating'],
|
|
301
|
+
bundledSeeds: flags['bundled-seeds'],
|
|
302
|
+
additive: resolveAdditive(flags),
|
|
303
|
+
...liveProceduralMemoryConfig(flags),
|
|
304
|
+
learningOnlySeedDirs: flags['seed-playbook-dir'],
|
|
305
|
+
analysisBackends: createAnalysisBackends(flags, model, benchmark),
|
|
306
|
+
}, delegateFactory);
|
|
307
|
+
const result = await runner.run();
|
|
308
|
+
const markdown = renderMarkdown(result);
|
|
309
|
+
if (flags.out) {
|
|
310
|
+
writeFileSync(flags.out, flags.out.endsWith('.json') ? renderJson(result) : markdown);
|
|
311
|
+
console.error(`Wrote report to ${flags.out}`);
|
|
312
|
+
// Final report is safely on disk — the partial checkpoint and the
|
|
313
|
+
// resumable learning workdir are now redundant.
|
|
314
|
+
checkpoint?.finalize();
|
|
315
|
+
if (runWorkDir)
|
|
316
|
+
rmSync(runWorkDir, { recursive: true, force: true });
|
|
317
|
+
}
|
|
318
|
+
if (flags.json)
|
|
319
|
+
console.log(renderJson(result));
|
|
320
|
+
else
|
|
321
|
+
console.log('\n' + markdown);
|
|
322
|
+
// Fold this run's per-task outcomes into the difficulty registry so future
|
|
323
|
+
// discriminative runs sample from richer priors. Done after the report is
|
|
324
|
+
// safely written; ingestion failures must not eat a completed run.
|
|
325
|
+
if (flags['difficulty-registry'] && difficultyRegistry) {
|
|
326
|
+
try {
|
|
327
|
+
const { rows } = extractIngestRows(result);
|
|
328
|
+
ingestRunRows(difficultyRegistry, benchmarkName, rows);
|
|
329
|
+
saveDifficultyRegistry(flags['difficulty-registry'], difficultyRegistry);
|
|
330
|
+
console.error(`Ingested ${rows.length} rows into difficulty registry ${flags['difficulty-registry']}`);
|
|
331
|
+
}
|
|
332
|
+
catch (err) {
|
|
333
|
+
console.error(`difficulty registry update failed: ${err.message}`);
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// SQLite registry (--registry-db): ingest difficulty AND lift rows. The
|
|
337
|
+
// lift solver is this run's --model, canonicalized so evidence pools
|
|
338
|
+
// across aliases of the same model but never across different solvers.
|
|
339
|
+
if (registryStore) {
|
|
340
|
+
try {
|
|
341
|
+
const raw = result;
|
|
342
|
+
const { rows } = extractIngestRows(raw);
|
|
343
|
+
const difficulty = registryStore.loadDifficulty();
|
|
344
|
+
ingestRunRows(difficulty, benchmarkName, rows);
|
|
345
|
+
registryStore.saveDifficulty(difficulty);
|
|
346
|
+
const { rows: liftRows } = extractLiftIngestRows(raw);
|
|
347
|
+
const lift = registryStore.loadLift();
|
|
348
|
+
ingestLiftRows(lift, benchmarkName, canonicalizeSolver(model), liftRows);
|
|
349
|
+
registryStore.saveLift(lift);
|
|
350
|
+
console.error(`Ingested ${rows.length} difficulty rows + ${liftRows.length} lift rows into ${registryStore.description}`);
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
console.error(`registry-db update failed: ${err.message}`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
finally {
|
|
358
|
+
registryStore?.close();
|
|
359
|
+
if (extended.teardown)
|
|
360
|
+
await extended.teardown();
|
|
361
|
+
await benchmark.close?.();
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Backfill the difficulty registry from existing run artifacts:
|
|
366
|
+
* cogcore eval ingest-difficulty --registry <file> [--benchmark <name>] <artifacts...>
|
|
367
|
+
* Artifacts are result JSONs (with perSeed rows) or <out>.checkpoint.json
|
|
368
|
+
* partials — the same shapes cold-arm reuse accepts.
|
|
369
|
+
*/
|
|
370
|
+
async function runIngestDifficulty(args) {
|
|
371
|
+
let registryPath;
|
|
372
|
+
let benchmarkOverride;
|
|
373
|
+
const artifacts = [];
|
|
374
|
+
for (let i = 0; i < args.length; i++) {
|
|
375
|
+
if (args[i] === '--registry')
|
|
376
|
+
registryPath = args[++i];
|
|
377
|
+
else if (args[i] === '--benchmark')
|
|
378
|
+
benchmarkOverride = args[++i];
|
|
379
|
+
else if (!args[i].startsWith('--'))
|
|
380
|
+
artifacts.push(args[i]);
|
|
381
|
+
}
|
|
382
|
+
if (!registryPath || artifacts.length === 0) {
|
|
383
|
+
console.error('Usage: cogcore eval ingest-difficulty --registry <file> [--benchmark <name>] <artifacts...>');
|
|
384
|
+
process.exitCode = 1;
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
const registry = loadDifficultyRegistry(registryPath);
|
|
388
|
+
const { readFileSync } = await import('node:fs');
|
|
389
|
+
for (const artifact of artifacts) {
|
|
390
|
+
const raw = JSON.parse(readFileSync(artifact, 'utf8'));
|
|
391
|
+
const { benchmark, rows } = extractIngestRows(raw);
|
|
392
|
+
const target = benchmarkOverride ?? benchmark;
|
|
393
|
+
if (!target) {
|
|
394
|
+
console.error(`${artifact}: no benchmark name in artifact — pass --benchmark <name> to override`);
|
|
395
|
+
process.exitCode = 1;
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
if (rows.length === 0) {
|
|
399
|
+
console.error(`${artifact}: no ingestible task rows found, skipping`);
|
|
400
|
+
continue;
|
|
401
|
+
}
|
|
402
|
+
ingestRunRows(registry, target, rows);
|
|
403
|
+
console.error(`${artifact}: ingested ${rows.length} rows into '${target}'`);
|
|
404
|
+
}
|
|
405
|
+
saveDifficultyRegistry(registryPath, registry);
|
|
406
|
+
// Summary: per-benchmark family difficulty estimates.
|
|
407
|
+
for (const [bench, { families }] of Object.entries(registry.benchmarks)) {
|
|
408
|
+
console.log(`\n${bench}:`);
|
|
409
|
+
for (const [family, stats] of Object.entries(families).sort()) {
|
|
410
|
+
const p = estimateFamilySuccess(stats);
|
|
411
|
+
console.log(` ${family}: p̂=${p.toFixed(2)} ` +
|
|
412
|
+
`(${stats.successes}/${stats.attempts} pooled, ` +
|
|
413
|
+
`${stats.coldSuccesses}/${stats.coldAttempts} cold, ${stats.runs} runs)`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
console.error(`\nWrote ${registryPath}`);
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Backfill the lift registry from existing run artifacts:
|
|
420
|
+
* cogcore eval ingest-lift [--registry-db <db> | --registry <file.json>]
|
|
421
|
+
* [--benchmark <name>] [--solver <model>] <artifacts...>
|
|
422
|
+
* Learning-arm rows map to guided, cold-arm rows to unguided; family is the
|
|
423
|
+
* row's skillTag. The solver comes from a checkpoint's meta.model when
|
|
424
|
+
* present, else --solver (final result JSONs carry no model, so --solver is
|
|
425
|
+
* required for those). Default store: SQLite at eval-traces/registry.db.
|
|
426
|
+
*/
|
|
427
|
+
async function runIngestLift(args) {
|
|
428
|
+
let registryDb;
|
|
429
|
+
let registryJson;
|
|
430
|
+
let benchmarkOverride;
|
|
431
|
+
let solverFlag;
|
|
432
|
+
const artifacts = [];
|
|
433
|
+
for (let i = 0; i < args.length; i++) {
|
|
434
|
+
if (args[i] === '--registry-db')
|
|
435
|
+
registryDb = args[++i];
|
|
436
|
+
else if (args[i] === '--registry')
|
|
437
|
+
registryJson = args[++i];
|
|
438
|
+
else if (args[i] === '--benchmark')
|
|
439
|
+
benchmarkOverride = args[++i];
|
|
440
|
+
else if (args[i] === '--solver')
|
|
441
|
+
solverFlag = args[++i];
|
|
442
|
+
else if (!args[i].startsWith('--'))
|
|
443
|
+
artifacts.push(args[i]);
|
|
444
|
+
}
|
|
445
|
+
if (artifacts.length === 0) {
|
|
446
|
+
console.error('Usage: cogcore eval ingest-lift [--registry-db <db> | --registry <file.json>] ' +
|
|
447
|
+
'[--benchmark <name>] [--solver <model>] <artifacts...>');
|
|
448
|
+
process.exitCode = 1;
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
const store = resolveRegistryStore({ registryDb, registryJson });
|
|
452
|
+
try {
|
|
453
|
+
const lift = store.loadLift();
|
|
454
|
+
const { readFileSync } = await import('node:fs');
|
|
455
|
+
for (const artifact of artifacts) {
|
|
456
|
+
const raw = JSON.parse(readFileSync(artifact, 'utf8'));
|
|
457
|
+
const { benchmark, solver: artifactSolver, rows } = extractLiftIngestRows(raw);
|
|
458
|
+
const scope = benchmarkOverride ?? benchmark;
|
|
459
|
+
if (!scope) {
|
|
460
|
+
console.error(`${artifact}: no benchmark name in artifact — pass --benchmark <name> to override`);
|
|
461
|
+
process.exitCode = 1;
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const rawSolver = artifactSolver ?? solverFlag;
|
|
465
|
+
if (!rawSolver) {
|
|
466
|
+
console.error(`${artifact}: no solver model in artifact (final result JSONs carry none) — ` +
|
|
467
|
+
`pass --solver <model> so cells never pool across solvers`);
|
|
468
|
+
process.exitCode = 1;
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
if (rows.length === 0) {
|
|
472
|
+
console.error(`${artifact}: no ingestible task rows found, skipping`);
|
|
473
|
+
continue;
|
|
474
|
+
}
|
|
475
|
+
const solver = canonicalizeSolver(rawSolver);
|
|
476
|
+
ingestLiftRows(lift, scope, solver, rows);
|
|
477
|
+
console.error(`${artifact}: ingested ${rows.length} rows into '${scope}' (solver: ${solver})`);
|
|
478
|
+
}
|
|
479
|
+
store.saveLift(lift);
|
|
480
|
+
printLiftTable(lift);
|
|
481
|
+
console.error(`\nWrote ${store.description}`);
|
|
482
|
+
}
|
|
483
|
+
finally {
|
|
484
|
+
store.close();
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Merged lift scorecard — "where does memory help?":
|
|
489
|
+
* cogcore eval lift-report [--registry-db <db> | --registry <file.json>]
|
|
490
|
+
* [--atlas-dir <dir>] [--json]
|
|
491
|
+
* Reads the eval-side registry store (default eval-traces/registry.db) and
|
|
492
|
+
* optionally a production .atlas instance DB (its `lift_cells` table,
|
|
493
|
+
* scope 'production'), printing per-cell counts, delta, CI and decided state.
|
|
494
|
+
*/
|
|
495
|
+
async function runLiftReport(args) {
|
|
496
|
+
let registryDb;
|
|
497
|
+
let registryJson;
|
|
498
|
+
let atlasDir;
|
|
499
|
+
let json = false;
|
|
500
|
+
for (let i = 0; i < args.length; i++) {
|
|
501
|
+
if (args[i] === '--registry-db')
|
|
502
|
+
registryDb = args[++i];
|
|
503
|
+
else if (args[i] === '--registry')
|
|
504
|
+
registryJson = args[++i];
|
|
505
|
+
else if (args[i] === '--atlas-dir')
|
|
506
|
+
atlasDir = args[++i];
|
|
507
|
+
else if (args[i] === '--json')
|
|
508
|
+
json = true;
|
|
509
|
+
}
|
|
510
|
+
const store = resolveRegistryStore({ registryDb, registryJson });
|
|
511
|
+
let lift;
|
|
512
|
+
try {
|
|
513
|
+
lift = store.loadLift();
|
|
514
|
+
}
|
|
515
|
+
finally {
|
|
516
|
+
store.close();
|
|
517
|
+
}
|
|
518
|
+
if (atlasDir) {
|
|
519
|
+
const { existsSync } = await import('node:fs');
|
|
520
|
+
const dbPath = join(atlasDir, 'cognitive-core.db');
|
|
521
|
+
if (!existsSync(dbPath)) {
|
|
522
|
+
console.error(`--atlas-dir: no cognitive-core.db found at ${dbPath}`);
|
|
523
|
+
process.exitCode = 1;
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
const instance = new SqliteRegistryStore(dbPath, { readonly: true });
|
|
527
|
+
try {
|
|
528
|
+
mergeLiftRegistries(lift, instance.loadLift());
|
|
529
|
+
}
|
|
530
|
+
finally {
|
|
531
|
+
instance.close();
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
if (json) {
|
|
535
|
+
const cells = [];
|
|
536
|
+
for (const [scope, { families }] of Object.entries(lift.scopes)) {
|
|
537
|
+
for (const [family, solvers] of Object.entries(families)) {
|
|
538
|
+
for (const [solver, cell] of Object.entries(solvers)) {
|
|
539
|
+
cells.push({ scope, family, solver, ...cell, estimate: estimateLift(cell) });
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
console.log(JSON.stringify(cells, null, 2));
|
|
544
|
+
return;
|
|
545
|
+
}
|
|
546
|
+
if (Object.keys(lift.scopes).length === 0) {
|
|
547
|
+
console.log('Lift registry is empty — run evals with --registry-db or use eval ingest-lift.');
|
|
548
|
+
return;
|
|
549
|
+
}
|
|
550
|
+
printLiftTable(lift);
|
|
551
|
+
}
|
|
552
|
+
/** Per-cell lift summary shared by ingest-lift and lift-report. */
|
|
553
|
+
function printLiftTable(lift) {
|
|
554
|
+
for (const [scope, { families }] of Object.entries(lift.scopes).sort()) {
|
|
555
|
+
console.log(`\n${scope}:`);
|
|
556
|
+
for (const [family, solvers] of Object.entries(families).sort()) {
|
|
557
|
+
for (const [solver, cell] of Object.entries(solvers).sort()) {
|
|
558
|
+
const { delta, ci95, decided } = estimateLift(cell);
|
|
559
|
+
const sign = delta >= 0 ? '+' : '';
|
|
560
|
+
console.log(` ${family} × ${solver}: ` +
|
|
561
|
+
`guided ${cell.guidedSuccesses}/${cell.guidedAttempts}, ` +
|
|
562
|
+
`unguided ${cell.unguidedSuccesses}/${cell.unguidedAttempts} ` +
|
|
563
|
+
`(${cell.runs} runs) — Δ=${sign}${delta.toFixed(2)} ` +
|
|
564
|
+
`CI[${ci95[0].toFixed(2)}, ${ci95[1].toFixed(2)}] ${decided.toUpperCase()}`);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* One-shot registry migration:
|
|
571
|
+
* cogcore eval registry migrate --from <file.json> --to <db>
|
|
572
|
+
* Copies difficulty + lift cells from a JSON registry file into a SQLite
|
|
573
|
+
* registry DB. Idempotent (cells are overwritten with the same values).
|
|
574
|
+
*/
|
|
575
|
+
async function runRegistryMigrate(args) {
|
|
576
|
+
let from;
|
|
577
|
+
let to;
|
|
578
|
+
for (let i = 0; i < args.length; i++) {
|
|
579
|
+
if (args[i] === '--from')
|
|
580
|
+
from = args[++i];
|
|
581
|
+
else if (args[i] === '--to')
|
|
582
|
+
to = args[++i];
|
|
583
|
+
}
|
|
584
|
+
if (!from || !to) {
|
|
585
|
+
console.error('Usage: cogcore eval registry migrate --from <file.json> --to <db>');
|
|
586
|
+
process.exitCode = 1;
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
const { difficultyCells, liftCells } = migrateJsonRegistryToSqlite(from, to);
|
|
590
|
+
console.error(`Migrated ${difficultyCells} difficulty cell(s) + ${liftCells} lift cell(s) from ${from} to ${to}`);
|
|
591
|
+
}
|
|
592
|
+
async function runLiveAblation(flags) {
|
|
593
|
+
const benchmarkName = flags.benchmark ?? 'clbench';
|
|
594
|
+
const taskCount = flags.tasks ?? 12;
|
|
595
|
+
const seeds = flags.seeds ?? [1];
|
|
596
|
+
const model = flags.model ?? 'haiku';
|
|
597
|
+
const rollingWindow = flags.window ?? Math.max(3, Math.ceil(taskCount / 3));
|
|
598
|
+
const resolved = resolveBenchmark(benchmarkName, flags);
|
|
599
|
+
if (!resolved) {
|
|
600
|
+
process.exitCode = 1;
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
const { benchmark, delegateFactory } = resolved;
|
|
604
|
+
// Filter ABLATION_COMPONENTS by --components flag (or run all).
|
|
605
|
+
const selectedSpecs = flags.components
|
|
606
|
+
? ABLATION_COMPONENTS.filter((c) => flags.components.includes(c.key))
|
|
607
|
+
: ABLATION_COMPONENTS;
|
|
608
|
+
if (flags.components) {
|
|
609
|
+
const unknown = flags.components.filter((k) => !ABLATION_COMPONENTS.some((c) => c.key === k));
|
|
610
|
+
if (unknown.length > 0) {
|
|
611
|
+
console.error(`Unknown ablation component keys: ${unknown.join(', ')}. ` +
|
|
612
|
+
`Valid keys: ${ABLATION_COMPONENTS.map((c) => c.key).join(', ')}`);
|
|
613
|
+
process.exitCode = 1;
|
|
614
|
+
return;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
// Build AblationArm[] from the registry. Strict-validate each configPatch so
|
|
618
|
+
// unknown keys (e.g. old memory.disableExperiences) hard-error instead of
|
|
619
|
+
// being silently stripped by Zod, which would make the arm run the full system.
|
|
620
|
+
const arms = [];
|
|
621
|
+
for (const spec of selectedSpecs) {
|
|
622
|
+
const patch = spec.configPatch ?? {};
|
|
623
|
+
try {
|
|
624
|
+
validateAblationPatch(patch, `no-${spec.key}`);
|
|
625
|
+
}
|
|
626
|
+
catch (err) {
|
|
627
|
+
console.error(err.message);
|
|
628
|
+
process.exitCode = 1;
|
|
629
|
+
return;
|
|
630
|
+
}
|
|
631
|
+
arms.push({
|
|
632
|
+
label: `no-${spec.key}`,
|
|
633
|
+
configPatch: patch,
|
|
634
|
+
channels: spec.channels,
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
if (!flags.json) {
|
|
638
|
+
console.error(`Running LIVE ablation on ${benchmarkName} ` +
|
|
639
|
+
`(model=${model}, tasks=${taskCount}, components=${selectedSpecs.map((s) => s.key).join(',')}).`);
|
|
640
|
+
}
|
|
641
|
+
const extended = benchmark;
|
|
642
|
+
try {
|
|
643
|
+
if (extended.setup)
|
|
644
|
+
await extended.setup();
|
|
645
|
+
const runner = createLiveAblationRunner({
|
|
646
|
+
benchmark,
|
|
647
|
+
taskCount,
|
|
648
|
+
seeds,
|
|
649
|
+
rollingWindow,
|
|
650
|
+
model,
|
|
651
|
+
provider: flags['provider'],
|
|
652
|
+
awsRegion: flags['aws-region'],
|
|
653
|
+
timeoutMs: flags['timeout'] ? flags['timeout'] * 1000 : undefined,
|
|
654
|
+
concurrency: flags['concurrency'],
|
|
655
|
+
traceDir: flags['trace-dir'],
|
|
656
|
+
metaPlaybookDirs: flags['meta-playbook-dir'],
|
|
657
|
+
playbookRetriever: flags['playbook-retriever'],
|
|
658
|
+
minPlaybookScore: flags['min-playbook-score'],
|
|
659
|
+
playbookIncorporation: flags['playbook-incorporation'],
|
|
660
|
+
mutationMode: flags['mutation-mode'],
|
|
661
|
+
mutationGating: resolveMutationGating(flags),
|
|
662
|
+
liveReplayGating: flags['live-replay-gating'],
|
|
663
|
+
bundledSeeds: flags['bundled-seeds'],
|
|
664
|
+
additive: resolveAdditive(flags),
|
|
665
|
+
...liveProceduralMemoryConfig(flags),
|
|
666
|
+
embed: flags['embeddings'],
|
|
667
|
+
embedProvider: flags['embed-provider'],
|
|
668
|
+
distill: flags['distill'],
|
|
669
|
+
analysisBackends: createAnalysisBackends(flags, model, benchmark),
|
|
670
|
+
}, arms, delegateFactory);
|
|
671
|
+
const result = await runner.run();
|
|
672
|
+
const lines = [
|
|
673
|
+
`# Live Ablation: ${benchmarkName}`,
|
|
674
|
+
'',
|
|
675
|
+
`**Full system:** ${(result.full.learning.successRate * 100).toFixed(1)}%`,
|
|
676
|
+
'',
|
|
677
|
+
'| Component disabled | Success rate | Contribution |',
|
|
678
|
+
'|--------------------|-------------|-------------|',
|
|
679
|
+
];
|
|
680
|
+
for (const a of result.ablations) {
|
|
681
|
+
const rate = (a.result.learning.successRate * 100).toFixed(1);
|
|
682
|
+
const contrib = ((result.full.learning.successRate - a.result.learning.successRate) *
|
|
683
|
+
100).toFixed(1);
|
|
684
|
+
lines.push(`| ${a.label} | ${rate}% | ${Number(contrib) >= 0 ? '+' : ''}${contrib}pp |`);
|
|
685
|
+
}
|
|
686
|
+
const report = lines.join('\n');
|
|
687
|
+
if (flags.out) {
|
|
688
|
+
writeFileSync(flags.out, report);
|
|
689
|
+
console.error(`Wrote report to ${flags.out}`);
|
|
690
|
+
}
|
|
691
|
+
if (flags.json) {
|
|
692
|
+
console.log(JSON.stringify({ full: result.full, ablations: result.ablations }, null, 2));
|
|
693
|
+
}
|
|
694
|
+
else {
|
|
695
|
+
console.log('\n' + report);
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
finally {
|
|
699
|
+
if (extended.teardown)
|
|
700
|
+
await extended.teardown();
|
|
701
|
+
await benchmark.close?.();
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
/**
|
|
705
|
+
* Oracle smoke harness (--smoke oracle).
|
|
706
|
+
*
|
|
707
|
+
* Live path: runs two-arm ALFWorld on manifest.games with the learning arm seeded
|
|
708
|
+
* from the fixture oracle playbooks, then asserts the pre-registered criteria.
|
|
709
|
+
*
|
|
710
|
+
* Mock path (--backend mock): uses a recording delegate that captures the
|
|
711
|
+
* injected systemContext for each task. Assertion: for each task, the seeded
|
|
712
|
+
* oracle playbook's strategy text appears in the captured systemContext, proving
|
|
713
|
+
* seed → retrieve → inject plumbing works.
|
|
714
|
+
*/
|
|
715
|
+
async function runOracleSmoke(flags) {
|
|
716
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
717
|
+
const fixtureDir = join(here, '../../../eval-fixtures/oracle/alfworld');
|
|
718
|
+
// Load and validate manifest.
|
|
719
|
+
let manifest;
|
|
720
|
+
try {
|
|
721
|
+
manifest = loadOracleManifest(fixtureDir);
|
|
722
|
+
}
|
|
723
|
+
catch (err) {
|
|
724
|
+
console.error(`oracle smoke: ${err.message}`);
|
|
725
|
+
process.exitCode = 1;
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
// Refuse to run if any oracle playbook still has placeholder content.
|
|
729
|
+
const placeholders = findPlaceholderFiles(fixtureDir);
|
|
730
|
+
if (placeholders.length > 0) {
|
|
731
|
+
console.error(`oracle smoke: refusing to run — the following oracle playbooks still contain ` +
|
|
732
|
+
`__FILL_FROM_COLD_RUN__ placeholders:\n` +
|
|
733
|
+
placeholders.map((f) => ` ${f}`).join('\n') +
|
|
734
|
+
`\n\nRun a cold pass first to select the real action sequences, then fill them in.`);
|
|
735
|
+
process.exitCode = 1;
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
const backend = flags.backend ?? 'live';
|
|
739
|
+
if (backend === 'mock') {
|
|
740
|
+
// Mock CI variant: verify the seed → retrieve → inject plumbing.
|
|
741
|
+
// We use a recording delegate that captures systemContext per task and assert
|
|
742
|
+
// the oracle playbook strategy text appears in it.
|
|
743
|
+
console.error(`oracle smoke (mock): verifying seed → retrieve → inject plumbing...`);
|
|
744
|
+
const { createLiveEvalRunner: _r } = await import('../../eval/index.js');
|
|
745
|
+
const bench = createAlfworldBenchmark({
|
|
746
|
+
maxSteps: 1,
|
|
747
|
+
reinject: true,
|
|
748
|
+
gameIndices: manifest.games,
|
|
749
|
+
});
|
|
750
|
+
// Recording delegate: captures systemContext for each execute() call.
|
|
751
|
+
const captured = [];
|
|
752
|
+
let taskIdx = 0;
|
|
753
|
+
const recordingDelegateFactory = (_benchmark, _opts) => {
|
|
754
|
+
return {
|
|
755
|
+
setCurrentTask: () => {
|
|
756
|
+
taskIdx++;
|
|
757
|
+
},
|
|
758
|
+
execute: async (_prompt, options) => {
|
|
759
|
+
captured.push({ taskIdx, systemContext: options.systemContext ?? '' });
|
|
760
|
+
// Return success so learning arm records a trajectory.
|
|
761
|
+
return { success: true, output: 'mock-oracle-pass' };
|
|
762
|
+
},
|
|
763
|
+
};
|
|
764
|
+
};
|
|
765
|
+
const runner = createLiveEvalRunner({
|
|
766
|
+
benchmark: bench,
|
|
767
|
+
taskCount: manifest.games.length,
|
|
768
|
+
seeds: [1],
|
|
769
|
+
rollingWindow: manifest.games.length,
|
|
770
|
+
model: 'mock',
|
|
771
|
+
learningOnlySeedDirs: [fixtureDir],
|
|
772
|
+
singleArm: false,
|
|
773
|
+
quiet: flags.json,
|
|
774
|
+
}, recordingDelegateFactory);
|
|
775
|
+
let result;
|
|
776
|
+
try {
|
|
777
|
+
result = await runner.run();
|
|
778
|
+
}
|
|
779
|
+
catch (err) {
|
|
780
|
+
console.error(`oracle smoke (mock): runner failed: ${err.message}`);
|
|
781
|
+
process.exitCode = 1;
|
|
782
|
+
return;
|
|
783
|
+
}
|
|
784
|
+
finally {
|
|
785
|
+
await bench.close?.();
|
|
786
|
+
}
|
|
787
|
+
// Assert plumbing: every captured systemContext that has a non-empty context
|
|
788
|
+
// should contain at least one of the oracle playbook names (strategy-level signal).
|
|
789
|
+
// This proves the seeded playbooks were retrieved and injected.
|
|
790
|
+
const withContext = captured.filter((c) => c.systemContext.length > 0);
|
|
791
|
+
const hasInjection = withContext.length > 0;
|
|
792
|
+
if (!hasInjection) {
|
|
793
|
+
console.error(`oracle smoke (mock): FAIL — no systemContext was injected into any task.`);
|
|
794
|
+
console.error(` This means the seed → retrieve → inject plumbing is broken.`);
|
|
795
|
+
process.exitCode = 1;
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
console.log(`oracle smoke (mock): PASS`);
|
|
799
|
+
console.log(` Injected context in ${withContext.length}/${captured.length} tasks`);
|
|
800
|
+
console.log(` Learning success rate: ${(result.learning.successRate * 100).toFixed(0)}%`);
|
|
801
|
+
return;
|
|
802
|
+
}
|
|
803
|
+
// Live path: real ALFWorld two-arm run.
|
|
804
|
+
const model = flags.model ?? 'haiku';
|
|
805
|
+
const seeds = flags.seeds ?? [1];
|
|
806
|
+
const bench = createAlfworldBenchmark({
|
|
807
|
+
maxSteps: flags['max-steps'] ?? 30,
|
|
808
|
+
reinject: !flags['no-reinject'],
|
|
809
|
+
gameIndices: manifest.games,
|
|
810
|
+
});
|
|
811
|
+
console.error(`oracle smoke (live): running ${manifest.games.length} games × 2 arms × ${seeds.length} seed(s) ` +
|
|
812
|
+
`(games: ${manifest.games.join(',')})`);
|
|
813
|
+
const extended = bench;
|
|
814
|
+
let learningResults = [];
|
|
815
|
+
let coldResults = [];
|
|
816
|
+
try {
|
|
817
|
+
if (extended.setup)
|
|
818
|
+
await extended.setup();
|
|
819
|
+
const runner = createLiveEvalRunner({
|
|
820
|
+
benchmark: bench,
|
|
821
|
+
taskCount: manifest.games.length,
|
|
822
|
+
seeds,
|
|
823
|
+
rollingWindow: manifest.games.length,
|
|
824
|
+
model,
|
|
825
|
+
learningOnlySeedDirs: [fixtureDir],
|
|
826
|
+
provider: flags['provider'],
|
|
827
|
+
awsRegion: flags['aws-region'],
|
|
828
|
+
timeoutMs: flags['timeout'] ? flags['timeout'] * 1000 : undefined,
|
|
829
|
+
quiet: flags.json,
|
|
830
|
+
}, bench.delegateFactory);
|
|
831
|
+
const result = await runner.run();
|
|
832
|
+
learningResults = result.learning.perSeed.flat().map((r) => r.success);
|
|
833
|
+
coldResults = result.noLearning.perSeed.flat().map((r) => r.success);
|
|
834
|
+
}
|
|
835
|
+
finally {
|
|
836
|
+
if (extended.teardown)
|
|
837
|
+
await extended.teardown();
|
|
838
|
+
await bench.close?.();
|
|
839
|
+
}
|
|
840
|
+
const smokeResult = evaluateOracleCriteria(learningResults, coldResults, manifest.preRegistered);
|
|
841
|
+
for (const line of smokeResult.lines) {
|
|
842
|
+
console.log(line);
|
|
843
|
+
}
|
|
844
|
+
if (flags.out) {
|
|
845
|
+
writeFileSync(flags.out, smokeResult.lines.join('\n') + '\n');
|
|
846
|
+
console.error(`Wrote oracle smoke report to ${flags.out}`);
|
|
847
|
+
}
|
|
848
|
+
process.exitCode = smokeResult.pass ? 0 : 1;
|
|
849
|
+
}
|
|
850
|
+
function resolveBenchmark(name, flags) {
|
|
851
|
+
switch (name) {
|
|
852
|
+
case 'gsm8k':
|
|
853
|
+
return { benchmark: createGsm8kBenchmark() };
|
|
854
|
+
case 'alfworld': {
|
|
855
|
+
const curriculum = flags['curriculum'];
|
|
856
|
+
const bench = createAlfworldBenchmark({
|
|
857
|
+
maxSteps: flags['max-steps'] ?? 30,
|
|
858
|
+
reinject: !flags['no-reinject'],
|
|
859
|
+
stratified: flags['stratified'],
|
|
860
|
+
refine: flags['refine'],
|
|
861
|
+
curriculum: curriculum === 'recurrence-ladder' ? 'recurrence-ladder' : undefined,
|
|
862
|
+
gameIndices: flags['games'],
|
|
863
|
+
});
|
|
864
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
865
|
+
}
|
|
866
|
+
case 'skillsbench': {
|
|
867
|
+
const bench = createSkillsBenchBenchmark({
|
|
868
|
+
repoPath: flags['benchmark-repo'],
|
|
869
|
+
timeoutMs: flags['timeout'] ? flags['timeout'] * 1000 : undefined,
|
|
870
|
+
});
|
|
871
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
872
|
+
}
|
|
873
|
+
case 'skillflow': {
|
|
874
|
+
const bench = createSkillFlowBenchmark({
|
|
875
|
+
maxSteps: flags['max-steps'] ?? 25,
|
|
876
|
+
reinject: !flags['no-reinject'],
|
|
877
|
+
historyWindow: flags['history-window'],
|
|
878
|
+
families: flags['families'],
|
|
879
|
+
runtime: flags['skillflow-runtime'],
|
|
880
|
+
embeddedWorkbookBundle: flags['skillflow-embedded-workbook-bundle'],
|
|
881
|
+
});
|
|
882
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
883
|
+
}
|
|
884
|
+
case 'clbench': {
|
|
885
|
+
const bench = createClBenchBenchmark({
|
|
886
|
+
maxSteps: flags['max-steps'] ?? 30,
|
|
887
|
+
reinject: !flags['no-reinject'],
|
|
888
|
+
historyWindow: flags['history-window'],
|
|
889
|
+
});
|
|
890
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
891
|
+
}
|
|
892
|
+
case 'skilllearnbench': {
|
|
893
|
+
const bench = createSkillLearnBenchBenchmark({
|
|
894
|
+
iterations: flags['iterations'],
|
|
895
|
+
});
|
|
896
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
897
|
+
}
|
|
898
|
+
case 'lifelongagent': {
|
|
899
|
+
const bench = createLifelongAgentBenchmark({
|
|
900
|
+
maxSteps: flags['max-steps'] ?? 20,
|
|
901
|
+
historyWindow: flags['history-window'],
|
|
902
|
+
});
|
|
903
|
+
return { benchmark: bench, delegateFactory: bench.delegateFactory };
|
|
904
|
+
}
|
|
905
|
+
default:
|
|
906
|
+
console.error(`Unknown benchmark '${name}'. Use: gsm8k | alfworld | skillsbench | skillflow | clbench | skilllearnbench | lifelongagent`);
|
|
907
|
+
return null;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
function parseEvalFlags(args) {
|
|
911
|
+
const flags = {};
|
|
912
|
+
for (let i = 0; i < args.length; i++) {
|
|
913
|
+
const a = args[i];
|
|
914
|
+
switch (a) {
|
|
915
|
+
case '--backend':
|
|
916
|
+
flags.backend = args[++i];
|
|
917
|
+
break;
|
|
918
|
+
case '--benchmark':
|
|
919
|
+
flags.benchmark = args[++i];
|
|
920
|
+
break;
|
|
921
|
+
case '--model':
|
|
922
|
+
flags.model = args[++i];
|
|
923
|
+
break;
|
|
924
|
+
case '--tasks':
|
|
925
|
+
case '--limit':
|
|
926
|
+
flags.tasks = parseInt(args[++i], 10);
|
|
927
|
+
break;
|
|
928
|
+
case '--skills':
|
|
929
|
+
flags.skills = parseInt(args[++i], 10);
|
|
930
|
+
break;
|
|
931
|
+
case '--seeds':
|
|
932
|
+
flags.seeds = args[++i]
|
|
933
|
+
.split(',')
|
|
934
|
+
.map((s) => parseInt(s.trim(), 10))
|
|
935
|
+
.filter((n) => !Number.isNaN(n));
|
|
936
|
+
break;
|
|
937
|
+
case '--window':
|
|
938
|
+
flags.window = parseInt(args[++i], 10);
|
|
939
|
+
break;
|
|
940
|
+
case '--cold':
|
|
941
|
+
flags.cold = parseFloat(args[++i]);
|
|
942
|
+
break;
|
|
943
|
+
case '--warm':
|
|
944
|
+
flags.warm = parseFloat(args[++i]);
|
|
945
|
+
break;
|
|
946
|
+
case '--batch-every':
|
|
947
|
+
flags['batch-every'] = parseInt(args[++i], 10);
|
|
948
|
+
break;
|
|
949
|
+
case '--max-steps':
|
|
950
|
+
flags['max-steps'] = parseInt(args[++i], 10);
|
|
951
|
+
break;
|
|
952
|
+
case '--seed-playbooks':
|
|
953
|
+
flags['seed-playbooks'] = true;
|
|
954
|
+
break;
|
|
955
|
+
case '--bundled-seeds':
|
|
956
|
+
flags['bundled-seeds'] = true;
|
|
957
|
+
break;
|
|
958
|
+
case '--additive':
|
|
959
|
+
flags['additive'] = true;
|
|
960
|
+
break;
|
|
961
|
+
case '--no-additive':
|
|
962
|
+
flags['additive'] = false;
|
|
963
|
+
break;
|
|
964
|
+
case '--reuse-cold-from':
|
|
965
|
+
flags['reuse-cold-from'] = args[++i];
|
|
966
|
+
break;
|
|
967
|
+
case '--resume':
|
|
968
|
+
flags['resume'] = true;
|
|
969
|
+
break;
|
|
970
|
+
case '--fail-fast':
|
|
971
|
+
flags['fail-fast'] = true;
|
|
972
|
+
break;
|
|
973
|
+
case '--adaptive-stopping':
|
|
974
|
+
flags['adaptive-stopping'] = true;
|
|
975
|
+
break;
|
|
976
|
+
case '--stopping-threshold':
|
|
977
|
+
flags['stopping-threshold'] = parseFloat(args[++i]);
|
|
978
|
+
break;
|
|
979
|
+
case '--difficulty-registry':
|
|
980
|
+
flags['difficulty-registry'] = args[++i];
|
|
981
|
+
break;
|
|
982
|
+
case '--registry-db':
|
|
983
|
+
flags['registry-db'] = args[++i];
|
|
984
|
+
break;
|
|
985
|
+
case '--task-selection': {
|
|
986
|
+
const value = args[++i];
|
|
987
|
+
if (value === 'fixed' || value === 'discriminative') {
|
|
988
|
+
flags['task-selection'] = value;
|
|
989
|
+
}
|
|
990
|
+
else {
|
|
991
|
+
throw new Error(`Invalid --task-selection value: ${value}`);
|
|
992
|
+
}
|
|
993
|
+
break;
|
|
994
|
+
}
|
|
995
|
+
case '--no-reinject':
|
|
996
|
+
flags['no-reinject'] = true;
|
|
997
|
+
break;
|
|
998
|
+
case '--embeddings':
|
|
999
|
+
flags['embeddings'] = true;
|
|
1000
|
+
break;
|
|
1001
|
+
case '--embed-provider':
|
|
1002
|
+
flags['embed-provider'] = args[++i];
|
|
1003
|
+
flags['embeddings'] = true;
|
|
1004
|
+
break;
|
|
1005
|
+
case '--single-arm':
|
|
1006
|
+
flags['single-arm'] = true;
|
|
1007
|
+
break;
|
|
1008
|
+
case '--concurrency':
|
|
1009
|
+
flags['concurrency'] = parseInt(args[++i], 10);
|
|
1010
|
+
break;
|
|
1011
|
+
case '--interleave-arms':
|
|
1012
|
+
flags['interleave-arms'] = true;
|
|
1013
|
+
break;
|
|
1014
|
+
case '--stratified':
|
|
1015
|
+
flags['stratified'] = true;
|
|
1016
|
+
break;
|
|
1017
|
+
case '--refine':
|
|
1018
|
+
flags['refine'] = true;
|
|
1019
|
+
break;
|
|
1020
|
+
case '--ci-smoke':
|
|
1021
|
+
flags['ci-smoke'] = true;
|
|
1022
|
+
break;
|
|
1023
|
+
case '--components':
|
|
1024
|
+
flags.components = args[++i].split(',').map((s) => s.trim());
|
|
1025
|
+
break;
|
|
1026
|
+
case '--benchmark-repo':
|
|
1027
|
+
flags['benchmark-repo'] = args[++i];
|
|
1028
|
+
break;
|
|
1029
|
+
case '--iterations':
|
|
1030
|
+
flags['iterations'] = parseInt(args[++i], 10);
|
|
1031
|
+
break;
|
|
1032
|
+
case '--history-window':
|
|
1033
|
+
flags['history-window'] = parseInt(args[++i], 10);
|
|
1034
|
+
break;
|
|
1035
|
+
case '--timeout':
|
|
1036
|
+
flags['timeout'] = parseInt(args[++i], 10);
|
|
1037
|
+
break;
|
|
1038
|
+
case '--provider':
|
|
1039
|
+
flags['provider'] = args[++i];
|
|
1040
|
+
break;
|
|
1041
|
+
case '--aws-region':
|
|
1042
|
+
flags['aws-region'] = args[++i];
|
|
1043
|
+
break;
|
|
1044
|
+
case '--analysis-provider':
|
|
1045
|
+
flags['analysis-provider'] = args[++i];
|
|
1046
|
+
break;
|
|
1047
|
+
case '--analysis-model':
|
|
1048
|
+
flags['analysis-model'] = args[++i];
|
|
1049
|
+
break;
|
|
1050
|
+
case '--analysis-aws-region':
|
|
1051
|
+
flags['analysis-aws-region'] = args[++i];
|
|
1052
|
+
break;
|
|
1053
|
+
case '--smoke':
|
|
1054
|
+
flags['smoke'] = args[++i];
|
|
1055
|
+
break;
|
|
1056
|
+
case '--curriculum':
|
|
1057
|
+
flags['curriculum'] = args[++i];
|
|
1058
|
+
break;
|
|
1059
|
+
case '--games':
|
|
1060
|
+
flags['games'] = args[++i]
|
|
1061
|
+
.split(',')
|
|
1062
|
+
.map((s) => parseInt(s.trim(), 10))
|
|
1063
|
+
.filter((n) => !Number.isNaN(n));
|
|
1064
|
+
break;
|
|
1065
|
+
case '--families':
|
|
1066
|
+
flags['families'] = args[++i]
|
|
1067
|
+
.split(',')
|
|
1068
|
+
.map((s) => s.trim())
|
|
1069
|
+
.filter(Boolean);
|
|
1070
|
+
break;
|
|
1071
|
+
case '--skillflow-runtime':
|
|
1072
|
+
flags['skillflow-runtime'] = args[++i];
|
|
1073
|
+
break;
|
|
1074
|
+
case '--skillflow-embedded-workbook-bundle':
|
|
1075
|
+
flags['skillflow-embedded-workbook-bundle'] = true;
|
|
1076
|
+
break;
|
|
1077
|
+
case '--distill':
|
|
1078
|
+
flags['distill'] = true;
|
|
1079
|
+
break;
|
|
1080
|
+
case '--train-eval-split':
|
|
1081
|
+
flags['train-eval-split'] = true;
|
|
1082
|
+
break;
|
|
1083
|
+
case '--train-ratio':
|
|
1084
|
+
flags['train-ratio'] = Number(args[++i]);
|
|
1085
|
+
break;
|
|
1086
|
+
case '--split-seed':
|
|
1087
|
+
flags['split-seed'] = Number(args[++i]);
|
|
1088
|
+
break;
|
|
1089
|
+
case '--agentic-playbooks':
|
|
1090
|
+
flags['agentic-playbooks'] = true;
|
|
1091
|
+
break;
|
|
1092
|
+
case '--no-agentic-playbooks':
|
|
1093
|
+
flags['no-agentic-playbooks'] = true;
|
|
1094
|
+
break;
|
|
1095
|
+
case '--playbook-applicability-gate':
|
|
1096
|
+
flags['playbook-applicability-gate'] = true;
|
|
1097
|
+
break;
|
|
1098
|
+
case '--playbook-incorporation':
|
|
1099
|
+
flags['playbook-incorporation'] = args[++i];
|
|
1100
|
+
break;
|
|
1101
|
+
case '--mutation-mode': {
|
|
1102
|
+
const value = args[++i];
|
|
1103
|
+
if (value === 'frozen' || value === 'active' || value === 'candidate') {
|
|
1104
|
+
flags['mutation-mode'] = value;
|
|
1105
|
+
}
|
|
1106
|
+
else {
|
|
1107
|
+
throw new Error(`Invalid --mutation-mode value: ${value}`);
|
|
1108
|
+
}
|
|
1109
|
+
break;
|
|
1110
|
+
}
|
|
1111
|
+
case '--mutation-gating':
|
|
1112
|
+
flags['mutation-gating'] = true;
|
|
1113
|
+
break;
|
|
1114
|
+
case '--no-mutation-gating':
|
|
1115
|
+
flags['mutation-gating'] = false;
|
|
1116
|
+
break;
|
|
1117
|
+
case '--live-replay-gating':
|
|
1118
|
+
flags['live-replay-gating'] = true;
|
|
1119
|
+
break;
|
|
1120
|
+
case '--procedural-memory-source': {
|
|
1121
|
+
const value = args[++i];
|
|
1122
|
+
if (value === 'sqlite' || value === 'filesystem') {
|
|
1123
|
+
flags['procedural-memory-source'] = value;
|
|
1124
|
+
}
|
|
1125
|
+
else {
|
|
1126
|
+
throw new Error(`Invalid --procedural-memory-source value: ${value}`);
|
|
1127
|
+
}
|
|
1128
|
+
break;
|
|
1129
|
+
}
|
|
1130
|
+
case '--procedural-memory-dir':
|
|
1131
|
+
flags['procedural-memory-dir'] = args[++i];
|
|
1132
|
+
break;
|
|
1133
|
+
case '--procedural-memory-strict':
|
|
1134
|
+
flags['procedural-memory-strict'] = true;
|
|
1135
|
+
break;
|
|
1136
|
+
case '--procedural-memory-prune-sqlite-only':
|
|
1137
|
+
flags['procedural-memory-prune-sqlite-only'] = true;
|
|
1138
|
+
break;
|
|
1139
|
+
case '--trace-dir':
|
|
1140
|
+
flags['trace-dir'] = args[++i];
|
|
1141
|
+
break;
|
|
1142
|
+
case '--playbook-retriever': {
|
|
1143
|
+
const value = args[++i];
|
|
1144
|
+
if (value === 'legacy' || value === 'skill-tree-hybrid') {
|
|
1145
|
+
flags['playbook-retriever'] = value;
|
|
1146
|
+
}
|
|
1147
|
+
else {
|
|
1148
|
+
throw new Error(`Invalid --playbook-retriever value: ${value}`);
|
|
1149
|
+
}
|
|
1150
|
+
break;
|
|
1151
|
+
}
|
|
1152
|
+
case '--min-playbook-score': {
|
|
1153
|
+
const value = parseFloat(args[++i]);
|
|
1154
|
+
if (!Number.isFinite(value) || value < 0 || value > 1) {
|
|
1155
|
+
throw new Error(`Invalid --min-playbook-score value: ${args[i]}`);
|
|
1156
|
+
}
|
|
1157
|
+
flags['min-playbook-score'] = value;
|
|
1158
|
+
break;
|
|
1159
|
+
}
|
|
1160
|
+
case '--meta-playbook-dir':
|
|
1161
|
+
flags['meta-playbook-dir'] = [
|
|
1162
|
+
...(flags['meta-playbook-dir'] ?? []),
|
|
1163
|
+
...args[++i]
|
|
1164
|
+
.split(',')
|
|
1165
|
+
.map((s) => s.trim())
|
|
1166
|
+
.filter(Boolean),
|
|
1167
|
+
];
|
|
1168
|
+
break;
|
|
1169
|
+
case '--seed-playbook-dir':
|
|
1170
|
+
flags['seed-playbook-dir'] = [
|
|
1171
|
+
...(flags['seed-playbook-dir'] ?? []),
|
|
1172
|
+
...args[++i]
|
|
1173
|
+
.split(',')
|
|
1174
|
+
.map((s) => s.trim())
|
|
1175
|
+
.filter(Boolean),
|
|
1176
|
+
];
|
|
1177
|
+
break;
|
|
1178
|
+
case '--out':
|
|
1179
|
+
flags.out = args[++i];
|
|
1180
|
+
break;
|
|
1181
|
+
case '--json':
|
|
1182
|
+
flags.json = true;
|
|
1183
|
+
break;
|
|
1184
|
+
default:
|
|
1185
|
+
break;
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
return flags;
|
|
1189
|
+
}
|
|
1190
|
+
/**
|
|
1191
|
+
* Resolve the mutation-gating default for live eval runs: ON unless the run
|
|
1192
|
+
* is frozen (retrieval-only smokes have nothing to mutate) or the user opts
|
|
1193
|
+
* out with `--no-mutation-gating`. This makes the full learning loop —
|
|
1194
|
+
* extraction + reflective-mutation/pareto-merge gating — the default
|
|
1195
|
+
* measured system, so "learning arm" means the whole pipeline, not just
|
|
1196
|
+
* extraction.
|
|
1197
|
+
*/
|
|
1198
|
+
export function resolveMutationGating(flags) {
|
|
1199
|
+
return flags['mutation-gating'] ?? (flags['mutation-mode'] ?? 'active') !== 'frozen';
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* Resolve additive-consolidation for live eval runs. Default ON (matching the
|
|
1203
|
+
* `features.additiveConsolidation` config default): `--additive` sets it true,
|
|
1204
|
+
* `--no-additive` sets it false, neither leaves it at the default (true). This
|
|
1205
|
+
* mirrors `resolveMutationGating` — both `--additive` and `--no-additive` write
|
|
1206
|
+
* the same `additive` flag key.
|
|
1207
|
+
*/
|
|
1208
|
+
export function resolveAdditive(flags) {
|
|
1209
|
+
return flags['additive'] ?? true;
|
|
1210
|
+
}
|
|
1211
|
+
export function liveProceduralMemoryConfig(flags) {
|
|
1212
|
+
if (!flags['procedural-memory-source'] &&
|
|
1213
|
+
!flags['procedural-memory-dir'] &&
|
|
1214
|
+
!flags['procedural-memory-strict'] &&
|
|
1215
|
+
!flags['procedural-memory-prune-sqlite-only']) {
|
|
1216
|
+
return {};
|
|
1217
|
+
}
|
|
1218
|
+
return {
|
|
1219
|
+
proceduralMemorySource: flags['procedural-memory-source'] ?? 'filesystem',
|
|
1220
|
+
...(flags['procedural-memory-dir']
|
|
1221
|
+
? { proceduralMemoryDir: resolve(flags['procedural-memory-dir']) }
|
|
1222
|
+
: {}),
|
|
1223
|
+
...(flags['procedural-memory-strict'] !== undefined
|
|
1224
|
+
? { proceduralMemoryStrictStartup: flags['procedural-memory-strict'] }
|
|
1225
|
+
: {}),
|
|
1226
|
+
...(flags['procedural-memory-prune-sqlite-only'] !== undefined
|
|
1227
|
+
? { proceduralMemoryPruneSqliteOnly: flags['procedural-memory-prune-sqlite-only'] }
|
|
1228
|
+
: {}),
|
|
1229
|
+
};
|
|
1230
|
+
}
|
|
1231
|
+
export function shouldUseAgenticPlaybooks(flags, benchmark) {
|
|
1232
|
+
if (flags['no-agentic-playbooks'])
|
|
1233
|
+
return false;
|
|
1234
|
+
if (flags['agentic-playbooks'])
|
|
1235
|
+
return true;
|
|
1236
|
+
return (typeof benchmark?.playbookMinTrajectories === 'number' && benchmark.playbookMinTrajectories > 0);
|
|
1237
|
+
}
|
|
1238
|
+
function createAnalysisBackends(flags, solveModel, benchmark) {
|
|
1239
|
+
if (!shouldUseAgenticPlaybooks(flags, benchmark))
|
|
1240
|
+
return undefined;
|
|
1241
|
+
const provider = flags['analysis-provider'] ??
|
|
1242
|
+
(isResponsesProviderName(flags.provider) ? 'bedrock' : flags.provider);
|
|
1243
|
+
const model = flags['analysis-model'] ?? (provider && provider !== flags.provider ? 'haiku' : solveModel);
|
|
1244
|
+
return [
|
|
1245
|
+
new ClaudeWorkspaceBackend({
|
|
1246
|
+
model,
|
|
1247
|
+
timeoutMs: Math.max(flags['timeout'] ? flags['timeout'] * 1000 : 0, 180_000),
|
|
1248
|
+
provider,
|
|
1249
|
+
awsRegion: flags['analysis-aws-region'] ?? flags['aws-region'],
|
|
1250
|
+
}),
|
|
1251
|
+
];
|
|
1252
|
+
}
|
|
1253
|
+
function isResponsesProviderName(provider) {
|
|
1254
|
+
return provider === 'openai' || provider === 'azure' || provider === 'azure-openai';
|
|
1255
|
+
}
|
|
1256
|
+
async function runReport(args) {
|
|
1257
|
+
let diagnostics = false;
|
|
1258
|
+
let swarmkitLearning = false;
|
|
1259
|
+
let playbookUsage = false;
|
|
1260
|
+
let playbookCalibration = false;
|
|
1261
|
+
let candidateDecisions = false;
|
|
1262
|
+
let traceDir;
|
|
1263
|
+
let outFile;
|
|
1264
|
+
let learningArm;
|
|
1265
|
+
let baselineArm;
|
|
1266
|
+
let model;
|
|
1267
|
+
let window;
|
|
1268
|
+
let postExtractionStartIndex;
|
|
1269
|
+
let thresholds;
|
|
1270
|
+
const truePositiveNames = [];
|
|
1271
|
+
for (let i = 0; i < args.length; i++) {
|
|
1272
|
+
switch (args[i]) {
|
|
1273
|
+
case '--diagnostics':
|
|
1274
|
+
diagnostics = true;
|
|
1275
|
+
break;
|
|
1276
|
+
case '--swarmkit-learning':
|
|
1277
|
+
swarmkitLearning = true;
|
|
1278
|
+
break;
|
|
1279
|
+
case '--playbook-usage':
|
|
1280
|
+
playbookUsage = true;
|
|
1281
|
+
break;
|
|
1282
|
+
case '--playbook-calibration':
|
|
1283
|
+
playbookCalibration = true;
|
|
1284
|
+
break;
|
|
1285
|
+
case '--candidate-decisions':
|
|
1286
|
+
candidateDecisions = true;
|
|
1287
|
+
break;
|
|
1288
|
+
case '--trace-dir':
|
|
1289
|
+
traceDir = args[++i];
|
|
1290
|
+
break;
|
|
1291
|
+
case '--out':
|
|
1292
|
+
outFile = args[++i];
|
|
1293
|
+
break;
|
|
1294
|
+
case '--learning-arm':
|
|
1295
|
+
learningArm = args[++i];
|
|
1296
|
+
break;
|
|
1297
|
+
case '--baseline-arm':
|
|
1298
|
+
baselineArm = args[++i];
|
|
1299
|
+
break;
|
|
1300
|
+
case '--model':
|
|
1301
|
+
model = args[++i];
|
|
1302
|
+
break;
|
|
1303
|
+
case '--window':
|
|
1304
|
+
window = parseInt(args[++i], 10);
|
|
1305
|
+
break;
|
|
1306
|
+
case '--post-extraction-start':
|
|
1307
|
+
postExtractionStartIndex = parseInt(args[++i], 10);
|
|
1308
|
+
break;
|
|
1309
|
+
case '--thresholds':
|
|
1310
|
+
thresholds = parseNumberList(args[++i]);
|
|
1311
|
+
break;
|
|
1312
|
+
case '--true-positive':
|
|
1313
|
+
truePositiveNames.push(args[++i]);
|
|
1314
|
+
break;
|
|
1315
|
+
default:
|
|
1316
|
+
break;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
if (!diagnostics &&
|
|
1320
|
+
!swarmkitLearning &&
|
|
1321
|
+
!playbookUsage &&
|
|
1322
|
+
!playbookCalibration &&
|
|
1323
|
+
!candidateDecisions) {
|
|
1324
|
+
console.error('eval report: unknown mode. Currently supported: --diagnostics, --swarmkit-learning, --playbook-usage, --playbook-calibration, or --candidate-decisions with --trace-dir <dir>');
|
|
1325
|
+
process.exitCode = 1;
|
|
1326
|
+
return;
|
|
1327
|
+
}
|
|
1328
|
+
if (!traceDir) {
|
|
1329
|
+
console.error('eval report requires --trace-dir <dir>');
|
|
1330
|
+
process.exitCode = 1;
|
|
1331
|
+
return;
|
|
1332
|
+
}
|
|
1333
|
+
const report = swarmkitLearning
|
|
1334
|
+
? renderSwarmkitTraceReport(traceDir, {
|
|
1335
|
+
learningArm,
|
|
1336
|
+
baselineArm,
|
|
1337
|
+
model,
|
|
1338
|
+
window,
|
|
1339
|
+
postExtractionStartIndex,
|
|
1340
|
+
})
|
|
1341
|
+
: playbookUsage
|
|
1342
|
+
? renderPlaybookUsageReport(traceDir, {
|
|
1343
|
+
learningArm,
|
|
1344
|
+
baselineArm,
|
|
1345
|
+
postExtractionStartIndex,
|
|
1346
|
+
})
|
|
1347
|
+
: playbookCalibration
|
|
1348
|
+
? renderPlaybookCalibrationReport(traceDir, {
|
|
1349
|
+
learningArm,
|
|
1350
|
+
baselineArm,
|
|
1351
|
+
thresholds,
|
|
1352
|
+
})
|
|
1353
|
+
: candidateDecisions
|
|
1354
|
+
? renderPlaybookCandidateDecisionsReport(traceDir, {
|
|
1355
|
+
learningArm,
|
|
1356
|
+
baselineArm,
|
|
1357
|
+
truePositives: truePositiveNames.map((playbookName) => ({ playbookName })),
|
|
1358
|
+
})
|
|
1359
|
+
: renderDiagnosticsReport(traceDir);
|
|
1360
|
+
if (outFile) {
|
|
1361
|
+
writeFileSync(outFile, report + '\n');
|
|
1362
|
+
console.error(`Wrote diagnostics report to ${outFile}`);
|
|
1363
|
+
}
|
|
1364
|
+
else {
|
|
1365
|
+
console.log('\n' + report);
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
function parseNumberList(value) {
|
|
1369
|
+
return (value ?? '')
|
|
1370
|
+
.split(',')
|
|
1371
|
+
.map((part) => Number(part.trim()))
|
|
1372
|
+
.filter((n) => Number.isFinite(n));
|
|
1373
|
+
}
|
|
1374
|
+
function printUsage() {
|
|
1375
|
+
console.log(`Usage: cogcore eval [ablation] [options]
|
|
1376
|
+
|
|
1377
|
+
Modes:
|
|
1378
|
+
cogcore eval Sequential learning-curve eval (mock)
|
|
1379
|
+
cogcore eval ablation Per-component ablation (mock)
|
|
1380
|
+
cogcore eval --backend live --benchmark <name> Real-agent live arm
|
|
1381
|
+
cogcore eval ablation --backend live --benchmark clbench Live memory ablation
|
|
1382
|
+
|
|
1383
|
+
The learning-curve eval solves an ordered task stream with learning enabled
|
|
1384
|
+
(memory carried across tasks) vs. a no-learning baseline (fresh memory per task),
|
|
1385
|
+
reporting success-rate delta, normalized gain, and learning curves.
|
|
1386
|
+
|
|
1387
|
+
Benchmarks:
|
|
1388
|
+
gsm8k Grade-school math (single-turn, deterministic)
|
|
1389
|
+
alfworld Embodied household tasks (multi-turn, needs Python env)
|
|
1390
|
+
skillsbench 84 tasks, 11 domains — one-shot skill quality gate (Docker)
|
|
1391
|
+
skillflow 166 tasks, 5 domains — cumulative learning curve (Docker + bridge)
|
|
1392
|
+
clbench ~30 tasks, 6 domains — memory hierarchy vs naive ICL (bridge)
|
|
1393
|
+
skilllearnbench 20 tasks — iterative skill generation quality (bridge)
|
|
1394
|
+
lifelongagent ~50 tasks, 3 envs (DB/OS/KG) — sequential experience reuse (bridge)
|
|
1395
|
+
|
|
1396
|
+
Options:
|
|
1397
|
+
--backend <mock|live> Execution backend (default: mock)
|
|
1398
|
+
--benchmark <name> Live benchmark (see list above)
|
|
1399
|
+
--model <name> Model for live runs (Claude CLI or Responses API; default: haiku)
|
|
1400
|
+
--tasks/--limit <n> Tasks per arm (mock default 60, live default 12)
|
|
1401
|
+
--skills <n> (mock) distinct skill families (default: 6)
|
|
1402
|
+
--seeds <a,b,c> Seeds (mock default 1,2,3; live default 1)
|
|
1403
|
+
--window <n> Rolling-window size for the curve
|
|
1404
|
+
--max-steps <n> Max env steps per episode (default varies by benchmark)
|
|
1405
|
+
--seed-playbooks (alfworld) seed curated recipe playbooks (B1 cold-start)
|
|
1406
|
+
--bundled-seeds (live) enable committed cold-start seeds (bundled packs +
|
|
1407
|
+
meta seeds + routing priors) in BOTH arms. Seed-lift A/B:
|
|
1408
|
+
run once without, once with, and compare per arm.
|
|
1409
|
+
--additive (live) ADDITIVE LEARNING (default ON): refine/reuse
|
|
1410
|
+
existing playbooks (inline match-and-refine + injection-
|
|
1411
|
+
aligned frontier accounting) instead of minting a unique
|
|
1412
|
+
distilled-<uuid> per trajectory. On by default as of
|
|
1413
|
+
2026-07-06; this flag is now a no-op explicit opt-IN.
|
|
1414
|
+
--no-additive (live) Opt OUT of additive learning: restore the legacy
|
|
1415
|
+
proliferating behavior (a new unique distilled-<uuid>
|
|
1416
|
+
per trajectory). A/B: run once with --no-additive and
|
|
1417
|
+
once without to compare additive vs proliferating.
|
|
1418
|
+
--no-reinject Inject knowledge on turn 1 only, not every step
|
|
1419
|
+
--embeddings Semantic (hash-embedding) experience retrieval
|
|
1420
|
+
--single-arm Run only the learning arm (no cold baseline)
|
|
1421
|
+
--concurrency <n> Max concurrent cold-arm episodes (default 1). The
|
|
1422
|
+
harness is I/O-bound on the model, so n=4-8 gives a
|
|
1423
|
+
large speedup on the no-learning arm at ~0 CPU cost.
|
|
1424
|
+
--interleave-arms Per-seed arm-order alternation (even seeds: cold first)
|
|
1425
|
+
--stratified (alfworld) sample games evenly across task types
|
|
1426
|
+
--curriculum <name> (alfworld) curriculum ordering: recurrence-ladder = Curriculum-1
|
|
1427
|
+
block→interleave→probe phases (Section 6.2)
|
|
1428
|
+
--families <a,b> (skillflow) exact task families, preserving listed family order
|
|
1429
|
+
--skillflow-runtime <r> (skillflow) docker or e2b (default: docker / SKILLFLOW_RUNTIME)
|
|
1430
|
+
--skillflow-embedded-workbook-bundle
|
|
1431
|
+
(skillflow) Install the embedded workbook helper bundle in EDR tasks.
|
|
1432
|
+
--refine (alfworld) B3 in-episode think-act-refine loop
|
|
1433
|
+
--ci-smoke Apply budget-capped CI smoke profile for the benchmark
|
|
1434
|
+
--benchmark-repo <path> Path to benchmark repo (skillsbench)
|
|
1435
|
+
--iterations <n> Iterations per task (skilllearnbench, default 5)
|
|
1436
|
+
--history-window <n> History window for multi-turn prompts
|
|
1437
|
+
--timeout <seconds> Per-task timeout in seconds
|
|
1438
|
+
--provider <name> API provider (bedrock, vertex, openai, azure-openai). Default: ambient auth.
|
|
1439
|
+
bedrock routes calls via CLAUDE_CODE_USE_BEDROCK env routing (fixed
|
|
1440
|
+
2026-07-02, 6798326 — before that it silently used the Anthropic
|
|
1441
|
+
subscription); needs ~/.aws creds with bedrock:InvokeModel for the
|
|
1442
|
+
BEDROCK_MODELS inference profiles (src/eval/live/claude-cli.ts).
|
|
1443
|
+
Verify via CloudWatch AWS/Bedrock Invocations for the model id.
|
|
1444
|
+
--aws-region <region> AWS region for Bedrock (default us-west-1)
|
|
1445
|
+
--analysis-provider <p> Provider for workspace-agent extraction. Defaults to the solve
|
|
1446
|
+
provider, except OpenAI/Azure solve calls default analysis to bedrock.
|
|
1447
|
+
--analysis-model <m> Model for workspace-agent extraction (default follows provider)
|
|
1448
|
+
--analysis-aws-region <r>
|
|
1449
|
+
AWS region for analysis provider when using Bedrock
|
|
1450
|
+
--distill Wire a real LLM into the learning arm (distiller + convention-distiller).
|
|
1451
|
+
Learning arm only; cold arm is unaffected. On ALFWorld (no explicit
|
|
1452
|
+
playbookMinTrajectories), also lowers extraction threshold to 3 so the
|
|
1453
|
+
distiller fires mid-stream. Use with --backend live. (G3 arm C)
|
|
1454
|
+
--train-eval-split Complete train/eval isolation: the learner trains on a per-family
|
|
1455
|
+
TRAIN split (oracle on) then is FROZEN and scored on a disjoint
|
|
1456
|
+
held-out EVAL split (oracle off, solver firewall intact). Only the
|
|
1457
|
+
held-out tasks are counted. Cold baseline runs on the same EVAL split.
|
|
1458
|
+
--train-ratio <0..1> Fraction of each family's tasks used for TRAINING (default 0.5).
|
|
1459
|
+
Requires --train-eval-split.
|
|
1460
|
+
--split-seed <n> Deterministic seed offset for the train/eval partition (default 0).
|
|
1461
|
+
Requires --train-eval-split.
|
|
1462
|
+
--agentic-playbooks Use a separate Claude workspace agent for dream-phase playbook extraction.
|
|
1463
|
+
Default for live benchmarks with playbookMinTrajectories; opt-in for others.
|
|
1464
|
+
Keeps benchmark solve calls single-delegate while exercising the abstractor.
|
|
1465
|
+
--no-agentic-playbooks Force legacy heuristic dream-phase playbook extraction.
|
|
1466
|
+
--trace-dir <dir> Write live per-task diagnostics JSONL for eval report --diagnostics.
|
|
1467
|
+
--playbook-retriever <legacy|skill-tree-hybrid>
|
|
1468
|
+
Select solver-facing playbook retrieval implementation
|
|
1469
|
+
(default skill-tree-hybrid; legacy lexical scores are too
|
|
1470
|
+
sparse to clear the 0.1 injection floor).
|
|
1471
|
+
--min-playbook-score <n>
|
|
1472
|
+
Minimum playbook relevance score for injection (default 0.1).
|
|
1473
|
+
--playbook-applicability-gate
|
|
1474
|
+
Drop retrieved playbooks that lack task-specific applicability cues.
|
|
1475
|
+
--mutation-mode <mode> Validation mutation policy for live eval Atlas instances:
|
|
1476
|
+
active (default — learning arm learns), frozen (retrieval-only,
|
|
1477
|
+
no learned writes), or candidate.
|
|
1478
|
+
--mutation-gating Wire the playbook mutation/merge gating stack on the learning
|
|
1479
|
+
arm: binds a learning LLM provider (LLMJudgeReplay gate judge +
|
|
1480
|
+
reflective generator, no --distill needed) and runs maintenance
|
|
1481
|
+
after every dream so reflective-mutation / pareto-merge-proposing
|
|
1482
|
+
actually execute in short runs. Reported as mutationActivity in
|
|
1483
|
+
the JSON summary. DEFAULT ON whenever --mutation-mode is not
|
|
1484
|
+
frozen; disable with --no-mutation-gating.
|
|
1485
|
+
--no-mutation-gating Opt out of the default mutation/merge gating stack on the
|
|
1486
|
+
learning arm (extraction-only learning arm).
|
|
1487
|
+
--live-replay-gating Gate playbook mutations on the REAL task verifier for replayable
|
|
1488
|
+
experiences (re-execution outcome) instead of the haiku LLM-judge
|
|
1489
|
+
proxy, falling back to the LLM judge only when live replay isn't
|
|
1490
|
+
possible. Rollouts are budget-capped. Off by default (opt-in);
|
|
1491
|
+
requires --mutation-gating.
|
|
1492
|
+
--procedural-memory-source <sqlite|filesystem>
|
|
1493
|
+
Procedural-memory authority for live eval Atlas instances.
|
|
1494
|
+
Use filesystem to validate migrated .atlas/playbooks/SKILL.md artifacts.
|
|
1495
|
+
--procedural-memory-dir <p>
|
|
1496
|
+
Canonical SKILL.md playbook dir for live filesystem procedural memory.
|
|
1497
|
+
Relative paths are resolved against the current working directory.
|
|
1498
|
+
--procedural-memory-strict
|
|
1499
|
+
Fail live eval startup on invalid filesystem procedural memory.
|
|
1500
|
+
--meta-playbook-dir <p> Seed extractor-guidance meta-playbooks from a JSON file or directory.
|
|
1501
|
+
Repeat or comma-separate paths. Used only by learning-analysis agents.
|
|
1502
|
+
report --swarmkit-learning --trace-dir <dir>
|
|
1503
|
+
Render swarmkit-eval ordered-learning report from ablation traces.
|
|
1504
|
+
report --playbook-usage --trace-dir <dir>
|
|
1505
|
+
Render playbook surfacing/outcome audit from ablation traces.
|
|
1506
|
+
report --playbook-calibration --trace-dir <dir>
|
|
1507
|
+
Render score/utility calibration from paired or single-arm traces.
|
|
1508
|
+
report --candidate-decisions --trace-dir <dir>
|
|
1509
|
+
Audit every retrieved playbook candidate (incl. dropped): domain-fallback
|
|
1510
|
+
rate, rejected-candidate reasons. --true-positive <name> (repeatable)
|
|
1511
|
+
flags known true-positive playbooks dropped by the gate.
|
|
1512
|
+
--cold <p> --warm <p> (mock) cold/warm success probabilities
|
|
1513
|
+
--batch-every <n> Force batch learning every N tasks
|
|
1514
|
+
--components <a,b,c> (ablation) subset of components. Keys:
|
|
1515
|
+
${ABLATION_COMPONENTS.map((c) => c.key).join(', ')}
|
|
1516
|
+
--out <file> Write report (.json → JSON, else Markdown). Live runs
|
|
1517
|
+
also checkpoint per-task partial results to
|
|
1518
|
+
<out>.checkpoint.json (deleted on successful finish)
|
|
1519
|
+
--reuse-cold-from <f> (live) Adopt cold-arm results from a prior run's
|
|
1520
|
+
result JSON or checkpoint file instead of re-running
|
|
1521
|
+
the arm. Requires same benchmark/tasks/model; rows
|
|
1522
|
+
are validated against this run's task stream
|
|
1523
|
+
--resume (live) Resume an aborted run from <out>.checkpoint.json
|
|
1524
|
+
(same --out): skip every already-completed (arm, seed,
|
|
1525
|
+
task) and reopen the persisted <out>.workdir/ learning
|
|
1526
|
+
dirs so accumulated memory carries forward. The final
|
|
1527
|
+
aggregated report is identical to an uninterrupted run.
|
|
1528
|
+
Requires --out; a no-op (fresh run) if no checkpoint
|
|
1529
|
+
exists. See scripts/run-eval-resilient.sh for a
|
|
1530
|
+
tmux-based auto-restart wrapper
|
|
1531
|
+
--fail-fast (live) One attempt per model call, no env_error
|
|
1532
|
+
episode retry — halves worst-case wall time on
|
|
1533
|
+
failure-heavy runs at some resilience cost
|
|
1534
|
+
--adaptive-stopping (live) Sequential stopping: after each seed, stop the
|
|
1535
|
+
run early if the learning-vs-cold question is already
|
|
1536
|
+
answered (threshold) or provably unanswerable within
|
|
1537
|
+
the remaining budget (futility)
|
|
1538
|
+
--stopping-threshold <p> Posterior probability to declare early (default 0.98)
|
|
1539
|
+
--difficulty-registry <f>
|
|
1540
|
+
(live) Per-family difficulty registry JSON. This run's
|
|
1541
|
+
per-task outcomes are ingested into it on completion;
|
|
1542
|
+
with --task-selection discriminative it also drives
|
|
1543
|
+
task sampling
|
|
1544
|
+
--registry-db <path> (live) SQLite registry (difficulty + lift cells) —
|
|
1545
|
+
the canonical backend. Ingests this run's difficulty
|
|
1546
|
+
rows AND guided/unguided lift rows (solver = --model,
|
|
1547
|
+
canonicalized) on completion; also usable as the
|
|
1548
|
+
--task-selection discriminative source. Lift
|
|
1549
|
+
subcommands default to eval-traces/registry.db when
|
|
1550
|
+
no registry flag is given
|
|
1551
|
+
--task-selection <fixed|discriminative>
|
|
1552
|
+
(live) discriminative oversamples the benchmark pool
|
|
1553
|
+
and weights families toward the p≈0.5 band using the
|
|
1554
|
+
registry (advisory until a family has ≥3 runs).
|
|
1555
|
+
Requires --difficulty-registry or --registry-db.
|
|
1556
|
+
CAUTION: changes the estimand — never compare
|
|
1557
|
+
discriminative numbers against fixed-stream numbers
|
|
1558
|
+
ingest-difficulty --registry <f> [--benchmark <n>] <artifacts...>
|
|
1559
|
+
Backfill the registry from existing result JSONs or
|
|
1560
|
+
checkpoint files
|
|
1561
|
+
ingest-lift [--registry-db <db> | --registry <f.json>] [--benchmark <n>]
|
|
1562
|
+
[--solver <model>] <artifacts...>
|
|
1563
|
+
Backfill the lift registry (guided = learning arm,
|
|
1564
|
+
unguided = cold arm, family = skillTag). Solver comes
|
|
1565
|
+
from a checkpoint's meta.model, else --solver is
|
|
1566
|
+
required (result JSONs carry no model). Cells never
|
|
1567
|
+
pool across solvers
|
|
1568
|
+
lift-report [--registry-db <db> | --registry <f.json>] [--atlas-dir <dir>] [--json]
|
|
1569
|
+
"Where does memory help?" — per-(scope × family ×
|
|
1570
|
+
solver) guided/unguided counts, posterior Δ, 95% CI,
|
|
1571
|
+
and decided state (POSITIVE: CI lower bound > 0;
|
|
1572
|
+
NULL: CI upper bound < 0.05; else UNDECIDED).
|
|
1573
|
+
--atlas-dir merges a production instance DB's
|
|
1574
|
+
lift_cells (scope 'production')
|
|
1575
|
+
registry migrate --from <file.json> --to <db>
|
|
1576
|
+
One-shot migration of a JSON registry (difficulty +
|
|
1577
|
+
lift) into a SQLite registry DB
|
|
1578
|
+
--json Print JSON to stdout
|
|
1579
|
+
|
|
1580
|
+
Exit codes (mock curve): 0 = learning helped, 2 = no improvement (CI gate).`);
|
|
1581
|
+
}
|
|
1582
|
+
//# sourceMappingURL=eval.js.map
|