cognitive-core 0.1.2 → 0.2.0
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.md +233 -0
- package/README.md +370 -54
- package/dist/atlas.d.ts +10 -10
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +79 -48
- package/dist/atlas.js.map +1 -1
- package/dist/bin/cli-utils.d.ts +37 -0
- package/dist/bin/cli-utils.d.ts.map +1 -0
- package/dist/bin/cli-utils.js +176 -0
- package/dist/bin/cli-utils.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +2 -12
- package/dist/bin/cognitive-core.d.ts.map +1 -1
- package/dist/bin/cognitive-core.js +76 -351
- package/dist/bin/cognitive-core.js.map +1 -1
- package/dist/bin/commands/kb.d.ts +6 -0
- package/dist/bin/commands/kb.d.ts.map +1 -0
- package/dist/bin/commands/kb.js +240 -0
- package/dist/bin/commands/kb.js.map +1 -0
- package/dist/bin/commands/learn.d.ts +6 -0
- package/dist/bin/commands/learn.d.ts.map +1 -0
- package/dist/bin/commands/learn.js +91 -0
- package/dist/bin/commands/learn.js.map +1 -0
- package/dist/bin/commands/legacy.d.ts +12 -0
- package/dist/bin/commands/legacy.d.ts.map +1 -0
- package/dist/bin/commands/legacy.js +142 -0
- package/dist/bin/commands/legacy.js.map +1 -0
- package/dist/bin/commands/run.d.ts +3 -0
- package/dist/bin/commands/run.d.ts.map +1 -0
- package/dist/bin/commands/run.js +99 -0
- package/dist/bin/commands/run.js.map +1 -0
- package/dist/bin/commands/sessions.d.ts +9 -0
- package/dist/bin/commands/sessions.d.ts.map +1 -0
- package/dist/bin/commands/sessions.js +183 -0
- package/dist/bin/commands/sessions.js.map +1 -0
- package/dist/bin/commands/skills.d.ts +6 -0
- package/dist/bin/commands/skills.d.ts.map +1 -0
- package/dist/bin/commands/skills.js +135 -0
- package/dist/bin/commands/skills.js.map +1 -0
- package/dist/embeddings/index.d.ts +1 -0
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/inverted-index.d.ts +47 -0
- package/dist/embeddings/inverted-index.d.ts.map +1 -0
- package/dist/embeddings/inverted-index.js +122 -0
- package/dist/embeddings/inverted-index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +3 -1
- package/dist/embeddings/manager.d.ts.map +1 -1
- package/dist/embeddings/manager.js +12 -7
- package/dist/embeddings/manager.js.map +1 -1
- package/dist/embeddings/vector-store.d.ts +7 -3
- package/dist/embeddings/vector-store.d.ts.map +1 -1
- package/dist/embeddings/vector-store.js +22 -6
- package/dist/embeddings/vector-store.js.map +1 -1
- package/dist/factory.d.ts +11 -12
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +20 -7
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -5
- package/dist/index.js.map +1 -1
- package/dist/learning/analyzer.d.ts.map +1 -1
- package/dist/learning/analyzer.js +17 -35
- package/dist/learning/analyzer.js.map +1 -1
- package/dist/learning/energy-evaluator.d.ts +128 -0
- package/dist/learning/energy-evaluator.d.ts.map +1 -0
- package/dist/learning/energy-evaluator.js +175 -0
- package/dist/learning/energy-evaluator.js.map +1 -0
- package/dist/learning/healing-orchestrator.d.ts +182 -0
- package/dist/learning/healing-orchestrator.d.ts.map +1 -0
- package/dist/learning/healing-orchestrator.js +250 -0
- package/dist/learning/healing-orchestrator.js.map +1 -0
- package/dist/learning/index.d.ts +7 -2
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +13 -2
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/instant-loop.d.ts +87 -0
- package/dist/learning/instant-loop.d.ts.map +1 -0
- package/dist/learning/instant-loop.js +264 -0
- package/dist/learning/instant-loop.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 +141 -0
- package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
- package/dist/learning/maintenance-scheduler.js +186 -0
- package/dist/learning/maintenance-scheduler.js.map +1 -0
- package/dist/learning/meta-learner.d.ts.map +1 -1
- package/dist/learning/meta-learner.js +4 -21
- package/dist/learning/meta-learner.js.map +1 -1
- package/dist/learning/pipeline.d.ts +31 -4
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +64 -12
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/reflexion-generator.d.ts +64 -0
- package/dist/learning/reflexion-generator.d.ts.map +1 -0
- package/dist/learning/reflexion-generator.js +194 -0
- package/dist/learning/reflexion-generator.js.map +1 -0
- package/dist/learning/trajectory-sources/entire.d.ts +8 -5
- package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/entire.js +13 -6
- package/dist/learning/trajectory-sources/entire.js.map +1 -1
- package/dist/learning/trajectory-sources/index.d.ts +1 -1
- package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/index.js +1 -1
- package/dist/learning/trajectory-sources/index.js.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
- package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.js +2 -2
- package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +281 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -0
- package/dist/learning/unified-pipeline.js +637 -0
- package/dist/learning/unified-pipeline.js.map +1 -0
- package/dist/memory/candidate-retrieval.d.ts +43 -0
- package/dist/memory/candidate-retrieval.d.ts.map +1 -0
- package/dist/memory/candidate-retrieval.js +41 -0
- package/dist/memory/candidate-retrieval.js.map +1 -0
- package/dist/memory/causal-store.d.ts +97 -0
- package/dist/memory/causal-store.d.ts.map +1 -0
- package/dist/memory/causal-store.js +209 -0
- package/dist/memory/causal-store.js.map +1 -0
- package/dist/memory/coherence.d.ts +71 -0
- package/dist/memory/coherence.d.ts.map +1 -0
- package/dist/memory/coherence.js +176 -0
- package/dist/memory/coherence.js.map +1 -0
- package/dist/memory/experience.d.ts +39 -6
- package/dist/memory/experience.d.ts.map +1 -1
- package/dist/memory/experience.js +193 -49
- package/dist/memory/experience.js.map +1 -1
- package/dist/memory/index.d.ts +7 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +12 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/knowledge-bank.d.ts +14 -0
- package/dist/memory/knowledge-bank.d.ts.map +1 -1
- package/dist/memory/knowledge-bank.js +45 -0
- package/dist/memory/knowledge-bank.js.map +1 -1
- package/dist/memory/meta.d.ts +7 -8
- package/dist/memory/meta.d.ts.map +1 -1
- package/dist/memory/meta.js +73 -79
- package/dist/memory/meta.js.map +1 -1
- package/dist/memory/playbook.d.ts +26 -9
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +198 -74
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/reasoning-bank.d.ts +130 -0
- package/dist/memory/reasoning-bank.d.ts.map +1 -0
- package/dist/memory/reasoning-bank.js +342 -0
- package/dist/memory/reasoning-bank.js.map +1 -0
- package/dist/memory/reflexion.d.ts +59 -0
- package/dist/memory/reflexion.d.ts.map +1 -0
- package/dist/memory/reflexion.js +96 -0
- package/dist/memory/reflexion.js.map +1 -0
- package/dist/memory/system.d.ts +7 -2
- package/dist/memory/system.d.ts.map +1 -1
- package/dist/memory/system.js +19 -7
- package/dist/memory/system.js.map +1 -1
- package/dist/memory/temporal-compressor.d.ts +126 -0
- package/dist/memory/temporal-compressor.d.ts.map +1 -0
- package/dist/memory/temporal-compressor.js +335 -0
- package/dist/memory/temporal-compressor.js.map +1 -0
- package/dist/persistence/index.d.ts +11 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +11 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/migrator.d.ts +40 -0
- package/dist/persistence/migrator.d.ts.map +1 -0
- package/dist/persistence/migrator.js +238 -0
- package/dist/persistence/migrator.js.map +1 -0
- package/dist/persistence/serializers.d.ts +45 -0
- package/dist/persistence/serializers.d.ts.map +1 -0
- package/dist/persistence/serializers.js +80 -0
- package/dist/persistence/serializers.js.map +1 -0
- package/dist/persistence/sqlite-persistence.d.ts +228 -0
- package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
- package/dist/persistence/sqlite-persistence.js +588 -0
- package/dist/persistence/sqlite-persistence.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +10 -12
- package/dist/runtime/flows/learning.d.ts.map +1 -1
- package/dist/runtime/flows/learning.js +10 -23
- package/dist/runtime/flows/learning.js.map +1 -1
- package/dist/search/index.d.ts +1 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +2 -0
- package/dist/search/index.js.map +1 -1
- package/dist/search/moe-gate.d.ts +124 -0
- package/dist/search/moe-gate.d.ts.map +1 -0
- package/dist/search/moe-gate.js +234 -0
- package/dist/search/moe-gate.js.map +1 -0
- package/dist/search/router.d.ts +32 -2
- package/dist/search/router.d.ts.map +1 -1
- package/dist/search/router.js +87 -4
- package/dist/search/router.js.map +1 -1
- package/dist/session-bank/git-reader.d.ts +9 -4
- package/dist/session-bank/git-reader.d.ts.map +1 -1
- package/dist/session-bank/git-reader.js +22 -15
- package/dist/session-bank/git-reader.js.map +1 -1
- package/dist/session-bank/index.d.ts +2 -2
- package/dist/session-bank/index.d.ts.map +1 -1
- package/dist/session-bank/index.js +2 -2
- package/dist/session-bank/index.js.map +1 -1
- package/dist/session-bank/parser.d.ts +16 -5
- package/dist/session-bank/parser.d.ts.map +1 -1
- package/dist/session-bank/parser.js +187 -80
- package/dist/session-bank/parser.js.map +1 -1
- package/dist/session-bank/session-bank.d.ts +5 -0
- package/dist/session-bank/session-bank.d.ts.map +1 -1
- package/dist/session-bank/session-bank.js +30 -9
- package/dist/session-bank/session-bank.js.map +1 -1
- package/dist/session-bank/types.d.ts +4 -1
- package/dist/session-bank/types.d.ts.map +1 -1
- package/dist/session-bank/types.js +3 -3
- package/dist/session-bank/types.js.map +1 -1
- package/dist/surfacing/skill-publisher.d.ts.map +1 -1
- package/dist/surfacing/skill-publisher.js +15 -43
- 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 +13 -21
- package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
- package/dist/types/config.d.ts +100 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +27 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- 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/types/memory.d.ts +52 -0
- package/dist/types/memory.d.ts.map +1 -1
- package/dist/types/memory.js +13 -0
- package/dist/types/memory.js.map +1 -1
- package/dist/types/playbook.d.ts +4 -0
- package/dist/types/playbook.d.ts.map +1 -1
- package/dist/types/playbook.js.map +1 -1
- package/dist/utils/error-classifier.d.ts +30 -0
- package/dist/utils/error-classifier.d.ts.map +1 -0
- package/dist/utils/error-classifier.js +85 -0
- package/dist/utils/error-classifier.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/partitioned-store.d.ts +93 -0
- package/dist/utils/partitioned-store.d.ts.map +1 -0
- package/dist/utils/partitioned-store.js +251 -0
- package/dist/utils/partitioned-store.js.map +1 -0
- package/dist/utils/trajectory-helpers.d.ts +39 -0
- package/dist/utils/trajectory-helpers.d.ts.map +1 -0
- package/dist/utils/trajectory-helpers.js +57 -0
- package/dist/utils/trajectory-helpers.js.map +1 -0
- package/dist/workspace/runner.d.ts +3 -4
- package/dist/workspace/runner.d.ts.map +1 -1
- package/dist/workspace/runner.js.map +1 -1
- package/dist/workspace/types.d.ts +9 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +6 -4
- package/references/sessionlog/.husky/pre-commit +1 -0
- package/references/sessionlog/.lintstagedrc.json +4 -0
- package/references/sessionlog/.prettierignore +4 -0
- package/references/sessionlog/.prettierrc.json +11 -0
- package/references/sessionlog/LICENSE +21 -0
- package/references/sessionlog/README.md +453 -0
- package/references/sessionlog/eslint.config.js +58 -0
- package/references/sessionlog/package-lock.json +3672 -0
- package/references/sessionlog/package.json +65 -0
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
- package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
- package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
- package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
- package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
- package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
- package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
- package/references/sessionlog/src/__tests__/types.test.ts +166 -0
- package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
- package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
- package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
- package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
- package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
- package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
- package/references/sessionlog/src/agent/registry.ts +143 -0
- package/references/sessionlog/src/agent/session-types.ts +113 -0
- package/references/sessionlog/src/agent/types.ts +220 -0
- package/references/sessionlog/src/cli.ts +597 -0
- package/references/sessionlog/src/commands/clean.ts +133 -0
- package/references/sessionlog/src/commands/disable.ts +84 -0
- package/references/sessionlog/src/commands/doctor.ts +145 -0
- package/references/sessionlog/src/commands/enable.ts +202 -0
- package/references/sessionlog/src/commands/explain.ts +261 -0
- package/references/sessionlog/src/commands/reset.ts +105 -0
- package/references/sessionlog/src/commands/resume.ts +180 -0
- package/references/sessionlog/src/commands/rewind.ts +195 -0
- package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
- package/references/sessionlog/src/commands/status.ts +172 -0
- package/references/sessionlog/src/config.ts +165 -0
- package/references/sessionlog/src/events/event-log.ts +126 -0
- package/references/sessionlog/src/git-operations.ts +558 -0
- package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
- package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
- package/references/sessionlog/src/index.ts +650 -0
- package/references/sessionlog/src/security/redaction.ts +283 -0
- package/references/sessionlog/src/session/state-machine.ts +452 -0
- package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
- package/references/sessionlog/src/store/native-store.ts +173 -0
- package/references/sessionlog/src/store/provider-types.ts +99 -0
- package/references/sessionlog/src/store/session-store.ts +266 -0
- package/references/sessionlog/src/strategy/attribution.ts +296 -0
- package/references/sessionlog/src/strategy/common.ts +207 -0
- package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
- package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
- package/references/sessionlog/src/strategy/types.ts +279 -0
- package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
- package/references/sessionlog/src/summarize/summarize.ts +432 -0
- package/references/sessionlog/src/types.ts +508 -0
- package/references/sessionlog/src/utils/chunk-files.ts +49 -0
- package/references/sessionlog/src/utils/commit-message.ts +65 -0
- package/references/sessionlog/src/utils/detect-agent.ts +36 -0
- package/references/sessionlog/src/utils/hook-managers.ts +125 -0
- package/references/sessionlog/src/utils/ide-tags.ts +32 -0
- package/references/sessionlog/src/utils/paths.ts +79 -0
- package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
- package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
- package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
- package/references/sessionlog/src/utils/string-utils.ts +46 -0
- package/references/sessionlog/src/utils/todo-extract.ts +188 -0
- package/references/sessionlog/src/utils/trailers.ts +187 -0
- package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
- package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
- package/references/sessionlog/src/utils/tree-ops.ts +219 -0
- package/references/sessionlog/src/utils/tty.ts +72 -0
- package/references/sessionlog/src/utils/validation.ts +65 -0
- package/references/sessionlog/src/utils/worktree.ts +58 -0
- package/references/sessionlog/src/wire-types.ts +59 -0
- package/references/sessionlog/templates/setup-env.sh +153 -0
- package/references/sessionlog/tsconfig.json +18 -0
- package/references/sessionlog/vitest.config.ts +12 -0
- package/references/skill-tree/.sudocode/issues.jsonl +8 -0
- package/references/skill-tree/.sudocode/specs.jsonl +2 -0
- package/references/skill-tree/CLAUDE.md +56 -80
- package/references/skill-tree/README.md +188 -140
- package/references/skill-tree/examples/basic-usage.ts +95 -121
- package/references/skill-tree/package-lock.json +369 -26
- package/references/skill-tree/package.json +1 -1
- package/src/atlas.ts +97 -67
- package/src/bin/cli-utils.ts +220 -0
- package/src/bin/cognitive-core.ts +84 -392
- package/src/bin/commands/kb.ts +266 -0
- package/src/bin/commands/learn.ts +100 -0
- package/src/bin/commands/legacy.ts +182 -0
- package/src/bin/commands/run.ts +113 -0
- package/src/bin/commands/sessions.ts +221 -0
- package/src/bin/commands/skills.ts +146 -0
- package/src/embeddings/index.ts +3 -0
- package/src/embeddings/inverted-index.ts +134 -0
- package/src/embeddings/manager.ts +13 -8
- package/src/embeddings/vector-store.ts +21 -9
- package/src/factory.ts +33 -16
- package/src/index.ts +109 -9
- package/src/learning/analyzer.ts +21 -37
- package/src/learning/energy-evaluator.ts +282 -0
- package/src/learning/healing-orchestrator.ts +383 -0
- package/src/learning/index.ts +65 -9
- package/src/learning/instant-loop.ts +357 -0
- package/src/learning/maintenance-scheduler.ts +271 -0
- package/src/learning/meta-learner.ts +5 -23
- package/src/learning/reflexion-generator.ts +273 -0
- package/src/learning/trajectory-sources/entire.ts +24 -13
- package/src/learning/trajectory-sources/index.ts +2 -2
- package/src/learning/trajectory-sources/pipeline.ts +5 -5
- package/src/learning/unified-pipeline.ts +921 -0
- package/src/memory/candidate-retrieval.ts +71 -0
- package/src/memory/causal-store.ts +273 -0
- package/src/memory/coherence.ts +252 -0
- package/src/memory/experience.ts +217 -50
- package/src/memory/index.ts +43 -0
- package/src/memory/knowledge-bank.ts +57 -0
- package/src/memory/meta.ts +78 -96
- package/src/memory/playbook.ts +239 -75
- package/src/memory/reasoning-bank.ts +458 -0
- package/src/memory/reflexion.ts +122 -0
- package/src/memory/system.ts +21 -5
- package/src/memory/temporal-compressor.ts +409 -0
- package/src/persistence/index.ts +37 -0
- package/src/persistence/migrator.ts +298 -0
- package/src/persistence/serializers.ts +79 -0
- package/src/persistence/sqlite-persistence.ts +925 -0
- package/src/runtime/flows/learning.ts +25 -42
- package/src/search/index.ts +10 -0
- package/src/search/moe-gate.ts +304 -0
- package/src/search/router.ts +111 -4
- package/src/session-bank/git-reader.ts +29 -19
- package/src/session-bank/index.ts +4 -2
- package/src/session-bank/parser.ts +280 -98
- package/src/session-bank/session-bank.ts +33 -12
- package/src/session-bank/types.ts +8 -5
- package/src/surfacing/skill-publisher.ts +17 -49
- package/src/surfacing/sqlite-storage-adapter.ts +16 -32
- package/src/types/config.ts +30 -0
- package/src/types/index.ts +3 -0
- package/src/types/memory.ts +30 -0
- package/src/types/playbook.ts +4 -0
- package/src/utils/error-classifier.ts +113 -0
- package/src/utils/index.ts +18 -0
- package/src/utils/partitioned-store.ts +299 -0
- package/src/utils/trajectory-helpers.ts +79 -0
- package/src/workspace/runner.ts +3 -3
- package/src/workspace/types.ts +10 -2
- package/tests/embeddings/inverted-index.test.ts +138 -0
- package/tests/feature-toggles.test.ts +275 -0
- package/tests/gap-fixes.test.ts +17 -4
- package/tests/integration/cli-e2e.test.ts +621 -0
- package/tests/integration/e2e.test.ts +6 -5
- package/tests/integration/entire-e2e.test.ts +314 -125
- package/tests/integration/persistence-e2e.test.ts +741 -0
- package/tests/integration/phase-e2e.test.ts +1143 -0
- package/tests/integration/session-bank.test.ts +20 -14
- package/tests/integration/sessionlog-e2e.test.ts +329 -0
- package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
- package/tests/learning/analyzer.test.ts +1 -1
- package/tests/learning/energy-evaluator.test.ts +180 -0
- package/tests/learning/entire-trajectory-source.test.ts +25 -25
- package/tests/learning/healing-orchestrator.test.ts +269 -0
- package/tests/learning/instant-loop.test.ts +243 -0
- package/tests/learning/maintenance-scheduler.test.ts +191 -0
- package/tests/learning/reflexion-generator.test.ts +411 -0
- package/tests/learning/trajectory-sources.test.ts +12 -4
- package/tests/learning/unified-pipeline.test.ts +322 -0
- package/tests/mcp/playbook-server.test.ts +6 -1
- package/tests/memory/causal-store.test.ts +276 -0
- package/tests/memory/coherence.test.ts +232 -0
- package/tests/memory/experience.test.ts +8 -3
- package/tests/memory/playbook.test.ts +307 -1
- package/tests/memory/provenance.test.ts +11 -2
- package/tests/memory/reasoning-bank.test.ts +239 -0
- package/tests/memory/reflexion.test.ts +166 -0
- package/tests/memory/skill-exporter.test.ts +6 -1
- package/tests/memory/system.test.ts +6 -1
- package/tests/memory/temporal-compressor.test.ts +318 -0
- package/tests/persistence/migrator.test.ts +1009 -0
- package/tests/persistence/sqlite-persistence.test.ts +635 -0
- package/tests/runtime/agent-manager.test.ts +6 -1
- package/tests/runtime/delegate.test.ts +6 -1
- package/tests/search/moe-gate.test.ts +250 -0
- package/tests/search/refinement-loop.test.ts +11 -2
- package/tests/search/router.test.ts +81 -2
- package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
- package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
- package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
- package/tests/session-bank/git-reader.test.ts +13 -13
- package/tests/session-bank/parser.test.ts +135 -3
- package/tests/session-bank/session-bank.test.ts +1 -1
- package/tests/surfacing/skill-library.test.ts +6 -1
- package/tests/surfacing/skill-publisher.test.ts +24 -58
- package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
- package/tests/utils/partitioned-store.test.ts +230 -0
- package/tests/workspace/full-flow.test.ts +10 -4
- package/tests/workspace/runner.test.ts +10 -4
- package/docs/DESIGN-workspace-migration.md +0 -1079
- package/docs/PLAN-agentic-workspace-implementation.md +0 -717
- package/docs/PLAN-graph-migration.md +0 -299
- package/docs/PLAN-session-bank-implementation.md +0 -474
- package/src/learning/pipeline.ts +0 -323
- package/tests/learning/pipeline.test.ts +0 -176
package/src/atlas.ts
CHANGED
|
@@ -10,11 +10,11 @@ import type { KnowledgeMatch } from './types/knowledge.js';
|
|
|
10
10
|
import { createDefaultConfig } from './types/index.js';
|
|
11
11
|
import { MemorySystem, createMemorySystem, type TeamExperience } from './memory/index.js';
|
|
12
12
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
type
|
|
16
|
-
type
|
|
17
|
-
} from './learning/
|
|
13
|
+
UnifiedLearningPipeline,
|
|
14
|
+
createUnifiedPipeline,
|
|
15
|
+
type ImmediateResult,
|
|
16
|
+
type UnifiedBatchResult,
|
|
17
|
+
} from './learning/unified-pipeline.js';
|
|
18
18
|
import {
|
|
19
19
|
TeamLearningPipeline,
|
|
20
20
|
createTeamLearningPipeline,
|
|
@@ -40,14 +40,8 @@ import {
|
|
|
40
40
|
PlaybookUsageInference,
|
|
41
41
|
createUsageInference,
|
|
42
42
|
} from './learning/usage-inference.js';
|
|
43
|
-
import {
|
|
44
|
-
|
|
45
|
-
createMetaLearner,
|
|
46
|
-
} from './learning/meta-learner.js';
|
|
47
|
-
import {
|
|
48
|
-
LearningEffectivenessTracker,
|
|
49
|
-
createEffectivenessTracker,
|
|
50
|
-
} from './learning/effectiveness.js';
|
|
43
|
+
import type { MetaLearner } from './learning/meta-learner.js';
|
|
44
|
+
import type { LearningEffectivenessTracker } from './learning/effectiveness.js';
|
|
51
45
|
import { TaskRouter, createRouter, type RoutingDecision } from './search/router.js';
|
|
52
46
|
import { DirectSolver, createSolver } from './search/solver.js';
|
|
53
47
|
import {
|
|
@@ -64,6 +58,7 @@ import {
|
|
|
64
58
|
} from './surfacing/skill-library.js';
|
|
65
59
|
import { SqliteStorageAdapter } from './surfacing/sqlite-storage-adapter.js';
|
|
66
60
|
import { join } from 'node:path';
|
|
61
|
+
import { SqlitePersistence, createSqlitePersistence } from './persistence/index.js';
|
|
67
62
|
import {
|
|
68
63
|
PlaybookMCPServer,
|
|
69
64
|
createPlaybookMCPServer,
|
|
@@ -160,7 +155,7 @@ export interface SolveResult {
|
|
|
160
155
|
*/
|
|
161
156
|
export class Atlas {
|
|
162
157
|
private memory: MemorySystem;
|
|
163
|
-
private
|
|
158
|
+
private unifiedPipeline: UnifiedLearningPipeline;
|
|
164
159
|
private router: TaskRouter;
|
|
165
160
|
private solver: DirectSolver | null = null;
|
|
166
161
|
private agentManager: AgentManager | null = null;
|
|
@@ -176,10 +171,6 @@ export class Atlas {
|
|
|
176
171
|
private usageInference: PlaybookUsageInference | null = null;
|
|
177
172
|
private mcpServer: PlaybookMCPServer | null = null;
|
|
178
173
|
|
|
179
|
-
// Meta-learning and effectiveness
|
|
180
|
-
private metaLearner: MetaLearner | null = null;
|
|
181
|
-
private effectivenessTracker: LearningEffectivenessTracker | null = null;
|
|
182
|
-
|
|
183
174
|
// Agentic workspace components
|
|
184
175
|
private taskRunner: AgenticTaskRunner | null = null;
|
|
185
176
|
private workspaceManager: WorkspaceManager | null = null;
|
|
@@ -190,21 +181,50 @@ export class Atlas {
|
|
|
190
181
|
private teamMetaLearner: TeamMetaLearner | null = null;
|
|
191
182
|
private teamSkillLibrary: TeamSkillLibrary | null = null;
|
|
192
183
|
|
|
184
|
+
// Unified SQLite persistence
|
|
185
|
+
private persistence: SqlitePersistence;
|
|
186
|
+
|
|
193
187
|
constructor(config?: Partial<AtlasConfig>) {
|
|
194
188
|
this.config = createDefaultConfig(config);
|
|
195
189
|
|
|
190
|
+
// Create unified SQLite persistence
|
|
191
|
+
this.persistence = createSqlitePersistence({
|
|
192
|
+
baseDir: this.config.storage.baseDir,
|
|
193
|
+
dbName: this.config.storage.dbName,
|
|
194
|
+
});
|
|
195
|
+
|
|
196
196
|
// Initialize memory system (with optional knowledge bank)
|
|
197
197
|
this.memory = createMemorySystem(
|
|
198
|
+
this.persistence,
|
|
198
199
|
this.config.storage.baseDir,
|
|
199
200
|
this.config.memory,
|
|
200
|
-
this.config.knowledgeBank.enabled
|
|
201
|
+
this.config.knowledgeBank.enabled
|
|
202
|
+
? { ...this.config.knowledgeBank, coherenceChecking: this.config.features.coherenceChecking }
|
|
203
|
+
: undefined
|
|
201
204
|
);
|
|
202
205
|
|
|
203
|
-
// Initialize learning pipeline
|
|
204
|
-
this.
|
|
206
|
+
// Initialize unified learning pipeline (replaces LearningPipeline + InstantLoop + LoopCoordinator)
|
|
207
|
+
this.unifiedPipeline = createUnifiedPipeline(this.memory, {
|
|
208
|
+
instant: {
|
|
209
|
+
enableReflexion: this.config.features.reflexion,
|
|
210
|
+
enableCausalExtraction: this.config.features.causalExtraction,
|
|
211
|
+
},
|
|
212
|
+
batch: {
|
|
213
|
+
learning: this.config.learning,
|
|
214
|
+
energy: {
|
|
215
|
+
countThreshold: this.config.learning.minTrajectories ?? 10,
|
|
216
|
+
},
|
|
217
|
+
},
|
|
218
|
+
features: {
|
|
219
|
+
temporalCompression: this.config.features.temporalCompression,
|
|
220
|
+
reasoningBank: this.config.features.reasoningBank,
|
|
221
|
+
reflexion: this.config.features.reflexion,
|
|
222
|
+
causalExtraction: this.config.features.causalExtraction,
|
|
223
|
+
},
|
|
224
|
+
}, this.persistence);
|
|
205
225
|
|
|
206
|
-
// Initialize router
|
|
207
|
-
this.router = createRouter(this.memory, this.config.router);
|
|
226
|
+
// Initialize router (with persistence for MoEGate)
|
|
227
|
+
this.router = createRouter(this.memory, this.config.router, undefined, this.persistence);
|
|
208
228
|
|
|
209
229
|
// Initialize team learning pipeline and router if enabled
|
|
210
230
|
if (this.config.teamLearning.enabled) {
|
|
@@ -232,8 +252,23 @@ export class Atlas {
|
|
|
232
252
|
* Initialize Atlas (load persisted data)
|
|
233
253
|
*/
|
|
234
254
|
async init(): Promise<void> {
|
|
255
|
+
await this.persistence.init();
|
|
256
|
+
|
|
257
|
+
// Load persisted state for components created before persistence.init()
|
|
258
|
+
this.router.loadPersistedState();
|
|
259
|
+
this.unifiedPipeline.loadPersistedState();
|
|
260
|
+
|
|
235
261
|
await this.memory.init();
|
|
236
262
|
|
|
263
|
+
// Initialize unified pipeline async components (meta-learner, effectiveness tracker, energy seed)
|
|
264
|
+
await this.unifiedPipeline.init();
|
|
265
|
+
|
|
266
|
+
// Connect meta-learner to router
|
|
267
|
+
const metaLearner = this.unifiedPipeline.getMetaLearner();
|
|
268
|
+
if (metaLearner) {
|
|
269
|
+
this.router.setMetaLearner(metaLearner);
|
|
270
|
+
}
|
|
271
|
+
|
|
237
272
|
// Initialize playbook-based components if playbooks are available
|
|
238
273
|
if (this.memory.playbooks) {
|
|
239
274
|
this.skillLibrary = createSkillLibrary(
|
|
@@ -253,18 +288,6 @@ export class Atlas {
|
|
|
253
288
|
// Refresh skill tiers on init
|
|
254
289
|
await this.skillLibrary.refreshTiers();
|
|
255
290
|
}
|
|
256
|
-
|
|
257
|
-
// Initialize meta-learner and connect to router
|
|
258
|
-
if (this.memory.meta) {
|
|
259
|
-
this.metaLearner = createMetaLearner(this.memory.meta);
|
|
260
|
-
this.router.setMetaLearner(this.metaLearner);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Initialize effectiveness tracker
|
|
264
|
-
this.effectivenessTracker = createEffectivenessTracker(
|
|
265
|
-
this.config.storage.baseDir
|
|
266
|
-
);
|
|
267
|
-
await this.effectivenessTracker.init();
|
|
268
291
|
}
|
|
269
292
|
|
|
270
293
|
/**
|
|
@@ -303,12 +326,12 @@ export class Atlas {
|
|
|
303
326
|
this.workspaceManager,
|
|
304
327
|
this.agentManager,
|
|
305
328
|
this.memory,
|
|
306
|
-
this.
|
|
329
|
+
this.unifiedPipeline,
|
|
307
330
|
this.config.agenticTasks
|
|
308
331
|
);
|
|
309
332
|
|
|
310
|
-
// Connect task runner to
|
|
311
|
-
this.
|
|
333
|
+
// Connect task runner to unified pipeline for workspace-based analysis
|
|
334
|
+
this.unifiedPipeline.setTaskRunner(this.taskRunner);
|
|
312
335
|
|
|
313
336
|
// Connect task runner to team learning pipeline
|
|
314
337
|
if (this.teamLearning) {
|
|
@@ -481,12 +504,14 @@ export class Atlas {
|
|
|
481
504
|
}
|
|
482
505
|
|
|
483
506
|
// Generate meta-reflection (records observation + periodically generates strategies)
|
|
484
|
-
|
|
507
|
+
const metaLearner = this.unifiedPipeline.getMetaLearner();
|
|
508
|
+
if (metaLearner) {
|
|
485
509
|
await this.reflectOnExecution(result.trajectory, routing);
|
|
486
510
|
}
|
|
487
511
|
|
|
488
512
|
// Annotate trajectory for effectiveness tracking
|
|
489
|
-
|
|
513
|
+
const effectivenessTracker = this.unifiedPipeline.getEffectivenessTracker();
|
|
514
|
+
if (effectivenessTracker) {
|
|
490
515
|
const appliedPlaybookIds = (result.playbookUsage ?? [])
|
|
491
516
|
.filter(u => u.wasUsed)
|
|
492
517
|
.map(u => u.playbookId);
|
|
@@ -495,7 +520,7 @@ export class Atlas {
|
|
|
495
520
|
e => e.experience.id
|
|
496
521
|
);
|
|
497
522
|
|
|
498
|
-
await
|
|
523
|
+
await effectivenessTracker.annotate(
|
|
499
524
|
result.trajectory,
|
|
500
525
|
routing.memoryContext.playbooks,
|
|
501
526
|
surfacedExperienceIds,
|
|
@@ -503,15 +528,10 @@ export class Atlas {
|
|
|
503
528
|
);
|
|
504
529
|
}
|
|
505
530
|
|
|
506
|
-
// Process the trajectory
|
|
507
|
-
await this.
|
|
531
|
+
// Process the trajectory through unified pipeline (immediate + batch if energy triggers)
|
|
532
|
+
await this.unifiedPipeline.processTrajectory(result.trajectory);
|
|
508
533
|
this.trajectoriesProcessed++;
|
|
509
534
|
|
|
510
|
-
// Run batch learning if ready
|
|
511
|
-
if (this.learning.shouldRunBatch()) {
|
|
512
|
-
await this.runBatchLearning();
|
|
513
|
-
}
|
|
514
|
-
|
|
515
535
|
return result;
|
|
516
536
|
}
|
|
517
537
|
|
|
@@ -588,10 +608,12 @@ export class Atlas {
|
|
|
588
608
|
}
|
|
589
609
|
|
|
590
610
|
/**
|
|
591
|
-
* Process an external trajectory (from another agent)
|
|
611
|
+
* Process an external trajectory (from another agent).
|
|
612
|
+
* Runs the instant loop first (hot path), then feeds into the batch pipeline.
|
|
592
613
|
*/
|
|
593
|
-
async processTrajectory(trajectory: Trajectory): Promise<
|
|
594
|
-
|
|
614
|
+
async processTrajectory(trajectory: Trajectory): Promise<ImmediateResult> {
|
|
615
|
+
// Unified pipeline handles immediate + batch (if energy triggers)
|
|
616
|
+
const result = await this.unifiedPipeline.processTrajectory(trajectory);
|
|
595
617
|
this.trajectoriesProcessed++;
|
|
596
618
|
return result;
|
|
597
619
|
}
|
|
@@ -763,8 +785,8 @@ export class Atlas {
|
|
|
763
785
|
/**
|
|
764
786
|
* Run batch learning explicitly
|
|
765
787
|
*/
|
|
766
|
-
async runBatchLearning(): Promise<
|
|
767
|
-
return this.
|
|
788
|
+
async runBatchLearning(): Promise<UnifiedBatchResult> {
|
|
789
|
+
return this.unifiedPipeline.runBatch();
|
|
768
790
|
}
|
|
769
791
|
|
|
770
792
|
/**
|
|
@@ -790,7 +812,7 @@ export class Atlas {
|
|
|
790
812
|
memory: memoryStats,
|
|
791
813
|
learning: {
|
|
792
814
|
trajectoriesProcessed: this.trajectoriesProcessed,
|
|
793
|
-
pendingTrajectories: this.
|
|
815
|
+
pendingTrajectories: this.unifiedPipeline.getAccumulatedCount(),
|
|
794
816
|
teamTrajectoriesProcessed: this.teamTrajectoriesProcessed,
|
|
795
817
|
},
|
|
796
818
|
};
|
|
@@ -845,8 +867,8 @@ export class Atlas {
|
|
|
845
867
|
/**
|
|
846
868
|
* Get the learning pipeline for direct access
|
|
847
869
|
*/
|
|
848
|
-
getLearning():
|
|
849
|
-
return this.
|
|
870
|
+
getLearning(): UnifiedLearningPipeline {
|
|
871
|
+
return this.unifiedPipeline;
|
|
850
872
|
}
|
|
851
873
|
|
|
852
874
|
/**
|
|
@@ -903,7 +925,7 @@ export class Atlas {
|
|
|
903
925
|
*/
|
|
904
926
|
updateConfig(config: Partial<AtlasConfig>): void {
|
|
905
927
|
if (config.learning) {
|
|
906
|
-
this.
|
|
928
|
+
this.unifiedPipeline.updateConfig(config.learning);
|
|
907
929
|
}
|
|
908
930
|
if (config.router) {
|
|
909
931
|
this.router.updateConfig(config.router);
|
|
@@ -949,7 +971,8 @@ export class Atlas {
|
|
|
949
971
|
trajectory: Trajectory,
|
|
950
972
|
routing: RoutingDecision,
|
|
951
973
|
): Promise<void> {
|
|
952
|
-
|
|
974
|
+
const metaLearnerRef = this.unifiedPipeline.getMetaLearner();
|
|
975
|
+
if (!metaLearnerRef) return;
|
|
953
976
|
|
|
954
977
|
const routingInfo = {
|
|
955
978
|
strategy: routing.strategy,
|
|
@@ -970,7 +993,7 @@ export class Atlas {
|
|
|
970
993
|
// Bridge template output into MetaLearner storage
|
|
971
994
|
const playbookIds = playbookMatches.map(p => p.playbook.id);
|
|
972
995
|
const actualEffort = trajectory.llmCalls ?? trajectory.steps.length;
|
|
973
|
-
await
|
|
996
|
+
await metaLearnerRef.recordFromReflection(
|
|
974
997
|
result.output,
|
|
975
998
|
trajectory.id,
|
|
976
999
|
routingInfo,
|
|
@@ -987,7 +1010,7 @@ export class Atlas {
|
|
|
987
1010
|
}
|
|
988
1011
|
|
|
989
1012
|
// Heuristic fallback
|
|
990
|
-
await
|
|
1013
|
+
await metaLearnerRef.generateReflection(
|
|
991
1014
|
trajectory,
|
|
992
1015
|
routingInfo,
|
|
993
1016
|
playbookMatches,
|
|
@@ -998,23 +1021,23 @@ export class Atlas {
|
|
|
998
1021
|
* Get the meta learner for direct access
|
|
999
1022
|
*/
|
|
1000
1023
|
getMetaLearner(): MetaLearner | null {
|
|
1001
|
-
return this.
|
|
1024
|
+
return this.unifiedPipeline.getMetaLearner();
|
|
1002
1025
|
}
|
|
1003
1026
|
|
|
1004
1027
|
/**
|
|
1005
1028
|
* Get the effectiveness tracker for direct access
|
|
1006
1029
|
*/
|
|
1007
1030
|
getEffectivenessTracker(): LearningEffectivenessTracker | null {
|
|
1008
|
-
return this.
|
|
1031
|
+
return this.unifiedPipeline.getEffectivenessTracker();
|
|
1009
1032
|
}
|
|
1010
1033
|
|
|
1011
1034
|
async close(): Promise<void> {
|
|
1012
1035
|
// Stop MCP server if running
|
|
1013
1036
|
await this.stopMCPServer();
|
|
1014
1037
|
|
|
1015
|
-
// Flush
|
|
1016
|
-
if (this.
|
|
1017
|
-
await this.
|
|
1038
|
+
// Flush unified pipeline
|
|
1039
|
+
if (this.unifiedPipeline.getAccumulatedCount() > 0) {
|
|
1040
|
+
await this.unifiedPipeline.runBatch();
|
|
1018
1041
|
}
|
|
1019
1042
|
|
|
1020
1043
|
// Flush team learning pipeline
|
|
@@ -1022,9 +1045,13 @@ export class Atlas {
|
|
|
1022
1045
|
await this.teamLearning.runBatchLearning();
|
|
1023
1046
|
}
|
|
1024
1047
|
|
|
1048
|
+
// Flush MoE gate state before closing persistence
|
|
1049
|
+
this.router.persistGateState();
|
|
1050
|
+
|
|
1025
1051
|
// Close effectiveness tracker
|
|
1026
|
-
|
|
1027
|
-
|
|
1052
|
+
const tracker = this.unifiedPipeline.getEffectivenessTracker();
|
|
1053
|
+
if (tracker) {
|
|
1054
|
+
await tracker.close();
|
|
1028
1055
|
}
|
|
1029
1056
|
|
|
1030
1057
|
// Close skill-tree storage
|
|
@@ -1034,6 +1061,9 @@ export class Atlas {
|
|
|
1034
1061
|
|
|
1035
1062
|
// Close memory system
|
|
1036
1063
|
await this.memory.close();
|
|
1064
|
+
|
|
1065
|
+
// Close SQLite persistence
|
|
1066
|
+
this.persistence.close();
|
|
1037
1067
|
}
|
|
1038
1068
|
}
|
|
1039
1069
|
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI shared utilities — types, arg parser, Atlas lifecycle, output helpers.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import { Atlas, createAtlas } from '../atlas.js';
|
|
8
|
+
import type { KnowledgeBank } from '../memory/knowledge-bank.js';
|
|
9
|
+
import type { SkillLibrary } from '../surfacing/skill-library.js';
|
|
10
|
+
import type { Playbook, AtlasConfig } from '../types/index.js';
|
|
11
|
+
|
|
12
|
+
// ─── Types ───────────────────────────────────────────────────────────
|
|
13
|
+
|
|
14
|
+
export interface CLIOptions {
|
|
15
|
+
dir?: string;
|
|
16
|
+
domain?: string;
|
|
17
|
+
limit?: number;
|
|
18
|
+
format?: 'json' | 'text';
|
|
19
|
+
type?: string;
|
|
20
|
+
tier?: string;
|
|
21
|
+
agent?: string;
|
|
22
|
+
since?: string;
|
|
23
|
+
before?: string;
|
|
24
|
+
branch?: string;
|
|
25
|
+
interval?: number;
|
|
26
|
+
repo?: string;
|
|
27
|
+
once?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface ParsedArgs {
|
|
31
|
+
group: string;
|
|
32
|
+
command: string;
|
|
33
|
+
positional: string[];
|
|
34
|
+
options: CLIOptions;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const COMMAND_GROUPS = new Set(['kb', 'sessions', 'learn', 'skills', 'run']);
|
|
38
|
+
|
|
39
|
+
// ─── Arg Parser ──────────────────────────────────────────────────────
|
|
40
|
+
|
|
41
|
+
export function parseArgs(args: string[]): ParsedArgs {
|
|
42
|
+
const options: CLIOptions = {};
|
|
43
|
+
const positional: string[] = [];
|
|
44
|
+
|
|
45
|
+
for (let i = 0; i < args.length; i++) {
|
|
46
|
+
const arg = args[i];
|
|
47
|
+
|
|
48
|
+
if (arg === '--dir' && args[i + 1]) {
|
|
49
|
+
options.dir = args[++i];
|
|
50
|
+
} else if (arg === '--domain' && args[i + 1]) {
|
|
51
|
+
options.domain = args[++i];
|
|
52
|
+
} else if (arg === '--limit' && args[i + 1]) {
|
|
53
|
+
options.limit = parseInt(args[++i], 10);
|
|
54
|
+
} else if (arg === '--format' && args[i + 1]) {
|
|
55
|
+
options.format = args[++i] as 'json' | 'text';
|
|
56
|
+
} else if (arg === '--json') {
|
|
57
|
+
options.format = 'json';
|
|
58
|
+
} else if (arg === '--type' && args[i + 1]) {
|
|
59
|
+
options.type = args[++i];
|
|
60
|
+
} else if (arg === '--tier' && args[i + 1]) {
|
|
61
|
+
options.tier = args[++i];
|
|
62
|
+
} else if (arg === '--agent' && args[i + 1]) {
|
|
63
|
+
options.agent = args[++i];
|
|
64
|
+
} else if (arg === '--since' && args[i + 1]) {
|
|
65
|
+
options.since = args[++i];
|
|
66
|
+
} else if (arg === '--before' && args[i + 1]) {
|
|
67
|
+
options.before = args[++i];
|
|
68
|
+
} else if (arg === '--branch' && args[i + 1]) {
|
|
69
|
+
options.branch = args[++i];
|
|
70
|
+
} else if (arg === '--interval' && args[i + 1]) {
|
|
71
|
+
options.interval = parseInt(args[++i], 10);
|
|
72
|
+
} else if (arg === '--repo' && args[i + 1]) {
|
|
73
|
+
options.repo = args[++i];
|
|
74
|
+
} else if (arg === '--once') {
|
|
75
|
+
options.once = true;
|
|
76
|
+
} else if (!arg.startsWith('-')) {
|
|
77
|
+
positional.push(arg);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Two-level routing: first positional may be a command group
|
|
82
|
+
const first = positional[0] ?? '';
|
|
83
|
+
|
|
84
|
+
if (COMMAND_GROUPS.has(first)) {
|
|
85
|
+
return {
|
|
86
|
+
group: first,
|
|
87
|
+
command: positional[1] ?? '',
|
|
88
|
+
positional: positional.slice(2),
|
|
89
|
+
options,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Legacy commands — group is empty, first positional is the command
|
|
94
|
+
return {
|
|
95
|
+
group: '',
|
|
96
|
+
command: first,
|
|
97
|
+
positional: positional.slice(1),
|
|
98
|
+
options,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// ─── Storage Dir ─────────────────────────────────────────────────────
|
|
103
|
+
|
|
104
|
+
export function resolveStorageDir(): string {
|
|
105
|
+
if (process.env.COGNITIVE_CORE_HOME) return process.env.COGNITIVE_CORE_HOME;
|
|
106
|
+
const swarmDir = path.join(process.cwd(), '.swarm', 'cognitive-core');
|
|
107
|
+
if (existsSync(swarmDir)) return swarmDir;
|
|
108
|
+
return path.join(process.cwd(), '.cognitive-core');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// ─── Atlas Lifecycle ─────────────────────────────────────────────────
|
|
112
|
+
|
|
113
|
+
export async function withAtlas<T>(
|
|
114
|
+
options: CLIOptions,
|
|
115
|
+
fn: (atlas: Atlas) => Promise<T>,
|
|
116
|
+
): Promise<T> {
|
|
117
|
+
const atlas = createAtlas({
|
|
118
|
+
storage: { baseDir: options.dir || resolveStorageDir() },
|
|
119
|
+
knowledgeBank: { enabled: true },
|
|
120
|
+
} as Partial<AtlasConfig>);
|
|
121
|
+
try {
|
|
122
|
+
await atlas.init();
|
|
123
|
+
return await fn(atlas);
|
|
124
|
+
} finally {
|
|
125
|
+
await atlas.close();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// ─── Subsystem Guards ────────────────────────────────────────────────
|
|
130
|
+
|
|
131
|
+
export function requireKnowledgeBank(atlas: Atlas): KnowledgeBank {
|
|
132
|
+
const kb = atlas.getKnowledgeBank();
|
|
133
|
+
if (!kb) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
'Knowledge bank is not enabled. Ensure knowledgeBank.enabled is true in config.',
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
return kb;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export function requireSkillLibrary(atlas: Atlas): SkillLibrary {
|
|
142
|
+
const lib = atlas.getSkillLibrary();
|
|
143
|
+
if (!lib) {
|
|
144
|
+
throw new Error(
|
|
145
|
+
'Skill library is not available. Initialize Atlas first.',
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
return lib;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// ─── Output Helpers ──────────────────────────────────────────────────
|
|
152
|
+
|
|
153
|
+
export function outputJson(data: unknown): void {
|
|
154
|
+
console.log(JSON.stringify(data, null, 2));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export function outputError(error: unknown, options: CLIOptions): void {
|
|
158
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
159
|
+
if (options.format === 'json') {
|
|
160
|
+
console.log(JSON.stringify({ error: message }));
|
|
161
|
+
} else {
|
|
162
|
+
console.error(`Error: ${message}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// ─── Playbook Formatting ─────────────────────────────────────────────
|
|
167
|
+
|
|
168
|
+
export function formatPlaybook(playbook: Playbook, verbose = false): string {
|
|
169
|
+
const lines: string[] = [];
|
|
170
|
+
const { successCount, failureCount } = playbook.evolution;
|
|
171
|
+
const totalUses = successCount + failureCount;
|
|
172
|
+
const successRate = totalUses > 0 ? Math.round((successCount / totalUses) * 100) : 0;
|
|
173
|
+
|
|
174
|
+
lines.push(`## ${playbook.name}`);
|
|
175
|
+
lines.push(`ID: ${playbook.id}`);
|
|
176
|
+
lines.push(`Confidence: ${Math.round(playbook.confidence * 100)}%`);
|
|
177
|
+
lines.push(`Success Rate: ${successRate}% (${totalUses} uses)`);
|
|
178
|
+
lines.push(`Domains: ${playbook.applicability.domains.join(', ')}`);
|
|
179
|
+
lines.push('');
|
|
180
|
+
lines.push(`**Strategy**: ${playbook.guidance.strategy}`);
|
|
181
|
+
|
|
182
|
+
if (playbook.guidance.tactics.length > 0) {
|
|
183
|
+
lines.push('**Tactics**:');
|
|
184
|
+
for (const tactic of playbook.guidance.tactics) {
|
|
185
|
+
lines.push(` - ${tactic}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (verbose) {
|
|
190
|
+
if (playbook.guidance.steps && playbook.guidance.steps.length > 0) {
|
|
191
|
+
lines.push('**Steps**:');
|
|
192
|
+
for (let i = 0; i < playbook.guidance.steps.length; i++) {
|
|
193
|
+
lines.push(` ${i + 1}. ${playbook.guidance.steps[i]}`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
if (playbook.applicability.situations.length > 0) {
|
|
198
|
+
lines.push('**When to use**:');
|
|
199
|
+
for (const sit of playbook.applicability.situations) {
|
|
200
|
+
lines.push(` - ${sit}`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (playbook.applicability.antiPatterns.length > 0) {
|
|
205
|
+
lines.push('**Avoid when**:');
|
|
206
|
+
for (const anti of playbook.applicability.antiPatterns) {
|
|
207
|
+
lines.push(` - ${anti}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (playbook.verification.successIndicators.length > 0) {
|
|
212
|
+
lines.push('**Success indicators**:');
|
|
213
|
+
for (const ind of playbook.verification.successIndicators) {
|
|
214
|
+
lines.push(` - ${ind}`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return lines.join('\n');
|
|
220
|
+
}
|