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/README.md
CHANGED
|
@@ -9,9 +9,13 @@ A TypeScript learning system for AI agents. Records how agents solve problems, e
|
|
|
9
9
|
- [Quick Start](#quick-start)
|
|
10
10
|
- [How It Works](#how-it-works)
|
|
11
11
|
- [Knowledge Bank](#knowledge-bank)
|
|
12
|
+
- [Learning Pipeline](#learning-pipeline)
|
|
13
|
+
- [Three-Speed Pipeline Detail](#three-speed-learning-pipeline)
|
|
12
14
|
- [CLI](#cli)
|
|
13
15
|
- [Agent Backends](#agent-backends)
|
|
14
16
|
- [Skill Library](#skill-library)
|
|
17
|
+
- [Session Bank](#session-bank)
|
|
18
|
+
- [Workspace Templates](#workspace-templates)
|
|
15
19
|
- [Configuration](#configuration)
|
|
16
20
|
- [Core Types](#core-types)
|
|
17
21
|
- [Research References](#research-references)
|
|
@@ -27,8 +31,11 @@ cognitive-core gives agents persistent, structured memory:
|
|
|
27
31
|
1. **Trajectories** record what the agent did (ReAct-style thought/action/observation steps)
|
|
28
32
|
2. **Playbooks** distill trajectories into reusable guidance (strategy, tactics, verification criteria)
|
|
29
33
|
3. **Knowledge Bank** extracts and organizes factual knowledge — what agents learn about tools, libraries, and patterns
|
|
30
|
-
4. **Routing** matches incoming tasks to relevant playbooks before the agent starts working
|
|
34
|
+
4. **Routing** matches incoming tasks to relevant playbooks before the agent starts working, using a learned MoE gating function
|
|
31
35
|
5. **Meta-learning** tracks which playbooks helped and adjusts routing over time
|
|
36
|
+
6. **Three-speed learning** — immediate per-trajectory updates (<200ms), energy-triggered batch extraction, and circadian-gated maintenance — all managed by a single `UnifiedLearningPipeline`
|
|
37
|
+
7. **Temporal compression** — experiences flow through Hot/Warm/Cold/Evicted tiers based on access frequency, keeping memory bounded
|
|
38
|
+
8. **Unified persistence** — all system state lives in a single SQLite database with WAL mode, including learned MoE routing weights, experience clusters, and playbook version history that survive restarts
|
|
32
39
|
|
|
33
40
|
The result: agents that get measurably better at recurring problem types without fine-tuning or prompt engineering.
|
|
34
41
|
|
|
@@ -38,7 +45,7 @@ The result: agents that get measurably better at recurring problem types without
|
|
|
38
45
|
npm install cognitive-core
|
|
39
46
|
```
|
|
40
47
|
|
|
41
|
-
Requires Node.js
|
|
48
|
+
Requires Node.js 22+.
|
|
42
49
|
|
|
43
50
|
## Quick Start
|
|
44
51
|
|
|
@@ -98,7 +105,9 @@ const trajectory = createTrajectory({
|
|
|
98
105
|
});
|
|
99
106
|
|
|
100
107
|
const result = await atlas.processTrajectory(trajectory);
|
|
101
|
-
|
|
108
|
+
// result.instantLoop.experienceId — stored experience
|
|
109
|
+
// result.batchTriggered — whether batch learning was auto-triggered
|
|
110
|
+
// result.maintenanceTriggered — whether maintenance cycle ran
|
|
102
111
|
|
|
103
112
|
await atlas.close();
|
|
104
113
|
```
|
|
@@ -126,40 +135,148 @@ Every call to `atlas.solve(task)` runs through this pipeline:
|
|
|
126
135
|
|
|
127
136
|
```mermaid
|
|
128
137
|
flowchart TD
|
|
129
|
-
Task[Task arrives] --> Router[TaskRouter]
|
|
138
|
+
Task[Task arrives] --> Router[TaskRouter + MoEGate]
|
|
130
139
|
|
|
131
140
|
Router -->|queries| Memory[MemorySystem]
|
|
132
141
|
Memory --> Exp[ExperienceMemory]
|
|
133
142
|
Memory --> PB[PlaybookLibrary]
|
|
134
143
|
Memory --> KB[KnowledgeBank]
|
|
135
144
|
Memory --> Meta[MetaMemory]
|
|
145
|
+
Memory --> RB[ReasoningBank]
|
|
146
|
+
Memory --> CS[CausalStore]
|
|
136
147
|
|
|
137
148
|
Router --> Decision{RoutingDecision}
|
|
138
149
|
|
|
139
|
-
Decision -->
|
|
140
|
-
|
|
150
|
+
Decision --> Skills[SkillLibrary + KnowledgeBank surfacing]
|
|
151
|
+
Skills -->|injects playbooks + knowledge| Agent[AgentManager]
|
|
152
|
+
Agent --> Backend[Backend]
|
|
141
153
|
Backend -->|returns trajectory| Session[AgentSession]
|
|
142
154
|
|
|
143
155
|
Session --> Check{Succeeded?}
|
|
144
|
-
Check -->|Yes|
|
|
156
|
+
Check -->|Yes| PostExec[Post-execution]
|
|
145
157
|
Check -->|No| Refine{Retry?}
|
|
146
158
|
Refine -->|Yes, max 3x| Agent
|
|
147
|
-
Refine -->|No|
|
|
159
|
+
Refine -->|No| PostExec
|
|
160
|
+
|
|
161
|
+
PostExec --> Usage[PlaybookUsageInference]
|
|
162
|
+
PostExec --> MetaReflect[MetaLearner reflection]
|
|
163
|
+
PostExec --> Effective[EffectivenessTracker annotate]
|
|
164
|
+
|
|
165
|
+
PostExec --> Pipeline[UnifiedLearningPipeline]
|
|
166
|
+
|
|
167
|
+
Pipeline --> Immediate[Speed 1: Immediate]
|
|
168
|
+
Immediate --> Store[Store experience]
|
|
169
|
+
Immediate --> Bump[Bump playbook confidence]
|
|
170
|
+
Immediate --> QuickK[Extract knowledge notes]
|
|
171
|
+
Immediate --> Causal[Extract causal edges]
|
|
172
|
+
Immediate --> Reflexion[Generate reflexion episode]
|
|
173
|
+
|
|
174
|
+
Pipeline --> Energy{EnergyEvaluator}
|
|
175
|
+
Energy -->|threshold reached| Batch[Speed 2: Batch]
|
|
176
|
+
Energy -->|below threshold| Done[Done]
|
|
177
|
+
Batch --> Extract[PlaybookExtractor]
|
|
178
|
+
Batch --> DeepK[Batch knowledge extraction]
|
|
179
|
+
Batch --> Compress[TemporalCompressor]
|
|
180
|
+
Batch --> Cluster[ReasoningBank re-cluster]
|
|
181
|
+
Batch --> Prune[ExperienceMemory prune]
|
|
182
|
+
|
|
183
|
+
Batch --> MaintCheck{Maintenance due?}
|
|
184
|
+
MaintCheck -->|Yes| Maint[Speed 3: Maintenance]
|
|
185
|
+
MaintCheck -->|No| Done
|
|
186
|
+
Maint --> Heal[HealingOrchestrator]
|
|
187
|
+
Maint --> Defrag[Knowledge defrag]
|
|
188
|
+
Maint --> MetaStrat[Meta-strategy generation]
|
|
189
|
+
Maint --> Done
|
|
190
|
+
|
|
191
|
+
Done -.->|next task| Router
|
|
192
|
+
```
|
|
148
193
|
|
|
149
|
-
|
|
150
|
-
Learn --> Extract[PlaybookExtractor]
|
|
151
|
-
Learn --> KnowExtract[KnowledgeExtractor]
|
|
152
|
-
Learn --> Usage[UsageInference]
|
|
153
|
-
Learn --> MetaLearn[MetaLearner]
|
|
194
|
+
### Post-execution subsystems
|
|
154
195
|
|
|
155
|
-
|
|
156
|
-
Extract --> Updated
|
|
157
|
-
KnowExtract --> Updated
|
|
158
|
-
Usage --> Updated
|
|
159
|
-
MetaLearn --> Updated
|
|
196
|
+
After every `solve()` call, three subsystems run synchronously on the trajectory before it enters the learning pipeline. These require the `RoutingDecision` and injected playbook context, so they **only run via `solve()`** — not via `processTrajectory()`.
|
|
160
197
|
|
|
161
|
-
|
|
162
|
-
|
|
198
|
+
| Subsystem | What it does |
|
|
199
|
+
|-----------|--------------|
|
|
200
|
+
| **PlaybookUsageInference** | Infers which injected playbooks were actually used by the agent. Records outcomes to SkillLibrary for tier management. |
|
|
201
|
+
| **MetaLearner** | Generates a meta-reflection on routing/retrieval effectiveness. Stores observations and periodically generates meta-strategies. |
|
|
202
|
+
| **EffectivenessTracker** | Annotates the trajectory with which playbooks were surfaced vs. applied and which experiences were retrieved. |
|
|
203
|
+
|
|
204
|
+
All three use workspace templates (LLM-assisted) when an `AgenticTaskRunner` is set, with heuristic fallback otherwise.
|
|
205
|
+
|
|
206
|
+
### Three-speed learning pipeline
|
|
207
|
+
|
|
208
|
+
All learning is managed by the `UnifiedLearningPipeline`, which consolidates InstantLoop, batch extraction, energy-based triggering, maintenance scheduling, and healing into a single orchestrator.
|
|
209
|
+
|
|
210
|
+
#### Speed 1: Immediate (<200ms, no LLM)
|
|
211
|
+
|
|
212
|
+
Fires on **every trajectory**. The InstantLoop performs lightweight, synchronous updates:
|
|
213
|
+
|
|
214
|
+
| Operation | Target |
|
|
215
|
+
|-----------|--------|
|
|
216
|
+
| Store experience | ExperienceMemory |
|
|
217
|
+
| Bump matched playbook confidence | PlaybookLibrary |
|
|
218
|
+
| Extract lightweight knowledge notes | KnowledgeBank |
|
|
219
|
+
| Extract causal edges | CausalStore |
|
|
220
|
+
| Generate reflexion episode | ReflexionMemory |
|
|
221
|
+
|
|
222
|
+
After the instant loop, the trajectory is analyzed (heuristic or workspace template) and accumulated for batch.
|
|
223
|
+
|
|
224
|
+
#### Speed 2: Batch (energy-triggered)
|
|
225
|
+
|
|
226
|
+
Triggered by the `EnergyEvaluator` — not just a count threshold. The evaluator computes an energy score from signals:
|
|
227
|
+
|
|
228
|
+
| Signal | Weight | Trigger condition |
|
|
229
|
+
|--------|--------|-------------------|
|
|
230
|
+
| Count threshold | — | `pendingCount >= countThreshold` (default: `minTrajectories`) |
|
|
231
|
+
| Contradiction detected | 0.4 | Coherence checker flagged a conflict |
|
|
232
|
+
| Novel domain | 0.3 | First trajectory in an unseen domain |
|
|
233
|
+
| High error rate | 0.2 | Recent failure rate exceeds 60% |
|
|
234
|
+
| Pattern shift | 0.1 | External signal (e.g., from caller) |
|
|
235
|
+
|
|
236
|
+
Batch triggers when `pendingCount >= countThreshold` **or** `energy >= energyThreshold (0.7)`, subject to a debounce interval (`minIntervalMs`, default: 30s).
|
|
237
|
+
|
|
238
|
+
When batch runs:
|
|
239
|
+
|
|
240
|
+
1. **Playbook extraction** — extract new playbooks from trajectory clusters, refine existing ones
|
|
241
|
+
2. **Batch knowledge extraction** — richer than instant-loop extraction, covers all accumulated trajectories
|
|
242
|
+
3. **Temporal compression** — promote/demote/evict experiences across Hot/Warm/Cold/Evicted tiers
|
|
243
|
+
4. **Re-clustering** — ReasoningBank rebuilds K-means++ clusters from current experiences
|
|
244
|
+
5. **Pruning** — ExperienceMemory prunes beyond `maxExperiences`
|
|
245
|
+
6. **Meta-learning** — MetaLearner generates routing strategies
|
|
246
|
+
|
|
247
|
+
After batch completes, accumulated trajectories are cleared and the energy evaluator resets.
|
|
248
|
+
|
|
249
|
+
#### Speed 3: Maintenance (circadian-gated)
|
|
250
|
+
|
|
251
|
+
Runs after batch when the `MaintenanceScheduler` signals readiness. Three scheduling modes:
|
|
252
|
+
|
|
253
|
+
| Mode | When maintenance runs |
|
|
254
|
+
|------|----------------------|
|
|
255
|
+
| `manual` | Only via explicit `runMaintenance({ force: true })` |
|
|
256
|
+
| `afterNBatches` | After every N batch cycles (e.g., `batchInterval: 2`) |
|
|
257
|
+
| `periodic` | After a time interval since last maintenance |
|
|
258
|
+
|
|
259
|
+
Built-in maintenance tasks:
|
|
260
|
+
|
|
261
|
+
| Task | What it does |
|
|
262
|
+
|------|--------------|
|
|
263
|
+
| **healing-cycle** | `HealingOrchestrator` runs anomaly detectors (PlaybookDriftDetector, MemoryBloatDetector) and applies repair strategies |
|
|
264
|
+
| **knowledge-defrag** | KnowledgeBank merges duplicate/overlapping notes |
|
|
265
|
+
| **meta-strategy-generation** | MetaLearner generates new routing strategies from accumulated observations |
|
|
266
|
+
|
|
267
|
+
Custom maintenance tasks and anomaly detectors can be registered via `registerMaintenanceTask()` and `addAnomalyDetector()`.
|
|
268
|
+
|
|
269
|
+
#### `solve()` vs `processTrajectory()`
|
|
270
|
+
|
|
271
|
+
| | `atlas.solve(task)` | `atlas.processTrajectory(trajectory)` |
|
|
272
|
+
|---|---|---|
|
|
273
|
+
| **Routing** | Yes — TaskRouter + MoEGate | No |
|
|
274
|
+
| **Agent execution** | Yes — AgentManager + refinement | No (trajectory provided externally) |
|
|
275
|
+
| **Post-execution** | Yes — UsageInference, MetaLearner, EffectivenessTracker | No (requires routing context) |
|
|
276
|
+
| **Three-speed pipeline** | Yes | Yes |
|
|
277
|
+
| **Returns** | `SolveResult` (trajectory, routing, playbook usage) | `ImmediateResult` (instant loop, energy eval, batch/maintenance results) |
|
|
278
|
+
|
|
279
|
+
Use `solve()` when Atlas owns execution. Use `processTrajectory()` to feed in external trajectories — the full three-speed pipeline still runs, but post-execution subsystems that require routing context are skipped.
|
|
163
280
|
|
|
164
281
|
### Playbook lifecycle
|
|
165
282
|
|
|
@@ -187,7 +304,7 @@ stateDiagram-v2
|
|
|
187
304
|
|
|
188
305
|
### Memory architecture
|
|
189
306
|
|
|
190
|
-
|
|
307
|
+
Seven memory stores serve different retrieval patterns:
|
|
191
308
|
|
|
192
309
|
```mermaid
|
|
193
310
|
graph LR
|
|
@@ -196,9 +313,13 @@ graph LR
|
|
|
196
313
|
P[PlaybookLibrary]
|
|
197
314
|
K[KnowledgeBank]
|
|
198
315
|
M[MetaMemory]
|
|
316
|
+
RB[ReasoningBank]
|
|
317
|
+
CS[CausalStore]
|
|
318
|
+
RF[ReflexionMemory]
|
|
199
319
|
end
|
|
200
320
|
|
|
201
321
|
subgraph Search
|
|
322
|
+
II[InvertedIndex]
|
|
202
323
|
BM[BM25 Index]
|
|
203
324
|
VS[sqlite-vec]
|
|
204
325
|
TS[Text Similarity]
|
|
@@ -211,35 +332,55 @@ graph LR
|
|
|
211
332
|
MM[minimem optional]
|
|
212
333
|
end
|
|
213
334
|
|
|
335
|
+
E --> II
|
|
214
336
|
E --> BM
|
|
215
337
|
E --> VS
|
|
338
|
+
P --> II
|
|
216
339
|
P --> BM
|
|
217
340
|
P --> VS
|
|
218
341
|
K --> TS
|
|
219
342
|
K -.-> MM
|
|
343
|
+
CS --> II
|
|
344
|
+
CS --> TS
|
|
345
|
+
RB --> TS
|
|
220
346
|
VS -.-> OAI
|
|
221
347
|
VS -.-> VOY
|
|
222
348
|
VS -.-> HF
|
|
223
349
|
|
|
224
350
|
subgraph Storage
|
|
225
|
-
|
|
226
|
-
SQL[SQLite]
|
|
351
|
+
SQL[SQLite — cognitive-core.db]
|
|
227
352
|
MD[Markdown + YAML]
|
|
353
|
+
SKILL[SQLite — skills.db]
|
|
228
354
|
end
|
|
229
355
|
|
|
230
|
-
E -->
|
|
231
|
-
P -->
|
|
232
|
-
M -->
|
|
233
|
-
|
|
356
|
+
E --> SQL
|
|
357
|
+
P --> SQL
|
|
358
|
+
M --> SQL
|
|
359
|
+
CS --> SQL
|
|
360
|
+
RF --> SQL
|
|
361
|
+
RB -.->|system_state| SQL
|
|
234
362
|
VS --> SQL
|
|
363
|
+
K --> MD
|
|
235
364
|
```
|
|
236
365
|
|
|
237
366
|
| Store | Purpose | Format |
|
|
238
367
|
|-------|---------|--------|
|
|
239
|
-
| **ExperienceMemory** | Episodic — *what happened* |
|
|
240
|
-
| **PlaybookLibrary** | Procedural — *how to do things* |
|
|
368
|
+
| **ExperienceMemory** | Episodic — *what happened* | SQLite |
|
|
369
|
+
| **PlaybookLibrary** | Procedural — *how to do things* | SQLite (with version history) |
|
|
241
370
|
| **KnowledgeBank** | Semantic — *facts, concepts, relationships* | Markdown + YAML frontmatter |
|
|
242
|
-
| **MetaMemory** | Meta-learning — *what worked* |
|
|
371
|
+
| **MetaMemory** | Meta-learning — *what worked* | SQLite |
|
|
372
|
+
| **ReasoningBank** | Clustered experience retrieval (K-means++) | SQLite (system_state) |
|
|
373
|
+
| **CausalStore** | Cause-effect relationships | SQLite |
|
|
374
|
+
| **ReflexionMemory** | Structured self-reflections | SQLite |
|
|
375
|
+
|
|
376
|
+
### Candidate retrieval
|
|
377
|
+
|
|
378
|
+
All memory stores use a shared two-phase retrieval pattern:
|
|
379
|
+
|
|
380
|
+
1. **InvertedIndex narrowing** — tokenize the query, find candidate IDs via posting lists (fast, O(query tokens))
|
|
381
|
+
2. **Fallback to full scan** — if the index returns fewer candidates than needed, fall back to the full store or domain partition
|
|
382
|
+
|
|
383
|
+
This is implemented once in `memory/candidate-retrieval.ts` and shared by ExperienceMemory, PlaybookLibrary, and CausalStore.
|
|
243
384
|
|
|
244
385
|
### Search and matching
|
|
245
386
|
|
|
@@ -247,6 +388,32 @@ Memory search uses BM25 text matching by default. For higher-quality retrieval,
|
|
|
247
388
|
|
|
248
389
|
Knowledge bank search uses text similarity by default, with optional delegation to [minimem](https://github.com/alexngai/minimem) for hybrid vector + BM25 search when available.
|
|
249
390
|
|
|
391
|
+
### MoE routing gate
|
|
392
|
+
|
|
393
|
+
The TaskRouter uses a **Mixture-of-Experts inspired gating function** to select routing strategies. Instead of fixed threshold rules, a learned linear gate computes `softmax(W · features)` over the four strategies (direct, adapt, explore, fallback). Weights are updated online from outcome feedback, with per-domain specialization. Cold start falls back to uniform weights (equivalent to the original threshold logic).
|
|
394
|
+
|
|
395
|
+
### Temporal compression
|
|
396
|
+
|
|
397
|
+
Experiences flow through four tiers based on their access frequency:
|
|
398
|
+
|
|
399
|
+
| Tier | Fidelity | Threshold |
|
|
400
|
+
|------|----------|-----------|
|
|
401
|
+
| **Hot** | Full data preserved | accessScore > 0.5 |
|
|
402
|
+
| **Warm** | Key steps only (solutionOutput stripped) | accessScore > 0.2 |
|
|
403
|
+
| **Cold** | Single-paragraph summary | accessScore > 0.05 |
|
|
404
|
+
| **Evicted** | Removed (pattern captured in ReasoningBank) | accessScore < 0.05 |
|
|
405
|
+
|
|
406
|
+
Hysteresis prevents oscillation: an experience must stay below a threshold for 2 consecutive compression passes before demotion.
|
|
407
|
+
|
|
408
|
+
### Coherence checking
|
|
409
|
+
|
|
410
|
+
Before inserting new knowledge notes, the `CoherenceChecker` detects contradictions using a simplified sheaf-inspired approach:
|
|
411
|
+
|
|
412
|
+
1. Filter existing notes to the same entity/domain
|
|
413
|
+
2. Compute text similarity between new and candidate notes
|
|
414
|
+
3. Detect sentiment conflicts via negation heuristics (e.g., "always" vs "never", "use" vs "avoid")
|
|
415
|
+
4. Flag contradictions where `residualEnergy = similarity × sentimentConflict` exceeds threshold
|
|
416
|
+
|
|
250
417
|
## Knowledge Bank
|
|
251
418
|
|
|
252
419
|
The knowledge bank is a **semantic memory** store for facts, concepts, and relationships that agents learn from experience. While playbooks capture *how* to do things, the knowledge bank captures *what agents know* — facts about tools, libraries, version-specific behavior, and causal relationships.
|
|
@@ -303,9 +470,10 @@ Trajectory → KnowledgeExtractor → Observations (confidence: 0.3)
|
|
|
303
470
|
|
|
304
471
|
Knowledge evolves through:
|
|
305
472
|
- **Reinforcement** — same fact observed again increases confidence
|
|
306
|
-
- **Contradiction detection** — conflicting facts are flagged and resolved
|
|
473
|
+
- **Contradiction detection** — conflicting facts are flagged by the CoherenceChecker and resolved
|
|
307
474
|
- **Consolidation** — observations about the same entity merge into entity notes
|
|
308
475
|
- **Decay** — unvalidated knowledge gradually loses confidence
|
|
476
|
+
- **Defragmentation** — the KnowledgeDefragmenter merges duplicate/overlapping notes
|
|
309
477
|
|
|
310
478
|
### Knowledge surfacing
|
|
311
479
|
|
|
@@ -327,47 +495,150 @@ When [minimem](https://github.com/alexngai/minimem) is available, the knowledge
|
|
|
327
495
|
|
|
328
496
|
See [Design Doc](docs/DESIGN-semantic-memory-knowledge-bank.md) for the full architecture.
|
|
329
497
|
|
|
498
|
+
## Learning Pipeline
|
|
499
|
+
|
|
500
|
+
### Knowledge extraction
|
|
501
|
+
|
|
502
|
+
The `KnowledgeExtractor` runs four heuristic strategies per trajectory:
|
|
503
|
+
|
|
504
|
+
1. **Error patterns** — extracts observations from error signatures and suggested fixes
|
|
505
|
+
2. **Config facts** — detects reads/writes of config files (package.json, tsconfig, etc.) and captures versions
|
|
506
|
+
3. **Causal chains** — identifies failure→recovery step sequences and creates causal links
|
|
507
|
+
4. **Entity identification** — matches known entities in observations and produces entity updates
|
|
508
|
+
|
|
509
|
+
### Reflexion generation
|
|
510
|
+
|
|
511
|
+
The `ReflexionGenerator` creates structured self-reflection episodes from completed trajectories. Each episode includes:
|
|
512
|
+
- Outcome classification (success/partial/failure)
|
|
513
|
+
- Self-critique (wasted effort, thrashing detection)
|
|
514
|
+
- Key insights (tools used, file paths, error patterns)
|
|
515
|
+
- Strategy assessment against matched playbooks
|
|
516
|
+
- Suggested playbook updates
|
|
517
|
+
|
|
518
|
+
### Shared utilities
|
|
519
|
+
|
|
520
|
+
Common analysis patterns are consolidated into shared utilities to avoid duplication:
|
|
521
|
+
|
|
522
|
+
| Utility | Used by |
|
|
523
|
+
|---------|---------|
|
|
524
|
+
| `classifyError()` / `classifyErrorType()` | TrajectoryAnalyzer, ReflexionGenerator |
|
|
525
|
+
| `detectRepeatedActions()` | TrajectoryAnalyzer, ReflexionGenerator, MetaLearner |
|
|
526
|
+
| `extractToolNames()` | ReflexionGenerator, MetaLearner |
|
|
527
|
+
| `getCandidates()` | ExperienceMemory, PlaybookLibrary, CausalStore |
|
|
528
|
+
|
|
330
529
|
## CLI
|
|
331
530
|
|
|
332
|
-
cognitive-core ships a CLI for querying
|
|
531
|
+
cognitive-core ships a CLI for operating the learning system — ingesting trajectories, querying memory, and running maintenance. Available as both `cogcore` (short) and `cognitive-core`.
|
|
532
|
+
|
|
533
|
+
```bash
|
|
534
|
+
npm install -g cognitive-core
|
|
535
|
+
cogcore help
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
### Daemon mode
|
|
539
|
+
|
|
540
|
+
The primary operational command. Polls SessionLog for new coding sessions and feeds them through the learning pipeline automatically.
|
|
541
|
+
|
|
542
|
+
```bash
|
|
543
|
+
# Continuous mode — watch for new sessions and process them
|
|
544
|
+
cogcore run --repo /path/to/repo --interval 30
|
|
545
|
+
|
|
546
|
+
# One-shot mode — process all unprocessed sessions and exit
|
|
547
|
+
cogcore run --once --repo /path/to/repo
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
The flow: `SessionBank.discover()` → filter unprocessed → `SessionTrajectorySource.synthesize()` → `atlas.processTrajectory()` → `bank.markProcessed()`. Supports graceful shutdown via SIGINT/SIGTERM.
|
|
551
|
+
|
|
552
|
+
### Playbook commands
|
|
333
553
|
|
|
334
554
|
```bash
|
|
335
555
|
# Initialize storage
|
|
336
|
-
|
|
556
|
+
cogcore init
|
|
337
557
|
|
|
338
558
|
# Store a trajectory from a JSON file
|
|
339
|
-
|
|
559
|
+
cogcore store ./trajectory.json
|
|
340
560
|
|
|
341
561
|
# Search for relevant playbooks
|
|
342
|
-
|
|
562
|
+
cogcore search "fix typescript import errors" --domain code
|
|
343
563
|
# Found 2 playbook(s) matching "fix typescript import errors":
|
|
344
564
|
#
|
|
345
565
|
# Match: 92% (trigger)
|
|
346
566
|
# ## typescript-import-resolution
|
|
347
567
|
# Confidence: 85%
|
|
348
568
|
# Strategy: Check tsconfig.json paths configuration
|
|
349
|
-
# Tactics:
|
|
350
|
-
# - Verify moduleResolution setting
|
|
351
|
-
# - Check baseUrl and paths mapping
|
|
352
|
-
# - Inspect file extensions (.js vs .ts)
|
|
353
569
|
|
|
354
570
|
# Get full playbook details
|
|
355
|
-
|
|
571
|
+
cogcore get playbook-abc123
|
|
356
572
|
|
|
357
|
-
# List domains with
|
|
358
|
-
|
|
573
|
+
# List domains with playbook counts
|
|
574
|
+
cogcore domains
|
|
359
575
|
|
|
360
|
-
# View
|
|
361
|
-
|
|
362
|
-
# Experiences: 47
|
|
363
|
-
# Playbooks: 12
|
|
364
|
-
# Meta-observations: 31
|
|
576
|
+
# View system statistics
|
|
577
|
+
cogcore stats
|
|
365
578
|
```
|
|
366
579
|
|
|
367
|
-
|
|
580
|
+
### Knowledge bank
|
|
581
|
+
|
|
582
|
+
Query and manage the semantic memory store (observations, entities, domain summaries).
|
|
368
583
|
|
|
369
584
|
```bash
|
|
370
|
-
|
|
585
|
+
cogcore kb search "prisma migration"
|
|
586
|
+
cogcore kb list # all notes
|
|
587
|
+
cogcore kb list --type entities # entity notes only
|
|
588
|
+
cogcore kb list --type domains # domain summaries only
|
|
589
|
+
cogcore kb get prisma # by ID, entity name, or domain name
|
|
590
|
+
cogcore kb stats # observation/entity/domain counts, graph stats
|
|
591
|
+
cogcore kb defrag # deduplicate, process inbox, run decay
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
### Sessions
|
|
595
|
+
|
|
596
|
+
Inspect SessionLog checkpoint data from git orphan branches. SessionBank is standalone — it reads directly from the git repo without Atlas.
|
|
597
|
+
|
|
598
|
+
```bash
|
|
599
|
+
cogcore sessions list --repo .
|
|
600
|
+
cogcore sessions get 2026-02-15-aabbccdd-1122-3344-5566-778899aabbcc
|
|
601
|
+
cogcore sessions query --agent "Claude Code" --since 2026-01-01 --limit 10
|
|
602
|
+
```
|
|
603
|
+
|
|
604
|
+
### Learning pipeline
|
|
605
|
+
|
|
606
|
+
Operator controls for the three-speed learning pipeline.
|
|
607
|
+
|
|
608
|
+
```bash
|
|
609
|
+
cogcore learn stats # processed count, pending, batch/maintenance cycles
|
|
610
|
+
cogcore learn batch # force batch learning on accumulated trajectories
|
|
611
|
+
cogcore learn maintenance # force maintenance cycle (defrag, healing, meta-strategies)
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
### Skill library
|
|
615
|
+
|
|
616
|
+
Inspect and manage the tiered skill system.
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
cogcore skills list # all skills with tier, confidence, success rate
|
|
620
|
+
cogcore skills list --tier core # core skills only (always in system prompt)
|
|
621
|
+
cogcore skills list --tier domain # domain skills only
|
|
622
|
+
cogcore skills stats # core/domain counts, last refresh
|
|
623
|
+
cogcore skills refresh # trigger tier re-evaluation (promotions/demotions)
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
### Global options
|
|
627
|
+
|
|
628
|
+
All commands support these flags:
|
|
629
|
+
|
|
630
|
+
| Flag | Description |
|
|
631
|
+
|------|-------------|
|
|
632
|
+
| `--dir <path>` | Storage directory (default: `.cognitive-core`) |
|
|
633
|
+
| `--json` | Machine-readable JSON output |
|
|
634
|
+
| `--limit <n>` | Maximum results |
|
|
635
|
+
| `--domain <d>` | Filter by domain |
|
|
636
|
+
| `--repo <path>` | Git repository path (for sessions/run) |
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
# Pipe JSON output to jq
|
|
640
|
+
cogcore search "debug async errors" --json | jq '.[0].strategy'
|
|
641
|
+
cogcore kb stats --json | jq '.observationCount'
|
|
371
642
|
```
|
|
372
643
|
|
|
373
644
|
## Agent Backends
|
|
@@ -467,12 +738,57 @@ const skills = await atlas.getSkillLibrary()?.getSkillsForAgent(task);
|
|
|
467
738
|
// skills.contextual - matched to this specific task
|
|
468
739
|
```
|
|
469
740
|
|
|
741
|
+
### skill-tree integration
|
|
742
|
+
|
|
743
|
+
When `skillTree.enabled` is true (default), playbooks are published to a `skill-tree` SQLite database via `SqliteStorageAdapter`, making them available to external consumers.
|
|
744
|
+
|
|
745
|
+
### Team skill library
|
|
746
|
+
|
|
747
|
+
For multi-agent systems, the `TeamSkillLibrary` surfaces team-level and role-specific playbooks with ELO-based ranking from team outcome feedback.
|
|
748
|
+
|
|
749
|
+
## Session Bank
|
|
750
|
+
|
|
751
|
+
The session bank provides integration with the Claude Code CLI, enabling cognitive-core to learn from real coding sessions.
|
|
752
|
+
|
|
753
|
+
```typescript
|
|
754
|
+
import { SessionBank, EntireGitReader, EntireTranscriptParser } from 'cognitive-core';
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
Components:
|
|
758
|
+
- **EntireGitReader** — reads session transcripts from Claude Code's git-based storage
|
|
759
|
+
- **EntireTranscriptParser** — parses raw transcripts into structured `SessionRecord` objects
|
|
760
|
+
- **SessionBank** — manages session records with querying by date range, domain, and outcome
|
|
761
|
+
|
|
762
|
+
The `EntireTrajectorySource` bridges session bank records into trajectories for the learning pipeline.
|
|
763
|
+
|
|
764
|
+
## Workspace Templates
|
|
765
|
+
|
|
766
|
+
The workspace system provides LLM-assisted analysis via structured templates. Each template defines inputs, outputs, and a processing prompt. The `AgenticTaskRunner` executes templates against a workspace.
|
|
767
|
+
|
|
768
|
+
Available templates:
|
|
769
|
+
|
|
770
|
+
| Template | Purpose |
|
|
771
|
+
|----------|---------|
|
|
772
|
+
| `trajectory-analysis` | Deep trajectory analysis with LLM |
|
|
773
|
+
| `playbook-extraction` | Extract playbooks from trajectory clusters |
|
|
774
|
+
| `knowledge-extraction` | LLM-assisted knowledge extraction |
|
|
775
|
+
| `usage-inference` | Infer which playbooks were actually used |
|
|
776
|
+
| `meta-reflection` | Generate meta-learning observations |
|
|
777
|
+
| `solution-evaluation` | Evaluate solution quality |
|
|
778
|
+
| `refinement-analysis` | Analyze refinement opportunities |
|
|
779
|
+
| `knowledge-defrag` | Merge overlapping knowledge notes |
|
|
780
|
+
| `team-playbook-extraction` | Extract team-level playbooks |
|
|
781
|
+
| `team-trajectory-analysis` | Analyze multi-agent trajectories |
|
|
782
|
+
|
|
783
|
+
Templates can run in heuristic mode (no LLM, pattern matching only) or agentic mode (LLM-assisted, higher quality).
|
|
784
|
+
|
|
470
785
|
## Configuration
|
|
471
786
|
|
|
472
787
|
```typescript
|
|
473
788
|
const atlas = createAtlasWithAgents([backend], {
|
|
474
789
|
storage: {
|
|
475
790
|
baseDir: '.cognitive-core',
|
|
791
|
+
dbName: 'cognitive-core.db', // SQLite database filename
|
|
476
792
|
persistenceEnabled: true,
|
|
477
793
|
},
|
|
478
794
|
learning: {
|
|
@@ -607,16 +923,16 @@ cognitive-core draws from several lines of research on agent memory and learning
|
|
|
607
923
|
- **[MAGMA](https://arxiv.org/abs/2601.03236)** - Multi-graph decomposition into semantic, temporal, causal, entity layers (graph overlay design)
|
|
608
924
|
- **[Zep](https://arxiv.org/pdf/2501.13956)** - Entity extraction, community detection, temporal tracking
|
|
609
925
|
- **[Memory Survey](https://arxiv.org/abs/2512.13564)** - Comprehensive survey and taxonomy of factual/experiential/procedural memory
|
|
926
|
+
- **ruvector** - Inspiration for infrastructure improvements: ReasoningBank (K-means++ clustering), MoE routing gate, CoherenceChecker (sheaf-inspired), TemporalCompressor (tiered memory), InstantLoop (hot-path learning)
|
|
610
927
|
|
|
611
928
|
## Limitations
|
|
612
929
|
|
|
613
930
|
- **No cross-domain transfer**. A playbook learned in the `code` domain won't surface for `testing` tasks even if the underlying pattern is the same. Domain tags are string-matched, not semantically compared.
|
|
614
|
-
- **Cold start**. The system needs ~10 trajectories before batch learning kicks in and playbooks start appearing.
|
|
615
|
-
- **Text-based matching by default**. BM25
|
|
616
|
-
- **No trajectory quality filtering**. The system stores all trajectories, including ones from poorly-performing agents. Low-quality trajectories can produce low-quality playbooks and knowledge. The deduplication threshold
|
|
617
|
-
- **Single-machine storage**.
|
|
931
|
+
- **Cold start**. The system needs ~10 trajectories before batch learning kicks in and playbooks start appearing. The instant loop provides per-trajectory updates immediately, and knowledge extraction works per-trajectory, so some learning is available sooner.
|
|
932
|
+
- **Text-based matching by default**. BM25 and inverted index candidate narrowing work but miss semantic similarity. Vector search requires configuring an embedding provider and adds latency. Knowledge bank search uses text similarity unless minimem is available.
|
|
933
|
+
- **No trajectory quality filtering**. The system stores all trajectories, including ones from poorly-performing agents. Low-quality trajectories can produce low-quality playbooks and knowledge. The deduplication threshold, confidence model, and temporal compression help, but don't solve the garbage-in problem.
|
|
934
|
+
- **Single-machine storage**. All system-internal data lives in a single SQLite database (`cognitive-core.db` with WAL mode), knowledge notes are Markdown files, and skills use a separate `skills.db`. There's no built-in replication, multi-agent concurrency, or cloud storage.
|
|
618
935
|
- **Extraction is heuristic by default**. Without an LLM extractor configured, both playbook and knowledge extraction use text pattern matching, which produces lower-quality results. LLM-assisted extraction is available via workspace templates.
|
|
619
|
-
- **Knowledge extraction is not auto-wired into the learning pipeline**. Knowledge must be extracted explicitly via `KnowledgeBank.extractFromTrajectory()`. This is by design — it allows callers to control when extraction runs.
|
|
620
936
|
|
|
621
937
|
## Contributing
|
|
622
938
|
|
package/dist/atlas.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Task, Trajectory, TeamTrajectory, TeamPlaybook, AtlasConfig, Playbook } from './types/index.js';
|
|
2
2
|
import type { KnowledgeMatch } from './types/knowledge.js';
|
|
3
3
|
import { MemorySystem, type TeamExperience } from './memory/index.js';
|
|
4
|
-
import {
|
|
4
|
+
import { UnifiedLearningPipeline, type ImmediateResult, type UnifiedBatchResult } from './learning/unified-pipeline.js';
|
|
5
5
|
import { TeamLearningPipeline, type TeamBatchResult, type TeamProcessResult } from './learning/team-pipeline.js';
|
|
6
6
|
import { TeamMetaLearner } from './learning/team-meta-learner.js';
|
|
7
7
|
import { TeamRouter, type TeamRecommendation, type TeamRecommendationInput } from './search/team-router.js';
|
|
8
8
|
import { TeamSkillLibrary, type TeamOutcomeFeedback } from './surfacing/team-skill-library.js';
|
|
9
|
-
import { MetaLearner } from './learning/meta-learner.js';
|
|
10
|
-
import { LearningEffectivenessTracker } from './learning/effectiveness.js';
|
|
9
|
+
import type { MetaLearner } from './learning/meta-learner.js';
|
|
10
|
+
import type { LearningEffectivenessTracker } from './learning/effectiveness.js';
|
|
11
11
|
import { type RoutingDecision } from './search/router.js';
|
|
12
12
|
import { RefinementLoop } from './search/refinement-loop.js';
|
|
13
13
|
import type { RefinementResult } from './search/refinement-types.js';
|
|
@@ -98,7 +98,7 @@ export interface SolveResult {
|
|
|
98
98
|
*/
|
|
99
99
|
export declare class Atlas {
|
|
100
100
|
private memory;
|
|
101
|
-
private
|
|
101
|
+
private unifiedPipeline;
|
|
102
102
|
private router;
|
|
103
103
|
private solver;
|
|
104
104
|
private agentManager;
|
|
@@ -111,14 +111,13 @@ export declare class Atlas {
|
|
|
111
111
|
private skillTreeStorage;
|
|
112
112
|
private usageInference;
|
|
113
113
|
private mcpServer;
|
|
114
|
-
private metaLearner;
|
|
115
|
-
private effectivenessTracker;
|
|
116
114
|
private taskRunner;
|
|
117
115
|
private workspaceManager;
|
|
118
116
|
private teamLearning;
|
|
119
117
|
private teamRouter;
|
|
120
118
|
private teamMetaLearner;
|
|
121
119
|
private teamSkillLibrary;
|
|
120
|
+
private persistence;
|
|
122
121
|
constructor(config?: Partial<AtlasConfig>);
|
|
123
122
|
/**
|
|
124
123
|
* Initialize Atlas (load persisted data)
|
|
@@ -175,9 +174,10 @@ export declare class Atlas {
|
|
|
175
174
|
*/
|
|
176
175
|
solveBatch(tasks: Task[]): Promise<SolveResult[]>;
|
|
177
176
|
/**
|
|
178
|
-
* Process an external trajectory (from another agent)
|
|
177
|
+
* Process an external trajectory (from another agent).
|
|
178
|
+
* Runs the instant loop first (hot path), then feeds into the batch pipeline.
|
|
179
179
|
*/
|
|
180
|
-
processTrajectory(trajectory: Trajectory): Promise<
|
|
180
|
+
processTrajectory(trajectory: Trajectory): Promise<ImmediateResult>;
|
|
181
181
|
/**
|
|
182
182
|
* Process a team trajectory through the full team learning pipeline.
|
|
183
183
|
* Ingests, analyzes (heuristic or agentic), stores, and accumulates
|
|
@@ -246,7 +246,7 @@ export declare class Atlas {
|
|
|
246
246
|
/**
|
|
247
247
|
* Run batch learning explicitly
|
|
248
248
|
*/
|
|
249
|
-
runBatchLearning(): Promise<
|
|
249
|
+
runBatchLearning(): Promise<UnifiedBatchResult>;
|
|
250
250
|
/**
|
|
251
251
|
* Query memory for relevant context
|
|
252
252
|
*/
|
|
@@ -270,7 +270,7 @@ export declare class Atlas {
|
|
|
270
270
|
/**
|
|
271
271
|
* Get the learning pipeline for direct access
|
|
272
272
|
*/
|
|
273
|
-
getLearning():
|
|
273
|
+
getLearning(): UnifiedLearningPipeline;
|
|
274
274
|
/**
|
|
275
275
|
* Get the skill library for direct access
|
|
276
276
|
*/
|