cognitive-core 0.2.0 → 0.2.2
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/.claude/settings.json +111 -2
- package/.sessionlog/settings.json +4 -0
- package/dist/atlas.d.ts +10 -0
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +65 -0
- package/dist/atlas.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/learning/index.d.ts +1 -1
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/pipeline.d.ts +4 -31
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +12 -64
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +30 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -1
- package/dist/learning/unified-pipeline.js +207 -0
- package/dist/learning/unified-pipeline.js.map +1 -1
- package/dist/memory/candidate-retrieval.d.ts.map +1 -1
- package/dist/memory/candidate-retrieval.js +3 -1
- package/dist/memory/candidate-retrieval.js.map +1 -1
- package/dist/memory/curated-loader.d.ts +21 -4
- package/dist/memory/curated-loader.d.ts.map +1 -1
- package/dist/memory/curated-loader.js +53 -16
- package/dist/memory/curated-loader.js.map +1 -1
- package/dist/memory/index.d.ts +2 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -1
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/playbook.d.ts +6 -0
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +15 -0
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/source-resolver.d.ts +120 -0
- package/dist/memory/source-resolver.d.ts.map +1 -0
- package/dist/memory/source-resolver.js +300 -0
- package/dist/memory/source-resolver.js.map +1 -0
- package/dist/types/config.d.ts +141 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +40 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/error-classifier.js +8 -8
- package/dist/utils/error-classifier.js.map +1 -1
- package/dist/workspace/efficacy-toolkit.d.ts +164 -0
- package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
- package/dist/workspace/efficacy-toolkit.js +281 -0
- package/dist/workspace/efficacy-toolkit.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +3 -1
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/templates/index.d.ts +3 -0
- package/dist/workspace/templates/index.d.ts.map +1 -1
- package/dist/workspace/templates/index.js +6 -0
- package/dist/workspace/templates/index.js.map +1 -1
- package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
- package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-decay-detection.js +197 -0
- package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
- package/dist/workspace/types.d.ts +12 -54
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +8 -2
- package/playbooks/compound-engineering/adversarial-review.json +51 -0
- package/playbooks/compound-engineering/agent-native-architecture.json +59 -0
- package/playbooks/compound-engineering/agent-native-review.json +54 -0
- package/playbooks/compound-engineering/api-contract-review.json +52 -0
- package/playbooks/compound-engineering/brainstorm-requirements.json +55 -0
- package/playbooks/compound-engineering/bug-reproduction.json +62 -0
- package/playbooks/compound-engineering/confidence-calibration.json +49 -0
- package/playbooks/compound-engineering/correctness-review.json +49 -0
- package/playbooks/compound-engineering/data-migration-safety.json +59 -0
- package/playbooks/compound-engineering/deployment-verification.json +63 -0
- package/playbooks/compound-engineering/error-recovery-patterns.json +53 -0
- package/playbooks/compound-engineering/implementation-planning.json +64 -0
- package/playbooks/compound-engineering/issue-pattern-analysis.json +53 -0
- package/playbooks/compound-engineering/knowledge-compounding.json +63 -0
- package/playbooks/compound-engineering/learnings-research.json +54 -0
- package/playbooks/compound-engineering/maintainability-review.json +49 -0
- package/playbooks/compound-engineering/performance-review.json +54 -0
- package/playbooks/compound-engineering/plan-adversarial-review.json +56 -0
- package/playbooks/compound-engineering/plan-feasibility-review.json +56 -0
- package/playbooks/compound-engineering/project-standards-review.json +52 -0
- package/playbooks/compound-engineering/reliability-review.json +53 -0
- package/playbooks/compound-engineering/review-orchestration.json +64 -0
- package/playbooks/compound-engineering/security-review.json +54 -0
- package/playbooks/compound-engineering/systematic-execution.json +64 -0
- package/playbooks/compound-engineering/testing-review.json +50 -0
- package/src/atlas.ts +96 -0
- package/src/index.ts +27 -0
- package/src/learning/index.ts +1 -0
- package/src/learning/unified-pipeline.ts +271 -1
- package/src/memory/candidate-retrieval.ts +2 -1
- package/src/memory/curated-loader.ts +69 -16
- package/src/memory/index.ts +16 -0
- package/src/memory/playbook.ts +19 -0
- package/src/memory/source-resolver.ts +422 -0
- package/src/types/config.ts +46 -0
- package/src/types/index.ts +4 -0
- package/src/utils/error-classifier.ts +8 -8
- package/src/workspace/efficacy-toolkit.ts +496 -0
- package/src/workspace/index.ts +29 -0
- package/src/workspace/templates/index.ts +24 -0
- package/src/workspace/templates/playbook-decay-detection.ts +272 -0
- package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
- package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
- package/src/workspace/types.ts +22 -78
- package/tests/fixtures/behavioral-trajectories.ts +210 -0
- package/tests/integration/curated-sources-e2e.test.ts +502 -0
- package/tests/integration/pipeline-data-correctness.test.ts +794 -0
- package/tests/learning/meta-learner.test.ts +418 -0
- package/tests/learning/pipeline-memory-updates.test.ts +721 -0
- package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
- package/tests/memory/candidate-retrieval.test.ts +167 -0
- package/tests/memory/compound-engineering-seed.test.ts +338 -0
- package/tests/memory/curated-loader-extended.test.ts +225 -0
- package/tests/memory/meta.test.ts +399 -0
- package/tests/memory/playbook-quality-validation.test.ts +430 -0
- package/tests/memory/source-resolver.test.ts +700 -0
- package/tests/search/evaluator.test.ts +257 -0
- package/tests/search/verification-runner.test.ts +357 -0
- package/tests/utils/error-classifier.test.ts +149 -0
- package/tests/utils/trajectory-helpers.test.ts +163 -0
- package/tests/workspace/efficacy-toolkit.test.ts +404 -0
- package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
- package/.claude/settings.local.json +0 -11
- package/dist/learning/llm-extractor.d.ts +0 -88
- package/dist/learning/llm-extractor.d.ts.map +0 -1
- package/dist/learning/llm-extractor.js +0 -372
- package/dist/learning/llm-extractor.js.map +0 -1
- package/dist/learning/loop-coordinator.d.ts +0 -61
- package/dist/learning/loop-coordinator.d.ts.map +0 -1
- package/dist/learning/loop-coordinator.js +0 -96
- package/dist/learning/loop-coordinator.js.map +0 -1
- package/references/agent-workspace/CLAUDE.md +0 -74
- package/references/agent-workspace/README.md +0 -587
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +0 -2061
- package/references/agent-workspace/package.json +0 -54
- package/references/agent-workspace/src/handle.ts +0 -122
- package/references/agent-workspace/src/index.ts +0 -32
- package/references/agent-workspace/src/manager.ts +0 -102
- package/references/agent-workspace/src/readers/json.ts +0 -71
- package/references/agent-workspace/src/readers/markdown.ts +0 -37
- package/references/agent-workspace/src/readers/raw.ts +0 -27
- package/references/agent-workspace/src/types.ts +0 -68
- package/references/agent-workspace/src/validation.ts +0 -93
- package/references/agent-workspace/src/writers/json.ts +0 -17
- package/references/agent-workspace/src/writers/markdown.ts +0 -27
- package/references/agent-workspace/src/writers/raw.ts +0 -22
- package/references/agent-workspace/tests/errors.test.ts +0 -652
- package/references/agent-workspace/tests/handle.test.ts +0 -144
- package/references/agent-workspace/tests/manager.test.ts +0 -124
- package/references/agent-workspace/tests/readers.test.ts +0 -205
- package/references/agent-workspace/tests/validation.test.ts +0 -196
- package/references/agent-workspace/tests/writers.test.ts +0 -108
- package/references/agent-workspace/tsconfig.json +0 -20
- package/references/agent-workspace/tsup.config.ts +0 -9
- package/references/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -556
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -60
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- package/references/sessionlog/.husky/pre-commit +0 -1
- package/references/sessionlog/.lintstagedrc.json +0 -4
- package/references/sessionlog/.prettierignore +0 -4
- package/references/sessionlog/.prettierrc.json +0 -11
- package/references/sessionlog/LICENSE +0 -21
- package/references/sessionlog/README.md +0 -453
- package/references/sessionlog/eslint.config.js +0 -58
- package/references/sessionlog/package-lock.json +0 -3672
- package/references/sessionlog/package.json +0 -65
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +0 -570
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +0 -127
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +0 -225
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +0 -46
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +0 -86
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +0 -224
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +0 -890
- package/references/sessionlog/src/__tests__/event-log.test.ts +0 -183
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +0 -105
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +0 -375
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +0 -78
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +0 -121
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +0 -759
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +0 -338
- package/references/sessionlog/src/__tests__/redaction.test.ts +0 -136
- package/references/sessionlog/src/__tests__/session-repo.test.ts +0 -353
- package/references/sessionlog/src/__tests__/session-store.test.ts +0 -166
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +0 -466
- package/references/sessionlog/src/__tests__/skill-live.test.ts +0 -461
- package/references/sessionlog/src/__tests__/summarize.test.ts +0 -348
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +0 -610
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +0 -632
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +0 -121
- package/references/sessionlog/src/__tests__/types.test.ts +0 -166
- package/references/sessionlog/src/__tests__/utils.test.ts +0 -333
- package/references/sessionlog/src/__tests__/validation.test.ts +0 -103
- package/references/sessionlog/src/__tests__/worktree.test.ts +0 -57
- package/references/sessionlog/src/agent/agents/claude-code.ts +0 -1089
- package/references/sessionlog/src/agent/agents/cursor.ts +0 -361
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +0 -632
- package/references/sessionlog/src/agent/agents/opencode.ts +0 -540
- package/references/sessionlog/src/agent/registry.ts +0 -143
- package/references/sessionlog/src/agent/session-types.ts +0 -113
- package/references/sessionlog/src/agent/types.ts +0 -220
- package/references/sessionlog/src/cli.ts +0 -597
- package/references/sessionlog/src/commands/clean.ts +0 -133
- package/references/sessionlog/src/commands/disable.ts +0 -84
- package/references/sessionlog/src/commands/doctor.ts +0 -145
- package/references/sessionlog/src/commands/enable.ts +0 -202
- package/references/sessionlog/src/commands/explain.ts +0 -261
- package/references/sessionlog/src/commands/reset.ts +0 -105
- package/references/sessionlog/src/commands/resume.ts +0 -180
- package/references/sessionlog/src/commands/rewind.ts +0 -195
- package/references/sessionlog/src/commands/setup-ccweb.ts +0 -275
- package/references/sessionlog/src/commands/status.ts +0 -172
- package/references/sessionlog/src/config.ts +0 -165
- package/references/sessionlog/src/events/event-log.ts +0 -126
- package/references/sessionlog/src/git-operations.ts +0 -558
- package/references/sessionlog/src/hooks/git-hooks.ts +0 -165
- package/references/sessionlog/src/hooks/lifecycle.ts +0 -391
- package/references/sessionlog/src/index.ts +0 -650
- package/references/sessionlog/src/security/redaction.ts +0 -283
- package/references/sessionlog/src/session/state-machine.ts +0 -452
- package/references/sessionlog/src/store/checkpoint-store.ts +0 -509
- package/references/sessionlog/src/store/native-store.ts +0 -173
- package/references/sessionlog/src/store/provider-types.ts +0 -99
- package/references/sessionlog/src/store/session-store.ts +0 -266
- package/references/sessionlog/src/strategy/attribution.ts +0 -296
- package/references/sessionlog/src/strategy/common.ts +0 -207
- package/references/sessionlog/src/strategy/content-overlap.ts +0 -228
- package/references/sessionlog/src/strategy/manual-commit.ts +0 -988
- package/references/sessionlog/src/strategy/types.ts +0 -279
- package/references/sessionlog/src/summarize/claude-generator.ts +0 -115
- package/references/sessionlog/src/summarize/summarize.ts +0 -432
- package/references/sessionlog/src/types.ts +0 -508
- package/references/sessionlog/src/utils/chunk-files.ts +0 -49
- package/references/sessionlog/src/utils/commit-message.ts +0 -65
- package/references/sessionlog/src/utils/detect-agent.ts +0 -36
- package/references/sessionlog/src/utils/hook-managers.ts +0 -125
- package/references/sessionlog/src/utils/ide-tags.ts +0 -32
- package/references/sessionlog/src/utils/paths.ts +0 -79
- package/references/sessionlog/src/utils/preview-rewind.ts +0 -80
- package/references/sessionlog/src/utils/rewind-conflict.ts +0 -121
- package/references/sessionlog/src/utils/shadow-branch.ts +0 -109
- package/references/sessionlog/src/utils/string-utils.ts +0 -46
- package/references/sessionlog/src/utils/todo-extract.ts +0 -188
- package/references/sessionlog/src/utils/trailers.ts +0 -187
- package/references/sessionlog/src/utils/transcript-parse.ts +0 -177
- package/references/sessionlog/src/utils/transcript-timestamp.ts +0 -59
- package/references/sessionlog/src/utils/tree-ops.ts +0 -219
- package/references/sessionlog/src/utils/tty.ts +0 -72
- package/references/sessionlog/src/utils/validation.ts +0 -65
- package/references/sessionlog/src/utils/worktree.ts +0 -58
- package/references/sessionlog/src/wire-types.ts +0 -59
- package/references/sessionlog/templates/setup-env.sh +0 -153
- package/references/sessionlog/tsconfig.json +0 -18
- package/references/sessionlog/vitest.config.ts +0 -12
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -19
- package/references/skill-tree/.sudocode/specs.jsonl +0 -3
- package/references/skill-tree/CLAUDE.md +0 -126
- package/references/skill-tree/README.md +0 -372
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -164
- package/references/skill-tree/package-lock.json +0 -1852
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
|
@@ -1,372 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM-Based Playbook Extractor
|
|
3
|
-
*
|
|
4
|
-
* Uses language models to generate higher-quality playbooks
|
|
5
|
-
* from trajectories. Complements the pattern-based extractor
|
|
6
|
-
* with deeper semantic analysis.
|
|
7
|
-
*/
|
|
8
|
-
import { createPlaybook } from '../types/index.js';
|
|
9
|
-
const DEFAULT_CONFIG = {
|
|
10
|
-
temperature: 0.2,
|
|
11
|
-
maxTokens: 2000,
|
|
12
|
-
extractFromSingle: true,
|
|
13
|
-
minComplexity: 3, // Minimum steps to warrant LLM extraction
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* LLM-Based Playbook Extractor
|
|
17
|
-
*/
|
|
18
|
-
export class LLMPlaybookExtractor {
|
|
19
|
-
provider;
|
|
20
|
-
config;
|
|
21
|
-
constructor(provider, config) {
|
|
22
|
-
this.provider = provider;
|
|
23
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Extract playbooks from trajectories using LLM
|
|
27
|
-
*/
|
|
28
|
-
async extract(trajectories, analyses, existingPlaybooks = []) {
|
|
29
|
-
// Filter to successful, complex enough trajectories
|
|
30
|
-
const candidates = trajectories.filter((t, i) => {
|
|
31
|
-
const analysis = analyses[i];
|
|
32
|
-
return (analysis?.success &&
|
|
33
|
-
analysis.abstractable &&
|
|
34
|
-
t.steps.length >= this.config.minComplexity);
|
|
35
|
-
});
|
|
36
|
-
if (candidates.length === 0) {
|
|
37
|
-
return { playbooks: [], refinements: [] };
|
|
38
|
-
}
|
|
39
|
-
// Extract playbooks from each candidate
|
|
40
|
-
const allResults = {
|
|
41
|
-
playbooks: [],
|
|
42
|
-
refinements: [],
|
|
43
|
-
};
|
|
44
|
-
// Process individually for better quality
|
|
45
|
-
if (this.config.extractFromSingle) {
|
|
46
|
-
for (let i = 0; i < candidates.length; i++) {
|
|
47
|
-
const trajectory = candidates[i];
|
|
48
|
-
const analysis = analyses.find((_, idx) => trajectories[idx] === trajectory);
|
|
49
|
-
if (!analysis)
|
|
50
|
-
continue;
|
|
51
|
-
const result = await this.extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks);
|
|
52
|
-
allResults.playbooks.push(...result.playbooks);
|
|
53
|
-
allResults.refinements.push(...result.refinements);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Also do batch extraction if we have multiple
|
|
57
|
-
if (candidates.length >= 2) {
|
|
58
|
-
const batchResult = await this.extractFromBatch(candidates, analyses.filter((_, i) => candidates.includes(trajectories[i])), existingPlaybooks);
|
|
59
|
-
// Merge with individual results (avoid duplicates)
|
|
60
|
-
for (const playbook of batchResult.playbooks) {
|
|
61
|
-
const isDuplicate = allResults.playbooks.some((p) => this.isSimilarPlaybook(p, playbook));
|
|
62
|
-
if (!isDuplicate) {
|
|
63
|
-
allResults.playbooks.push(playbook);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
allResults.refinements.push(...batchResult.refinements);
|
|
67
|
-
}
|
|
68
|
-
return allResults;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Extract a playbook from a single trajectory
|
|
72
|
-
*/
|
|
73
|
-
async extractFromSingleTrajectory(trajectory, analysis, existingPlaybooks) {
|
|
74
|
-
const prompt = this.buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks);
|
|
75
|
-
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
76
|
-
temperature: this.config.temperature,
|
|
77
|
-
maxTokens: this.config.maxTokens,
|
|
78
|
-
});
|
|
79
|
-
return this.parseExtractionResponse(response, trajectory);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Extract playbooks from a batch of trajectories
|
|
83
|
-
*/
|
|
84
|
-
async extractFromBatch(trajectories, analyses, existingPlaybooks) {
|
|
85
|
-
const prompt = this.buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks);
|
|
86
|
-
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
87
|
-
temperature: this.config.temperature,
|
|
88
|
-
maxTokens: this.config.maxTokens * 2,
|
|
89
|
-
});
|
|
90
|
-
return this.parseExtractionResponse(response);
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Build prompt for single trajectory extraction
|
|
94
|
-
*/
|
|
95
|
-
buildSingleExtractionPrompt(trajectory, analysis, existingPlaybooks) {
|
|
96
|
-
const keyStepsDesc = analysis.keySteps
|
|
97
|
-
.map((idx) => {
|
|
98
|
-
const step = trajectory.steps[idx];
|
|
99
|
-
return step
|
|
100
|
-
? ` - Step ${idx + 1}: ${step.action}${step.thought ? ` (reasoning: ${step.thought})` : ''}`
|
|
101
|
-
: '';
|
|
102
|
-
})
|
|
103
|
-
.filter(Boolean)
|
|
104
|
-
.join('\n');
|
|
105
|
-
const existingPlaybookNames = existingPlaybooks
|
|
106
|
-
.map((p) => `- ${p.name}: ${p.guidance.strategy.slice(0, 100)}`)
|
|
107
|
-
.slice(0, 5)
|
|
108
|
-
.join('\n');
|
|
109
|
-
return `Analyze this successful problem-solving trajectory and extract a reusable playbook.
|
|
110
|
-
|
|
111
|
-
## Task
|
|
112
|
-
${trajectory.task.description}
|
|
113
|
-
Domain: ${trajectory.task.domain}
|
|
114
|
-
|
|
115
|
-
## Solution Steps
|
|
116
|
-
${trajectory.steps.map((s, i) => `${i + 1}. ${s.action}${s.observation ? `\n Observation: ${s.observation.slice(0, 100)}` : ''}`).join('\n')}
|
|
117
|
-
|
|
118
|
-
## Key Steps (most important for success)
|
|
119
|
-
${keyStepsDesc}
|
|
120
|
-
|
|
121
|
-
## Outcome
|
|
122
|
-
${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}: ${trajectory.outcome.solution ?? trajectory.outcome.errorInfo ?? 'No details'}
|
|
123
|
-
|
|
124
|
-
${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
|
|
125
|
-
${existingPlaybookNames}` : ''}
|
|
126
|
-
|
|
127
|
-
## Instructions
|
|
128
|
-
Extract a reusable playbook that captures the essential approach. Focus on:
|
|
129
|
-
1. What situations trigger this approach
|
|
130
|
-
2. The core strategy/pattern used
|
|
131
|
-
3. Key tactical steps
|
|
132
|
-
4. Success/failure indicators
|
|
133
|
-
|
|
134
|
-
Respond in JSON format:
|
|
135
|
-
{
|
|
136
|
-
"playbook": {
|
|
137
|
-
"name": "kebab-case-name",
|
|
138
|
-
"situations": ["when X happens", "for Y type problems"],
|
|
139
|
-
"triggers": ["error messages", "signals that trigger this"],
|
|
140
|
-
"antiPatterns": ["when NOT to use this"],
|
|
141
|
-
"strategy": "High-level approach description",
|
|
142
|
-
"tactics": ["specific technique 1", "specific technique 2"],
|
|
143
|
-
"steps": ["step 1", "step 2", "step 3"],
|
|
144
|
-
"successIndicators": ["how to know it worked"],
|
|
145
|
-
"failureIndicators": ["how to know it failed"],
|
|
146
|
-
"complexity": "simple|moderate|complex",
|
|
147
|
-
"estimatedEffort": 5
|
|
148
|
-
},
|
|
149
|
-
"isRefinementOf": null
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
If this is better suited as a refinement to an existing playbook, set isRefinementOf to the playbook name and include only the refinement details.`;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Build prompt for batch extraction
|
|
156
|
-
*/
|
|
157
|
-
buildBatchExtractionPrompt(trajectories, analyses, existingPlaybooks) {
|
|
158
|
-
const trajectorySummaries = trajectories
|
|
159
|
-
.map((t, i) => {
|
|
160
|
-
const analysis = analyses[i];
|
|
161
|
-
const keySteps = analysis?.keySteps ?? [];
|
|
162
|
-
return `### Trajectory ${i + 1}
|
|
163
|
-
Task: ${t.task.description}
|
|
164
|
-
Domain: ${t.task.domain}
|
|
165
|
-
Steps: ${t.steps.length}
|
|
166
|
-
Key steps: ${keySteps.map((idx) => t.steps[idx]?.action ?? '').join(' → ')}
|
|
167
|
-
Outcome: ${t.outcome.success ? 'SUCCESS' : 'FAILURE'}`;
|
|
168
|
-
})
|
|
169
|
-
.join('\n\n');
|
|
170
|
-
const existingPlaybookNames = existingPlaybooks
|
|
171
|
-
.map((p) => `- ${p.name}`)
|
|
172
|
-
.slice(0, 10)
|
|
173
|
-
.join('\n');
|
|
174
|
-
return `Analyze these successful trajectories and identify common patterns that can be extracted as reusable playbooks.
|
|
175
|
-
|
|
176
|
-
## Trajectories
|
|
177
|
-
${trajectorySummaries}
|
|
178
|
-
|
|
179
|
-
${existingPlaybooks.length > 0 ? `## Existing Playbooks (avoid duplicates)
|
|
180
|
-
${existingPlaybookNames}` : ''}
|
|
181
|
-
|
|
182
|
-
## Instructions
|
|
183
|
-
Identify patterns that appear across multiple trajectories and extract them as playbooks.
|
|
184
|
-
Focus on generalizable approaches, not task-specific details.
|
|
185
|
-
|
|
186
|
-
Respond in JSON format:
|
|
187
|
-
{
|
|
188
|
-
"playbooks": [
|
|
189
|
-
{
|
|
190
|
-
"name": "kebab-case-name",
|
|
191
|
-
"situations": ["when X happens"],
|
|
192
|
-
"triggers": [],
|
|
193
|
-
"antiPatterns": [],
|
|
194
|
-
"strategy": "Description",
|
|
195
|
-
"tactics": ["technique 1"],
|
|
196
|
-
"steps": ["step 1", "step 2"],
|
|
197
|
-
"successIndicators": ["indicator"],
|
|
198
|
-
"failureIndicators": ["indicator"],
|
|
199
|
-
"complexity": "simple|moderate|complex",
|
|
200
|
-
"estimatedEffort": 5,
|
|
201
|
-
"sourceTrajectories": [1, 2]
|
|
202
|
-
}
|
|
203
|
-
]
|
|
204
|
-
}`;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Parse LLM response into extraction result
|
|
208
|
-
*/
|
|
209
|
-
parseExtractionResponse(response, sourceTrajectory) {
|
|
210
|
-
const result = {
|
|
211
|
-
playbooks: [],
|
|
212
|
-
refinements: [],
|
|
213
|
-
rawResponse: response,
|
|
214
|
-
};
|
|
215
|
-
try {
|
|
216
|
-
// Extract JSON from response
|
|
217
|
-
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
218
|
-
if (!jsonMatch) {
|
|
219
|
-
return result;
|
|
220
|
-
}
|
|
221
|
-
const parsed = JSON.parse(jsonMatch[0]);
|
|
222
|
-
// Handle single playbook response
|
|
223
|
-
if (parsed.playbook && !parsed.isRefinementOf) {
|
|
224
|
-
const playbook = this.createPlaybookFromLLMData(parsed.playbook, sourceTrajectory);
|
|
225
|
-
result.playbooks.push(playbook);
|
|
226
|
-
}
|
|
227
|
-
// Handle refinement response
|
|
228
|
-
if (parsed.playbook && parsed.isRefinementOf) {
|
|
229
|
-
result.refinements.push({
|
|
230
|
-
playbookId: parsed.isRefinementOf,
|
|
231
|
-
refinement: {
|
|
232
|
-
context: parsed.playbook.situations?.[0] ?? 'General refinement',
|
|
233
|
-
addition: parsed.playbook.strategy ?? '',
|
|
234
|
-
source: 'success',
|
|
235
|
-
addedAt: new Date(),
|
|
236
|
-
},
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
// Handle batch response
|
|
240
|
-
if (parsed.playbooks && Array.isArray(parsed.playbooks)) {
|
|
241
|
-
for (const pbData of parsed.playbooks) {
|
|
242
|
-
const playbook = this.createPlaybookFromLLMData(pbData);
|
|
243
|
-
result.playbooks.push(playbook);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
catch (error) {
|
|
248
|
-
// JSON parsing failed, return empty result
|
|
249
|
-
console.warn('Failed to parse LLM extraction response:', error instanceof Error ? error.message : error);
|
|
250
|
-
}
|
|
251
|
-
return result;
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Create a Playbook from LLM-extracted data
|
|
255
|
-
*/
|
|
256
|
-
createPlaybookFromLLMData(data, sourceTrajectory) {
|
|
257
|
-
const domain = sourceTrajectory?.task.domain ?? 'general';
|
|
258
|
-
const sourceIds = sourceTrajectory ? [sourceTrajectory.id] : [];
|
|
259
|
-
return createPlaybook({
|
|
260
|
-
name: data.name ?? `llm-extracted-${Date.now()}`,
|
|
261
|
-
applicability: {
|
|
262
|
-
situations: data.situations ?? [],
|
|
263
|
-
triggers: data.triggers ?? [],
|
|
264
|
-
antiPatterns: data.antiPatterns ?? [],
|
|
265
|
-
domains: [domain],
|
|
266
|
-
},
|
|
267
|
-
guidance: {
|
|
268
|
-
strategy: data.strategy ?? '',
|
|
269
|
-
tactics: data.tactics ?? [],
|
|
270
|
-
steps: data.steps ?? [],
|
|
271
|
-
},
|
|
272
|
-
verification: {
|
|
273
|
-
successIndicators: data.successIndicators ?? [],
|
|
274
|
-
failureIndicators: data.failureIndicators ?? [],
|
|
275
|
-
},
|
|
276
|
-
evolution: {
|
|
277
|
-
version: '1.0.0',
|
|
278
|
-
createdFrom: sourceIds,
|
|
279
|
-
failures: [],
|
|
280
|
-
refinements: [],
|
|
281
|
-
successCount: 1,
|
|
282
|
-
failureCount: 0,
|
|
283
|
-
},
|
|
284
|
-
confidence: 0.6, // Start with moderate confidence for LLM-extracted
|
|
285
|
-
complexity: this.parseComplexity(data.complexity),
|
|
286
|
-
estimatedEffort: data.estimatedEffort ?? 5,
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Parse complexity string
|
|
291
|
-
*/
|
|
292
|
-
parseComplexity(complexity) {
|
|
293
|
-
const normalized = complexity?.toLowerCase();
|
|
294
|
-
if (normalized === 'simple')
|
|
295
|
-
return 'simple';
|
|
296
|
-
if (normalized === 'complex')
|
|
297
|
-
return 'complex';
|
|
298
|
-
return 'moderate';
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Check if two playbooks are similar
|
|
302
|
-
*/
|
|
303
|
-
isSimilarPlaybook(a, b) {
|
|
304
|
-
// Simple name-based check
|
|
305
|
-
if (a.name === b.name)
|
|
306
|
-
return true;
|
|
307
|
-
// Check situation overlap
|
|
308
|
-
const aSituations = new Set(a.applicability.situations);
|
|
309
|
-
const bSituations = b.applicability.situations;
|
|
310
|
-
const overlap = bSituations.filter((s) => aSituations.has(s)).length;
|
|
311
|
-
return overlap >= Math.min(aSituations.size, bSituations.length) * 0.8;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Generate a refinement for an existing playbook based on a new trajectory
|
|
315
|
-
*/
|
|
316
|
-
async generateRefinement(playbook, trajectory, context) {
|
|
317
|
-
const prompt = `Given this existing playbook and a new trajectory, generate a refinement.
|
|
318
|
-
|
|
319
|
-
## Existing Playbook: ${playbook.name}
|
|
320
|
-
Strategy: ${playbook.guidance.strategy}
|
|
321
|
-
Steps: ${playbook.guidance.steps?.join(' → ') ?? 'None'}
|
|
322
|
-
|
|
323
|
-
## New Trajectory
|
|
324
|
-
Task: ${trajectory.task.description}
|
|
325
|
-
Steps taken: ${trajectory.steps.map((s) => s.action).join(' → ')}
|
|
326
|
-
Outcome: ${trajectory.outcome.success ? 'SUCCESS' : 'FAILURE'}
|
|
327
|
-
|
|
328
|
-
## Context
|
|
329
|
-
${context}
|
|
330
|
-
|
|
331
|
-
## Instructions
|
|
332
|
-
Generate a refinement that captures what's new or different in this trajectory.
|
|
333
|
-
|
|
334
|
-
Respond in JSON:
|
|
335
|
-
{
|
|
336
|
-
"context": "when/where this refinement applies",
|
|
337
|
-
"addition": "what to add/change in the approach"
|
|
338
|
-
}`;
|
|
339
|
-
const response = await this.provider.complete([{ role: 'user', content: prompt }], {
|
|
340
|
-
temperature: this.config.temperature,
|
|
341
|
-
maxTokens: 500,
|
|
342
|
-
});
|
|
343
|
-
try {
|
|
344
|
-
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
345
|
-
if (jsonMatch) {
|
|
346
|
-
const parsed = JSON.parse(jsonMatch[0]);
|
|
347
|
-
return {
|
|
348
|
-
context: parsed.context ?? context,
|
|
349
|
-
addition: parsed.addition ?? '',
|
|
350
|
-
source: trajectory.outcome.success ? 'success' : 'failure',
|
|
351
|
-
addedAt: new Date(),
|
|
352
|
-
};
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
catch {
|
|
356
|
-
// Fall back to simple refinement
|
|
357
|
-
}
|
|
358
|
-
return {
|
|
359
|
-
context,
|
|
360
|
-
addition: `Additional approach from trajectory: ${trajectory.steps[0]?.action ?? ''}`,
|
|
361
|
-
source: trajectory.outcome.success ? 'success' : 'failure',
|
|
362
|
-
addedAt: new Date(),
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* Create an LLM-based playbook extractor
|
|
368
|
-
*/
|
|
369
|
-
export function createLLMExtractor(provider, config) {
|
|
370
|
-
return new LLMPlaybookExtractor(provider, config);
|
|
371
|
-
}
|
|
372
|
-
//# sourceMappingURL=llm-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/learning/llm-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAkBnD,MAAM,cAAc,GAAuB;IACzC,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;IACf,iBAAiB,EAAE,IAAI;IACvB,aAAa,EAAE,CAAC,EAAE,0CAA0C;CAC7D,CAAC;AAeF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IACvB,QAAQ,CAAc;IACtB,MAAM,CAAqB;IAEnC,YAAY,QAAqB,EAAE,MAAoC;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,YAA0B,EAC1B,QAA0B,EAC1B,oBAAgC,EAAE;QAElC,oDAAoD;QACpD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,OAAO,CACL,QAAQ,EAAE,OAAO;gBACjB,QAAQ,CAAC,YAAY;gBACrB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAC5C,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QAED,wCAAwC;QACxC,MAAM,UAAU,GAAwB;YACtC,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;SAChB,CAAC;QAEF,0CAA0C;QAC1C,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,UAAU,CAC7C,CAAC;gBAEF,IAAI,CAAC,QAAQ;oBAAE,SAAS;gBAExB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CACnD,UAAU,EACV,QAAQ,EACR,iBAAiB,CAClB,CAAC;gBAEF,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC/C,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC7C,UAAU,EACV,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/D,iBAAiB,CAClB,CAAC;YAEF,mDAAmD;YACnD,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAC3C,CAAC;gBACF,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;YAED,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,2BAA2B,CACvC,UAAsB,EACtB,QAAwB,EACxB,iBAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAC7C,UAAU,EACV,QAAQ,EACR,iBAAiB,CAClB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3C,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC;YACE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;SACjC,CACF,CAAC;QAEF,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,YAA0B,EAC1B,QAA0B,EAC1B,iBAA6B;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAC5C,YAAY,EACZ,QAAQ,EACR,iBAAiB,CAClB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3C,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC;YACE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC;SACrC,CACF,CAAC;QAEF,OAAO,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACK,2BAA2B,CACjC,UAAsB,EACtB,QAAwB,EACxB,iBAA6B;QAE7B,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ;aACnC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,OAAO,IAAI;gBACT,CAAC,CAAC,YAAY,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC7F,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,qBAAqB,GAAG,iBAAiB;aAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;aAC/D,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;;;EAGT,UAAU,CAAC,IAAI,CAAC,WAAW;UACnB,UAAU,CAAC,IAAI,CAAC,MAAM;;;EAG9B,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG5I,YAAY;;;EAGZ,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,YAAY;;EAElI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;mJA2BqH,CAAC;IAClJ,CAAC;IAED;;OAEG;IACK,0BAA0B,CAChC,YAA0B,EAC1B,QAA0B,EAC1B,iBAA6B;QAE7B,MAAM,mBAAmB,GAAG,YAAY;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC1C,OAAO,kBAAkB,CAAC,GAAG,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,WAAW;UAChB,CAAC,CAAC,IAAI,CAAC,MAAM;SACd,CAAC,CAAC,KAAK,CAAC,MAAM;aACV,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;WAC/D,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,qBAAqB,GAAG,iBAAiB;aAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aACzB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;aACZ,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO;;;EAGT,mBAAmB;;EAEnB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;EAwB5B,CAAC;IACD,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,QAAgB,EAChB,gBAA6B;QAE7B,MAAM,MAAM,GAAwB;YAClC,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,QAAQ;SACtB,CAAC;QAEF,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAIrC,CAAC;YAEF,kCAAkC;YAClC,IAAI,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAC7C,MAAM,CAAC,QAAQ,EACf,gBAAgB,CACjB,CAAC;gBACF,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;YAED,6BAA6B;YAC7B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC7C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;oBACtB,UAAU,EAAE,MAAM,CAAC,cAAc;oBACjC,UAAU,EAAE;wBACV,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,oBAAoB;wBAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE;wBACxC,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,IAAI,IAAI,EAAE;qBACpB;iBACF,CAAC,CAAC;YACL,CAAC;YAED,wBAAwB;YACxB,IAAI,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;oBACxD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2CAA2C;YAC3C,OAAO,CAAC,IAAI,CACV,0CAA0C,EAC1C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAC/C,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,yBAAyB,CAC/B,IAAqB,EACrB,gBAA6B;QAE7B,MAAM,MAAM,GAAG,gBAAgB,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC;QAC1D,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhE,OAAO,cAAc,CAAC;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,iBAAiB,IAAI,CAAC,GAAG,EAAE,EAAE;YAChD,aAAa,EAAE;gBACb,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE;gBACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;gBACrC,OAAO,EAAE,CAAC,MAAM,CAAC;aAClB;YACD,QAAQ,EAAE;gBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;aACxB;YACD,YAAY,EAAE;gBACZ,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,EAAE;gBAC/C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,IAAI,EAAE;aAChD;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;aAChB;YACD,UAAU,EAAE,GAAG,EAAE,mDAAmD;YACpE,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YACjD,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,UAAmB;QAEnB,MAAM,UAAU,GAAG,UAAU,EAAE,WAAW,EAAE,CAAC;QAC7C,IAAI,UAAU,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC7C,IAAI,UAAU,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,CAAW,EAAE,CAAW;QAChD,0BAA0B;QAC1B,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEnC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC;QAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAErE,OAAO,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CACtB,QAAkB,EAClB,UAAsB,EACtB,OAAe;QAEf,MAAM,MAAM,GAAG;;wBAEK,QAAQ,CAAC,IAAI;YACzB,QAAQ,CAAC,QAAQ,CAAC,QAAQ;SAC7B,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM;;;QAG/C,UAAU,CAAC,IAAI,CAAC,WAAW;eACpB,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;WACrD,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;;;EAG3D,OAAO;;;;;;;;;EASP,CAAC;QAEC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAC3C,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC;YACE,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,SAAS,EAAE,GAAG;SACf,CACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAChD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAGrC,CAAC;gBAEF,OAAO;oBACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;oBAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;oBAC/B,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAC1D,OAAO,EAAE,IAAI,IAAI,EAAE;iBACpB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;QAED,OAAO;YACL,OAAO;YACP,QAAQ,EAAE,wCAAwC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE;YACrF,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;YAC1D,OAAO,EAAE,IAAI,IAAI,EAAE;SACpB,CAAC;IACJ,CAAC;CACF;AAoBD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAqB,EACrB,MAAoC;IAEpC,OAAO,IAAI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LoopCoordinator — Coordinates instant (hot) and background (cold) learning
|
|
3
|
-
*
|
|
4
|
-
* Every trajectory flows through the InstantLoop immediately. The coordinator
|
|
5
|
-
* tracks a pending count and signals when the existing batch pipeline should
|
|
6
|
-
* run. It does NOT own the batch pipeline — Atlas does — but it provides the
|
|
7
|
-
* `shouldRunBatch()` check and accumulation count.
|
|
8
|
-
*/
|
|
9
|
-
import type { Trajectory } from '../types/index.js';
|
|
10
|
-
import type { SqlitePersistence } from '../persistence/index.js';
|
|
11
|
-
import { InstantLoop, type InstantLoopResult } from './instant-loop.js';
|
|
12
|
-
/**
|
|
13
|
-
* LoopCoordinator configuration
|
|
14
|
-
*/
|
|
15
|
-
export interface LoopCoordinatorConfig {
|
|
16
|
-
/** Trajectories needed before recommending a batch run (default: 10) */
|
|
17
|
-
batchThreshold?: number;
|
|
18
|
-
/** Log a warning if the instant loop exceeds this budget in ms (default: 200) */
|
|
19
|
-
maxInstantLatencyMs?: number;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* LoopCoordinator — hot + cold learning coordination
|
|
23
|
-
*/
|
|
24
|
-
export declare class LoopCoordinator {
|
|
25
|
-
private instantLoop;
|
|
26
|
-
private config;
|
|
27
|
-
private pendingCount;
|
|
28
|
-
private _onLatencyWarning;
|
|
29
|
-
private persistence?;
|
|
30
|
-
constructor(instantLoop: InstantLoop, config?: LoopCoordinatorConfig, persistence?: SqlitePersistence);
|
|
31
|
-
/**
|
|
32
|
-
* Called on every trajectory completion.
|
|
33
|
-
* Runs the instant loop and increments the pending batch count.
|
|
34
|
-
*/
|
|
35
|
-
onTrajectoryComplete(trajectory: Trajectory): Promise<InstantLoopResult>;
|
|
36
|
-
/**
|
|
37
|
-
* Check whether the batch pipeline should run.
|
|
38
|
-
*/
|
|
39
|
-
shouldRunBatch(): boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Reset the pending count (called after a batch run completes).
|
|
42
|
-
*/
|
|
43
|
-
resetPendingCount(): void;
|
|
44
|
-
/**
|
|
45
|
-
* Load persisted pending count. Call after persistence is initialized.
|
|
46
|
-
*/
|
|
47
|
-
loadPersistedState(): void;
|
|
48
|
-
/**
|
|
49
|
-
* Get the current pending trajectory count.
|
|
50
|
-
*/
|
|
51
|
-
getPendingCount(): number;
|
|
52
|
-
/**
|
|
53
|
-
* Register a callback for latency budget warnings.
|
|
54
|
-
*/
|
|
55
|
-
onLatencyWarning(callback: (durationMs: number) => void): void;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Create a LoopCoordinator
|
|
59
|
-
*/
|
|
60
|
-
export declare function createLoopCoordinator(instantLoop: InstantLoop, config?: LoopCoordinatorConfig, persistence?: SqlitePersistence): LoopCoordinator;
|
|
61
|
-
//# sourceMappingURL=loop-coordinator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop-coordinator.d.ts","sourceRoot":"","sources":["../../src/learning/loop-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,WAAW,CAAC,CAAoB;gBAGtC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,qBAAqB,EAC9B,WAAW,CAAC,EAAE,iBAAiB;IAkBjC;;;OAGG;IACG,oBAAoB,CACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,iBAAiB,CAAC;IAkB7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAQzB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAS1B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CAG/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,qBAAqB,EAC9B,WAAW,CAAC,EAAE,iBAAiB,GAC9B,eAAe,CAEjB"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LoopCoordinator — Coordinates instant (hot) and background (cold) learning
|
|
3
|
-
*
|
|
4
|
-
* Every trajectory flows through the InstantLoop immediately. The coordinator
|
|
5
|
-
* tracks a pending count and signals when the existing batch pipeline should
|
|
6
|
-
* run. It does NOT own the batch pipeline — Atlas does — but it provides the
|
|
7
|
-
* `shouldRunBatch()` check and accumulation count.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* LoopCoordinator — hot + cold learning coordination
|
|
11
|
-
*/
|
|
12
|
-
export class LoopCoordinator {
|
|
13
|
-
instantLoop;
|
|
14
|
-
config;
|
|
15
|
-
pendingCount = 0;
|
|
16
|
-
_onLatencyWarning = null;
|
|
17
|
-
persistence;
|
|
18
|
-
constructor(instantLoop, config, persistence) {
|
|
19
|
-
this.instantLoop = instantLoop;
|
|
20
|
-
this.config = {
|
|
21
|
-
batchThreshold: config?.batchThreshold ?? 10,
|
|
22
|
-
maxInstantLatencyMs: config?.maxInstantLatencyMs ?? 200,
|
|
23
|
-
};
|
|
24
|
-
this.persistence = persistence;
|
|
25
|
-
// Load persisted pending count
|
|
26
|
-
if (persistence?.isInitialized) {
|
|
27
|
-
const saved = persistence.getSystemState('loop_coordinator');
|
|
28
|
-
if (saved) {
|
|
29
|
-
this.pendingCount = saved.pendingCount;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Called on every trajectory completion.
|
|
35
|
-
* Runs the instant loop and increments the pending batch count.
|
|
36
|
-
*/
|
|
37
|
-
async onTrajectoryComplete(trajectory) {
|
|
38
|
-
const result = await this.instantLoop.process(trajectory);
|
|
39
|
-
this.pendingCount++;
|
|
40
|
-
if (this.persistence) {
|
|
41
|
-
this.persistence.setSystemState('loop_coordinator', { pendingCount: this.pendingCount });
|
|
42
|
-
}
|
|
43
|
-
// Warn if instant loop exceeded latency budget
|
|
44
|
-
if (result.durationMs > this.config.maxInstantLatencyMs) {
|
|
45
|
-
if (this._onLatencyWarning) {
|
|
46
|
-
this._onLatencyWarning(result.durationMs);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return result;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Check whether the batch pipeline should run.
|
|
53
|
-
*/
|
|
54
|
-
shouldRunBatch() {
|
|
55
|
-
return this.pendingCount >= this.config.batchThreshold;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Reset the pending count (called after a batch run completes).
|
|
59
|
-
*/
|
|
60
|
-
resetPendingCount() {
|
|
61
|
-
this.pendingCount = 0;
|
|
62
|
-
if (this.persistence) {
|
|
63
|
-
this.persistence.setSystemState('loop_coordinator', { pendingCount: 0 });
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Load persisted pending count. Call after persistence is initialized.
|
|
68
|
-
*/
|
|
69
|
-
loadPersistedState() {
|
|
70
|
-
if (this.persistence?.isInitialized) {
|
|
71
|
-
const saved = this.persistence.getSystemState('loop_coordinator');
|
|
72
|
-
if (saved) {
|
|
73
|
-
this.pendingCount = saved.pendingCount;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Get the current pending trajectory count.
|
|
79
|
-
*/
|
|
80
|
-
getPendingCount() {
|
|
81
|
-
return this.pendingCount;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Register a callback for latency budget warnings.
|
|
85
|
-
*/
|
|
86
|
-
onLatencyWarning(callback) {
|
|
87
|
-
this._onLatencyWarning = callback;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Create a LoopCoordinator
|
|
92
|
-
*/
|
|
93
|
-
export function createLoopCoordinator(instantLoop, config, persistence) {
|
|
94
|
-
return new LoopCoordinator(instantLoop, config, persistence);
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=loop-coordinator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loop-coordinator.js","sourceRoot":"","sources":["../../src/learning/loop-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH;;GAEG;AACH,MAAM,OAAO,eAAe;IAClB,WAAW,CAAc;IACzB,MAAM,CAAkC;IACxC,YAAY,GAAG,CAAC,CAAC;IACjB,iBAAiB,GAA0C,IAAI,CAAC;IAChE,WAAW,CAAqB;IAExC,YACE,WAAwB,EACxB,MAA8B,EAC9B,WAA+B;QAE/B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG;YACZ,cAAc,EAAE,MAAM,EAAE,cAAc,IAAI,EAAE;YAC5C,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,IAAI,GAAG;SACxD,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,+BAA+B;QAC/B,IAAI,WAAW,EAAE,aAAa,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,CAA2B,kBAAkB,CAAC,CAAC;YACvF,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CACxB,UAAsB;QAEtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,+CAA+C;QAC/C,IAAI,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;YACxD,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,IAAI,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAA2B,kBAAkB,CAAC,CAAC;YAC5F,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAsC;QACrD,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAwB,EACxB,MAA8B,EAC9B,WAA+B;IAE/B,OAAO,IAAI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# CLAUDE.md
|
|
2
|
-
|
|
3
|
-
## Project overview
|
|
4
|
-
|
|
5
|
-
`agent-workspace` is a TypeScript library for managing filesystem workspaces used by AI agents. It provides structured directory layouts, typed readers/writers (JSON, JSONL, Markdown with YAML frontmatter, raw text), and output validation with structured error collection.
|
|
6
|
-
|
|
7
|
-
## Commands
|
|
8
|
-
|
|
9
|
-
- `npm test` — run all tests (vitest)
|
|
10
|
-
- `npm run test:watch` — run tests in watch mode
|
|
11
|
-
- `npm run build` — build with tsup (outputs to `dist/`)
|
|
12
|
-
- `npm run typecheck` — type-check without emitting
|
|
13
|
-
|
|
14
|
-
## Architecture
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
src/
|
|
18
|
-
index.ts ← public API, re-exports everything
|
|
19
|
-
types.ts ← all shared types (Schema, OutputSpec, ValidationResult, etc.)
|
|
20
|
-
manager.ts ← WorkspaceManager: create, list, cleanup, pruneStale
|
|
21
|
-
handle.ts ← WorkspaceHandle: section-scoped I/O facade over readers/writers
|
|
22
|
-
validation.ts ← validateOutput: non-throwing batch output checker
|
|
23
|
-
readers/
|
|
24
|
-
json.ts ← readJson, readJsonl, readJsonDir
|
|
25
|
-
markdown.ts ← readMarkdown (with YAML frontmatter parsing via `yaml` package)
|
|
26
|
-
raw.ts ← readRaw, listFiles
|
|
27
|
-
writers/
|
|
28
|
-
json.ts ← writeJson, writeJsonl
|
|
29
|
-
markdown.ts ← writeMarkdown (with YAML frontmatter serialization)
|
|
30
|
-
raw.ts ← writeRaw, copyDir, symlink
|
|
31
|
-
|
|
32
|
-
tests/
|
|
33
|
-
readers.test.ts ← standalone reader function tests
|
|
34
|
-
writers.test.ts ← standalone writer function tests
|
|
35
|
-
handle.test.ts ← WorkspaceHandle round-trip and section tests
|
|
36
|
-
manager.test.ts ← WorkspaceManager lifecycle tests
|
|
37
|
-
validation.test.ts ← validateOutput tests
|
|
38
|
-
errors.test.ts ← comprehensive parse/validation error behavior tests
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
## Key design decisions
|
|
42
|
-
|
|
43
|
-
- **Two error strategies**: Reader functions **throw** on errors (for try/catch recovery). `validateOutput` **collects** errors into `{ valid, errors }` (for batch checking). Never mix these — readers always throw, validation never throws.
|
|
44
|
-
- **Schema interface**: `{ parse(data: unknown): T }` — deliberately minimal so it works with Zod, Joi, or any custom implementation. `parse` must throw on invalid data.
|
|
45
|
-
- **Section-scoped I/O**: `WorkspaceHandle` methods take a section name (`'input'`, `'output'`, `'resources'`, `'scratch'`, or custom) as the first argument. `handle.dir(section)` throws synchronously if the section is unknown.
|
|
46
|
-
- **Default dirs**: `input`, `output`, `resources`, `scratch` are always created. Additional dirs are specified at `manager.create()` time.
|
|
47
|
-
- **Workspace metadata**: Each workspace writes `.workspace.json` with `{ id, taskType, createdAt, dirs }`. The manager uses this to reconstruct handles when listing.
|
|
48
|
-
|
|
49
|
-
## Conventions
|
|
50
|
-
|
|
51
|
-
- ESM-first (`"type": "module"` in package.json), dual CJS/ESM output via tsup.
|
|
52
|
-
- All file path parameters in readers/writers are relative to the `dir` argument. Writers auto-create parent directories via `fs.mkdir({ recursive: true })`.
|
|
53
|
-
- Tests use temp directories (`os.tmpdir()` + `fs.mkdtemp`) and clean up in `afterEach`.
|
|
54
|
-
- No external dependencies except `yaml` for YAML parsing/serialization.
|
|
55
|
-
- TypeScript strict mode. Target ES2022.
|
|
56
|
-
|
|
57
|
-
## Error message contracts
|
|
58
|
-
|
|
59
|
-
Error messages are intentionally detailed to support agent re-prompting:
|
|
60
|
-
|
|
61
|
-
- `readJson` on bad JSON: native `JSON.parse` SyntaxError
|
|
62
|
-
- `readJson` schema failure: the schema's own error message (e.g., Zod's)
|
|
63
|
-
- `readJsonl` schema failure: `"JSONL validation failed at line N: <schema error>"`
|
|
64
|
-
- `handle.dir()` unknown section: `'Unknown section "X". Available: input, output, ...'`
|
|
65
|
-
- `validateOutput` errors: `{ path: string, message: string }` — path identifies the file, message describes the issue
|
|
66
|
-
|
|
67
|
-
## Testing
|
|
68
|
-
|
|
69
|
-
The test suite has 101 tests across 6 files. When adding new functionality:
|
|
70
|
-
|
|
71
|
-
- Add happy-path tests to the relevant existing test file (`readers.test.ts`, `handle.test.ts`, etc.)
|
|
72
|
-
- Add error/throw behavior tests to `errors.test.ts`
|
|
73
|
-
- All reader error paths must be tested: missing file, malformed content, schema rejection
|
|
74
|
-
- Validation tests must verify that errors are **collected** (not thrown) and include both `path` and `message`
|