cognitive-core 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +88 -0
- package/.claude/settings.local.json +11 -0
- package/.entire/settings.json +4 -0
- package/README.md +524 -254
- package/dist/atlas.d.ts +144 -6
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +339 -10
- package/dist/atlas.js.map +1 -1
- package/dist/embeddings/provider.d.ts.map +1 -1
- package/dist/embeddings/provider.js +6 -3
- package/dist/embeddings/provider.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -6
- package/dist/index.js.map +1 -1
- package/dist/learning/index.d.ts +5 -1
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +8 -2
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/knowledge-extractor.d.ts +56 -0
- package/dist/learning/knowledge-extractor.d.ts.map +1 -0
- package/dist/learning/knowledge-extractor.js +336 -0
- package/dist/learning/knowledge-extractor.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +7 -0
- package/dist/learning/meta-learner.d.ts.map +1 -1
- package/dist/learning/meta-learner.js +43 -0
- package/dist/learning/meta-learner.js.map +1 -1
- package/dist/learning/pipeline.d.ts +24 -0
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +70 -4
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/team-ingester.d.ts +152 -0
- package/dist/learning/team-ingester.d.ts.map +1 -0
- package/dist/learning/team-ingester.js +333 -0
- package/dist/learning/team-ingester.js.map +1 -0
- package/dist/learning/team-meta-learner.d.ts +50 -0
- package/dist/learning/team-meta-learner.d.ts.map +1 -0
- package/dist/learning/team-meta-learner.js +417 -0
- package/dist/learning/team-meta-learner.js.map +1 -0
- package/dist/learning/team-pipeline.d.ts +76 -0
- package/dist/learning/team-pipeline.d.ts.map +1 -0
- package/dist/learning/team-pipeline.js +266 -0
- package/dist/learning/team-pipeline.js.map +1 -0
- package/dist/learning/trajectory-sources/dataclaw.d.ts +41 -0
- package/dist/learning/trajectory-sources/dataclaw.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/dataclaw.js +330 -0
- package/dist/learning/trajectory-sources/dataclaw.js.map +1 -0
- package/dist/learning/trajectory-sources/entire.d.ts +28 -0
- package/dist/learning/trajectory-sources/entire.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/entire.js +182 -0
- package/dist/learning/trajectory-sources/entire.js.map +1 -0
- package/dist/learning/trajectory-sources/file.d.ts +23 -0
- package/dist/learning/trajectory-sources/file.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/file.js +101 -0
- package/dist/learning/trajectory-sources/file.js.map +1 -0
- package/dist/learning/trajectory-sources/huggingface.d.ts +36 -0
- package/dist/learning/trajectory-sources/huggingface.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/huggingface.js +157 -0
- package/dist/learning/trajectory-sources/huggingface.js.map +1 -0
- package/dist/learning/trajectory-sources/in-memory.d.ts +21 -0
- package/dist/learning/trajectory-sources/in-memory.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/in-memory.js +43 -0
- package/dist/learning/trajectory-sources/in-memory.js.map +1 -0
- package/dist/learning/trajectory-sources/index.d.ts +7 -0
- package/dist/learning/trajectory-sources/index.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/index.js +7 -0
- package/dist/learning/trajectory-sources/index.js.map +1 -0
- package/dist/learning/trajectory-sources/pipeline.d.ts +24 -0
- package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/pipeline.js +47 -0
- package/dist/learning/trajectory-sources/pipeline.js.map +1 -0
- package/dist/memory/graph-layers/base.d.ts +29 -0
- package/dist/memory/graph-layers/base.d.ts.map +1 -0
- package/dist/memory/graph-layers/base.js +143 -0
- package/dist/memory/graph-layers/base.js.map +1 -0
- package/dist/memory/graph-layers/causal.d.ts +14 -0
- package/dist/memory/graph-layers/causal.d.ts.map +1 -0
- package/dist/memory/graph-layers/causal.js +14 -0
- package/dist/memory/graph-layers/causal.js.map +1 -0
- package/dist/memory/graph-layers/entity.d.ts +14 -0
- package/dist/memory/graph-layers/entity.d.ts.map +1 -0
- package/dist/memory/graph-layers/entity.js +14 -0
- package/dist/memory/graph-layers/entity.js.map +1 -0
- package/dist/memory/graph-layers/index.d.ts +6 -0
- package/dist/memory/graph-layers/index.d.ts.map +1 -0
- package/dist/memory/graph-layers/index.js +6 -0
- package/dist/memory/graph-layers/index.js.map +1 -0
- package/dist/memory/graph-layers/semantic.d.ts +14 -0
- package/dist/memory/graph-layers/semantic.d.ts.map +1 -0
- package/dist/memory/graph-layers/semantic.js +14 -0
- package/dist/memory/graph-layers/semantic.js.map +1 -0
- package/dist/memory/graph-layers/temporal.d.ts +14 -0
- package/dist/memory/graph-layers/temporal.d.ts.map +1 -0
- package/dist/memory/graph-layers/temporal.js +14 -0
- package/dist/memory/graph-layers/temporal.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +10 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/knowledge-bank.d.ts +220 -0
- package/dist/memory/knowledge-bank.d.ts.map +1 -0
- package/dist/memory/knowledge-bank.js +1003 -0
- package/dist/memory/knowledge-bank.js.map +1 -0
- package/dist/memory/knowledge-defrag.d.ts +49 -0
- package/dist/memory/knowledge-defrag.d.ts.map +1 -0
- package/dist/memory/knowledge-defrag.js +257 -0
- package/dist/memory/knowledge-defrag.js.map +1 -0
- package/dist/memory/knowledge-graph.d.ts +41 -0
- package/dist/memory/knowledge-graph.d.ts.map +1 -0
- package/dist/memory/knowledge-graph.js +273 -0
- package/dist/memory/knowledge-graph.js.map +1 -0
- package/dist/memory/search-provider.d.ts +31 -0
- package/dist/memory/search-provider.d.ts.map +1 -0
- package/dist/memory/search-provider.js +2 -0
- package/dist/memory/search-provider.js.map +1 -0
- package/dist/memory/search-providers/index.d.ts +3 -0
- package/dist/memory/search-providers/index.d.ts.map +1 -0
- package/dist/memory/search-providers/index.js +3 -0
- package/dist/memory/search-providers/index.js.map +1 -0
- package/dist/memory/search-providers/minimem.d.ts +43 -0
- package/dist/memory/search-providers/minimem.d.ts.map +1 -0
- package/dist/memory/search-providers/minimem.js +56 -0
- package/dist/memory/search-providers/minimem.js.map +1 -0
- package/dist/memory/search-providers/text-similarity.d.ts +15 -0
- package/dist/memory/search-providers/text-similarity.d.ts.map +1 -0
- package/dist/memory/search-providers/text-similarity.js +21 -0
- package/dist/memory/search-providers/text-similarity.js.map +1 -0
- package/dist/memory/skill-exporter.d.ts +75 -0
- package/dist/memory/skill-exporter.d.ts.map +1 -0
- package/dist/memory/skill-exporter.js +248 -0
- package/dist/memory/skill-exporter.js.map +1 -0
- package/dist/memory/system.d.ts +15 -3
- package/dist/memory/system.d.ts.map +1 -1
- package/dist/memory/system.js +46 -8
- package/dist/memory/system.js.map +1 -1
- package/dist/memory/team-experience.d.ts +298 -0
- package/dist/memory/team-experience.d.ts.map +1 -0
- package/dist/memory/team-experience.js +355 -0
- package/dist/memory/team-experience.js.map +1 -0
- package/dist/runtime/backends/acp-protocol.d.ts +49 -0
- package/dist/runtime/backends/acp-protocol.d.ts.map +1 -0
- package/dist/runtime/backends/acp-protocol.js +166 -0
- package/dist/runtime/backends/acp-protocol.js.map +1 -0
- package/dist/runtime/backends/acp.d.ts +26 -26
- package/dist/runtime/backends/acp.d.ts.map +1 -1
- package/dist/runtime/backends/acp.js +32 -156
- package/dist/runtime/backends/acp.js.map +1 -1
- package/dist/runtime/backends/index.d.ts +3 -1
- package/dist/runtime/backends/index.d.ts.map +1 -1
- package/dist/runtime/backends/index.js +3 -1
- package/dist/runtime/backends/index.js.map +1 -1
- package/dist/runtime/backends/macro-agent.d.ts +104 -0
- package/dist/runtime/backends/macro-agent.d.ts.map +1 -0
- package/dist/runtime/backends/macro-agent.js +107 -0
- package/dist/runtime/backends/macro-agent.js.map +1 -0
- package/dist/runtime/compute-provider.d.ts +87 -0
- package/dist/runtime/compute-provider.d.ts.map +1 -0
- package/dist/runtime/compute-provider.js +87 -0
- package/dist/runtime/compute-provider.js.map +1 -0
- package/dist/runtime/index.d.ts +3 -2
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/manager.d.ts +37 -4
- package/dist/runtime/manager.d.ts.map +1 -1
- package/dist/runtime/manager.js +139 -20
- package/dist/runtime/manager.js.map +1 -1
- package/dist/runtime/types.d.ts +38 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/search/evaluator.d.ts +7 -0
- package/dist/search/evaluator.d.ts.map +1 -1
- package/dist/search/evaluator.js +24 -4
- package/dist/search/evaluator.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/refinement-loop.d.ts +17 -0
- package/dist/search/refinement-loop.d.ts.map +1 -1
- package/dist/search/refinement-loop.js +77 -6
- package/dist/search/refinement-loop.js.map +1 -1
- package/dist/search/refinement-types.d.ts +2 -2
- package/dist/search/team-router.d.ts +91 -0
- package/dist/search/team-router.d.ts.map +1 -0
- package/dist/search/team-router.js +315 -0
- package/dist/search/team-router.js.map +1 -0
- package/dist/session-bank/git-reader.d.ts +39 -0
- package/dist/session-bank/git-reader.d.ts.map +1 -0
- package/dist/session-bank/git-reader.js +165 -0
- package/dist/session-bank/git-reader.js.map +1 -0
- package/dist/session-bank/index.d.ts +5 -0
- package/dist/session-bank/index.d.ts.map +1 -0
- package/dist/session-bank/index.js +4 -0
- package/dist/session-bank/index.js.map +1 -0
- package/dist/session-bank/parser.d.ts +39 -0
- package/dist/session-bank/parser.d.ts.map +1 -0
- package/dist/session-bank/parser.js +231 -0
- package/dist/session-bank/parser.js.map +1 -0
- package/dist/session-bank/session-bank.d.ts +35 -0
- package/dist/session-bank/session-bank.d.ts.map +1 -0
- package/dist/session-bank/session-bank.js +326 -0
- package/dist/session-bank/session-bank.js.map +1 -0
- package/dist/session-bank/types.d.ts +129 -0
- package/dist/session-bank/types.d.ts.map +1 -0
- package/dist/session-bank/types.js +7 -0
- package/dist/session-bank/types.js.map +1 -0
- package/dist/surfacing/index.d.ts +4 -0
- package/dist/surfacing/index.d.ts.map +1 -1
- package/dist/surfacing/index.js +3 -0
- package/dist/surfacing/index.js.map +1 -1
- package/dist/surfacing/publisher.d.ts +22 -0
- package/dist/surfacing/publisher.d.ts.map +1 -0
- package/dist/surfacing/publisher.js +9 -0
- package/dist/surfacing/publisher.js.map +1 -0
- package/dist/surfacing/skill-library.d.ts +12 -0
- package/dist/surfacing/skill-library.d.ts.map +1 -1
- package/dist/surfacing/skill-library.js +26 -0
- package/dist/surfacing/skill-library.js.map +1 -1
- package/dist/surfacing/skill-publisher.d.ts +43 -0
- package/dist/surfacing/skill-publisher.d.ts.map +1 -0
- package/dist/surfacing/skill-publisher.js +197 -0
- package/dist/surfacing/skill-publisher.js.map +1 -0
- package/dist/surfacing/sqlite-storage-adapter.d.ts +42 -0
- package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -0
- package/dist/surfacing/sqlite-storage-adapter.js +207 -0
- package/dist/surfacing/sqlite-storage-adapter.js.map +1 -0
- package/dist/surfacing/team-skill-library.d.ts +180 -0
- package/dist/surfacing/team-skill-library.d.ts.map +1 -0
- package/dist/surfacing/team-skill-library.js +384 -0
- package/dist/surfacing/team-skill-library.js.map +1 -0
- package/dist/types/config.d.ts +1218 -44
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +216 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/dataclaw.d.ts +286 -0
- package/dist/types/dataclaw.d.ts.map +1 -0
- package/dist/types/dataclaw.js +84 -0
- package/dist/types/dataclaw.js.map +1 -0
- package/dist/types/index.d.ts +8 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +13 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/knowledge-graph.d.ts +148 -0
- package/dist/types/knowledge-graph.d.ts.map +1 -0
- package/dist/types/knowledge-graph.js +40 -0
- package/dist/types/knowledge-graph.js.map +1 -0
- package/dist/types/knowledge.d.ts +280 -0
- package/dist/types/knowledge.d.ts.map +1 -0
- package/dist/types/knowledge.js +191 -0
- package/dist/types/knowledge.js.map +1 -0
- package/dist/types/team-meta.d.ts +160 -0
- package/dist/types/team-meta.d.ts.map +1 -0
- package/dist/types/team-meta.js +42 -0
- package/dist/types/team-meta.js.map +1 -0
- package/dist/types/team-playbook.d.ts +276 -0
- package/dist/types/team-playbook.d.ts.map +1 -0
- package/dist/types/team-playbook.js +85 -0
- package/dist/types/team-playbook.js.map +1 -0
- package/dist/types/team-trajectory.d.ts +305 -0
- package/dist/types/team-trajectory.d.ts.map +1 -0
- package/dist/types/team-trajectory.js +304 -0
- package/dist/types/team-trajectory.js.map +1 -0
- package/dist/types/trajectory-source.d.ts +39 -0
- package/dist/types/trajectory-source.d.ts.map +1 -0
- package/dist/types/trajectory-source.js +2 -0
- package/dist/types/trajectory-source.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +34 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +93 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/workspace/index.d.ts +6 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +11 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/runner.d.ts +50 -0
- package/dist/workspace/runner.d.ts.map +1 -0
- package/dist/workspace/runner.js +219 -0
- package/dist/workspace/runner.js.map +1 -0
- package/dist/workspace/skill-converter.d.ts +18 -0
- package/dist/workspace/skill-converter.d.ts.map +1 -0
- package/dist/workspace/skill-converter.js +257 -0
- package/dist/workspace/skill-converter.js.map +1 -0
- package/dist/workspace/templates/index.d.ts +11 -0
- package/dist/workspace/templates/index.d.ts.map +1 -0
- package/dist/workspace/templates/index.js +21 -0
- package/dist/workspace/templates/index.js.map +1 -0
- package/dist/workspace/templates/knowledge-defrag.d.ts +25 -0
- package/dist/workspace/templates/knowledge-defrag.d.ts.map +1 -0
- package/dist/workspace/templates/knowledge-defrag.js +154 -0
- package/dist/workspace/templates/knowledge-defrag.js.map +1 -0
- package/dist/workspace/templates/knowledge-extraction.d.ts +25 -0
- package/dist/workspace/templates/knowledge-extraction.d.ts.map +1 -0
- package/dist/workspace/templates/knowledge-extraction.js +246 -0
- package/dist/workspace/templates/knowledge-extraction.js.map +1 -0
- package/dist/workspace/templates/meta-reflection.d.ts +47 -0
- package/dist/workspace/templates/meta-reflection.d.ts.map +1 -0
- package/dist/workspace/templates/meta-reflection.js +135 -0
- package/dist/workspace/templates/meta-reflection.js.map +1 -0
- package/dist/workspace/templates/playbook-extraction.d.ts +20 -0
- package/dist/workspace/templates/playbook-extraction.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-extraction.js +189 -0
- package/dist/workspace/templates/playbook-extraction.js.map +1 -0
- package/dist/workspace/templates/refinement-analysis.d.ts +31 -0
- package/dist/workspace/templates/refinement-analysis.d.ts.map +1 -0
- package/dist/workspace/templates/refinement-analysis.js +107 -0
- package/dist/workspace/templates/refinement-analysis.js.map +1 -0
- package/dist/workspace/templates/solution-evaluation.d.ts +21 -0
- package/dist/workspace/templates/solution-evaluation.d.ts.map +1 -0
- package/dist/workspace/templates/solution-evaluation.js +131 -0
- package/dist/workspace/templates/solution-evaluation.js.map +1 -0
- package/dist/workspace/templates/team-playbook-extraction.d.ts +44 -0
- package/dist/workspace/templates/team-playbook-extraction.d.ts.map +1 -0
- package/dist/workspace/templates/team-playbook-extraction.js +497 -0
- package/dist/workspace/templates/team-playbook-extraction.js.map +1 -0
- package/dist/workspace/templates/team-trajectory-analysis.d.ts +19 -0
- package/dist/workspace/templates/team-trajectory-analysis.d.ts.map +1 -0
- package/dist/workspace/templates/team-trajectory-analysis.js +442 -0
- package/dist/workspace/templates/team-trajectory-analysis.js.map +1 -0
- package/dist/workspace/templates/trajectory-analysis.d.ts +19 -0
- package/dist/workspace/templates/trajectory-analysis.d.ts.map +1 -0
- package/dist/workspace/templates/trajectory-analysis.js +170 -0
- package/dist/workspace/templates/trajectory-analysis.js.map +1 -0
- package/dist/workspace/templates/usage-inference.d.ts +19 -0
- package/dist/workspace/templates/usage-inference.d.ts.map +1 -0
- package/dist/workspace/templates/usage-inference.js +125 -0
- package/dist/workspace/templates/usage-inference.js.map +1 -0
- package/dist/workspace/types.d.ts +145 -0
- package/dist/workspace/types.d.ts.map +1 -0
- package/dist/workspace/types.js +17 -0
- package/dist/workspace/types.js.map +1 -0
- package/docs/DESIGN-agentic-workspace.md +2057 -0
- package/docs/DESIGN-semantic-memory-knowledge-bank.md +1789 -0
- package/docs/DESIGN-session-bank.md +1134 -0
- package/docs/DESIGN-team-extraction-pipeline.md +1369 -0
- package/docs/DESIGN-workspace-migration.md +1079 -0
- package/docs/PLAN-agentic-workspace-implementation.md +717 -0
- package/docs/PLAN-graph-migration.md +299 -0
- package/docs/PLAN-session-bank-implementation.md +474 -0
- package/docs/PROPOSAL-team-aware-learning.md +1080 -0
- package/docs/RESEARCH-semantic-memory-knowledge-structures.md +517 -0
- package/docs/RESEARCH-team-trajectory-learning.md +553 -0
- package/gaps.md +204 -0
- package/package.json +24 -6
- package/references/agent-workspace/CLAUDE.md +74 -0
- package/references/agent-workspace/README.md +587 -0
- package/references/agent-workspace/media/banner.png +0 -0
- package/references/agent-workspace/package-lock.json +2061 -0
- package/references/agent-workspace/package.json +54 -0
- package/references/agent-workspace/src/handle.ts +122 -0
- package/references/agent-workspace/src/index.ts +32 -0
- package/references/agent-workspace/src/manager.ts +102 -0
- package/references/agent-workspace/src/readers/json.ts +71 -0
- package/references/agent-workspace/src/readers/markdown.ts +37 -0
- package/references/agent-workspace/src/readers/raw.ts +27 -0
- package/references/agent-workspace/src/types.ts +68 -0
- package/references/agent-workspace/src/validation.ts +93 -0
- package/references/agent-workspace/src/writers/json.ts +17 -0
- package/references/agent-workspace/src/writers/markdown.ts +27 -0
- package/references/agent-workspace/src/writers/raw.ts +22 -0
- package/references/agent-workspace/tests/errors.test.ts +652 -0
- package/references/agent-workspace/tests/handle.test.ts +144 -0
- package/references/agent-workspace/tests/manager.test.ts +124 -0
- package/references/agent-workspace/tests/readers.test.ts +205 -0
- package/references/agent-workspace/tests/validation.test.ts +196 -0
- package/references/agent-workspace/tests/writers.test.ts +108 -0
- package/references/agent-workspace/tsconfig.json +20 -0
- package/references/agent-workspace/tsup.config.ts +9 -0
- package/references/minimem/.claude/settings.json +7 -0
- package/references/minimem/.sudocode/issues.jsonl +18 -0
- package/references/minimem/.sudocode/specs.jsonl +1 -0
- package/references/minimem/CLAUDE.md +310 -0
- package/references/minimem/README.md +556 -0
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +10 -0
- package/references/minimem/claude-plugin/.mcp.json +7 -0
- package/references/minimem/claude-plugin/README.md +158 -0
- package/references/minimem/claude-plugin/commands/recall.md +47 -0
- package/references/minimem/claude-plugin/commands/remember.md +41 -0
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +272 -0
- package/references/minimem/claude-plugin/hooks/hooks.json +27 -0
- package/references/minimem/claude-plugin/hooks/session-end.sh +86 -0
- package/references/minimem/claude-plugin/hooks/session-start.sh +85 -0
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +108 -0
- package/references/minimem/package-lock.json +5373 -0
- package/references/minimem/package.json +60 -0
- package/references/minimem/scripts/postbuild.js +35 -0
- package/references/minimem/src/__tests__/edge-cases.test.ts +371 -0
- package/references/minimem/src/__tests__/errors.test.ts +265 -0
- package/references/minimem/src/__tests__/helpers.ts +199 -0
- package/references/minimem/src/__tests__/internal.test.ts +407 -0
- package/references/minimem/src/__tests__/knowledge.test.ts +287 -0
- package/references/minimem/src/__tests__/minimem.integration.test.ts +1127 -0
- package/references/minimem/src/__tests__/session.test.ts +190 -0
- package/references/minimem/src/cli/__tests__/commands.test.ts +759 -0
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +141 -0
- package/references/minimem/src/cli/commands/append.ts +76 -0
- package/references/minimem/src/cli/commands/config.ts +262 -0
- package/references/minimem/src/cli/commands/conflicts.ts +413 -0
- package/references/minimem/src/cli/commands/daemon.ts +169 -0
- package/references/minimem/src/cli/commands/index.ts +12 -0
- package/references/minimem/src/cli/commands/init.ts +88 -0
- package/references/minimem/src/cli/commands/mcp.ts +177 -0
- package/references/minimem/src/cli/commands/push-pull.ts +213 -0
- package/references/minimem/src/cli/commands/search.ts +158 -0
- package/references/minimem/src/cli/commands/status.ts +84 -0
- package/references/minimem/src/cli/commands/sync-init.ts +290 -0
- package/references/minimem/src/cli/commands/sync.ts +70 -0
- package/references/minimem/src/cli/commands/upsert.ts +197 -0
- package/references/minimem/src/cli/config.ts +584 -0
- package/references/minimem/src/cli/index.ts +264 -0
- package/references/minimem/src/cli/shared.ts +161 -0
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +152 -0
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +209 -0
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +118 -0
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +207 -0
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +476 -0
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +363 -0
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +255 -0
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +193 -0
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +178 -0
- package/references/minimem/src/cli/sync/central.ts +292 -0
- package/references/minimem/src/cli/sync/conflicts.ts +204 -0
- package/references/minimem/src/cli/sync/daemon.ts +407 -0
- package/references/minimem/src/cli/sync/detection.ts +138 -0
- package/references/minimem/src/cli/sync/index.ts +107 -0
- package/references/minimem/src/cli/sync/operations.ts +373 -0
- package/references/minimem/src/cli/sync/registry.ts +279 -0
- package/references/minimem/src/cli/sync/state.ts +355 -0
- package/references/minimem/src/cli/sync/validation.ts +206 -0
- package/references/minimem/src/cli/sync/watcher.ts +234 -0
- package/references/minimem/src/cli/version.ts +34 -0
- package/references/minimem/src/core/index.ts +9 -0
- package/references/minimem/src/core/indexer.ts +628 -0
- package/references/minimem/src/core/searcher.ts +221 -0
- package/references/minimem/src/db/schema.ts +183 -0
- package/references/minimem/src/db/sqlite-vec.ts +24 -0
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +431 -0
- package/references/minimem/src/embeddings/batch-gemini.ts +392 -0
- package/references/minimem/src/embeddings/batch-openai.ts +409 -0
- package/references/minimem/src/embeddings/embeddings.ts +434 -0
- package/references/minimem/src/index.ts +109 -0
- package/references/minimem/src/internal.ts +299 -0
- package/references/minimem/src/minimem.ts +1276 -0
- package/references/minimem/src/search/__tests__/hybrid.test.ts +247 -0
- package/references/minimem/src/search/graph.ts +234 -0
- package/references/minimem/src/search/hybrid.ts +151 -0
- package/references/minimem/src/search/search.ts +256 -0
- package/references/minimem/src/server/__tests__/mcp.test.ts +341 -0
- package/references/minimem/src/server/__tests__/tools.test.ts +364 -0
- package/references/minimem/src/server/mcp.ts +326 -0
- package/references/minimem/src/server/tools.ts +720 -0
- package/references/minimem/src/session.ts +460 -0
- package/references/minimem/tsconfig.json +19 -0
- package/references/minimem/tsup.config.ts +26 -0
- package/references/minimem/vitest.config.ts +24 -0
- package/references/skill-tree/.claude/settings.json +6 -0
- package/references/skill-tree/.sudocode/issues.jsonl +11 -0
- package/references/skill-tree/.sudocode/specs.jsonl +1 -0
- package/references/skill-tree/CLAUDE.md +150 -0
- package/references/skill-tree/README.md +324 -0
- package/references/skill-tree/docs/GAPS_v1.md +221 -0
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +467 -0
- package/references/skill-tree/docs/TODOS.md +91 -0
- package/references/skill-tree/docs/anthropic_skill_guide.md +1364 -0
- package/references/skill-tree/docs/design/federated-skill-trees.md +524 -0
- package/references/skill-tree/docs/design/multi-agent-sync.md +759 -0
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +583 -0
- package/references/skill-tree/docs/scraper/POC_PLAN.md +420 -0
- package/references/skill-tree/docs/scraper/README.md +170 -0
- package/references/skill-tree/examples/basic-usage.ts +190 -0
- package/references/skill-tree/package-lock.json +1509 -0
- package/references/skill-tree/package.json +66 -0
- package/references/skill-tree/scraper/README.md +123 -0
- package/references/skill-tree/scraper/docs/DESIGN.md +683 -0
- package/references/skill-tree/scraper/docs/PLAN.md +336 -0
- package/references/skill-tree/scraper/drizzle.config.ts +10 -0
- package/references/skill-tree/scraper/package-lock.json +6329 -0
- package/references/skill-tree/scraper/package.json +68 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +27 -0
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +21 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +54 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +24 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +93 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +22 -0
- package/references/skill-tree/scraper/tsup.config.ts +14 -0
- package/references/skill-tree/scraper/vitest.config.ts +17 -0
- package/references/skill-tree/scripts/convert-to-vitest.ts +166 -0
- package/references/skill-tree/skills/skill-writer/SKILL.md +339 -0
- package/references/skill-tree/skills/skill-writer/references/examples.md +326 -0
- package/references/skill-tree/skills/skill-writer/references/patterns.md +210 -0
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +123 -0
- package/references/skill-tree/test/run-all.ts +106 -0
- package/references/skill-tree/test/utils.ts +128 -0
- package/references/skill-tree/vitest.config.ts +16 -0
- package/src/atlas.ts +525 -13
- package/src/embeddings/provider.ts +10 -3
- package/src/index.ts +127 -5
- package/src/learning/index.ts +41 -6
- package/src/learning/knowledge-extractor.ts +470 -0
- package/src/learning/meta-learner.ts +54 -0
- package/src/learning/pipeline.ts +87 -8
- package/src/learning/team-ingester.ts +499 -0
- package/src/learning/team-meta-learner.ts +558 -0
- package/src/learning/team-pipeline.ts +364 -0
- package/src/learning/trajectory-sources/dataclaw.ts +403 -0
- package/src/learning/trajectory-sources/entire.ts +240 -0
- package/src/learning/trajectory-sources/file.ts +136 -0
- package/src/learning/trajectory-sources/huggingface.ts +248 -0
- package/src/learning/trajectory-sources/in-memory.ts +61 -0
- package/src/learning/trajectory-sources/index.ts +15 -0
- package/src/learning/trajectory-sources/pipeline.ts +69 -0
- package/src/memory/graph-layers/base.ts +184 -0
- package/src/memory/graph-layers/causal.ts +16 -0
- package/src/memory/graph-layers/entity.ts +16 -0
- package/src/memory/graph-layers/index.ts +5 -0
- package/src/memory/graph-layers/semantic.ts +16 -0
- package/src/memory/graph-layers/temporal.ts +16 -0
- package/src/memory/index.ts +45 -0
- package/src/memory/knowledge-bank.ts +1260 -0
- package/src/memory/knowledge-defrag.ts +329 -0
- package/src/memory/knowledge-graph.ts +361 -0
- package/src/memory/search-provider.ts +35 -0
- package/src/memory/search-providers/index.ts +3 -0
- package/src/memory/search-providers/minimem.ts +84 -0
- package/src/memory/search-providers/text-similarity.ts +35 -0
- package/src/memory/skill-exporter.ts +357 -0
- package/src/memory/system.ts +61 -8
- package/src/memory/team-experience.ts +604 -0
- package/src/runtime/backends/acp-protocol.ts +231 -0
- package/src/runtime/backends/acp.ts +57 -196
- package/src/runtime/backends/index.ts +14 -0
- package/src/runtime/backends/macro-agent.ts +177 -0
- package/src/runtime/compute-provider.ts +206 -0
- package/src/runtime/index.ts +22 -0
- package/src/runtime/manager.ts +167 -23
- package/src/runtime/types.ts +41 -0
- package/src/search/evaluator.ts +29 -4
- package/src/search/index.ts +9 -0
- package/src/search/refinement-loop.ts +106 -12
- package/src/search/team-router.ts +459 -0
- package/src/session-bank/git-reader.ts +190 -0
- package/src/session-bank/index.ts +24 -0
- package/src/session-bank/parser.ts +366 -0
- package/src/session-bank/session-bank.ts +464 -0
- package/src/session-bank/types.ts +173 -0
- package/src/surfacing/index.ts +23 -0
- package/src/surfacing/publisher.ts +23 -0
- package/src/surfacing/skill-library.ts +31 -0
- package/src/surfacing/skill-publisher.ts +223 -0
- package/src/surfacing/sqlite-storage-adapter.ts +301 -0
- package/src/surfacing/team-skill-library.ts +610 -0
- package/src/types/config.ts +252 -0
- package/src/types/dataclaw.ts +99 -0
- package/src/types/huggingface-transformers.d.ts +12 -0
- package/src/types/index.ts +156 -0
- package/src/types/knowledge-graph.ts +246 -0
- package/src/types/knowledge.ts +388 -0
- package/src/types/team-meta.ts +212 -0
- package/src/types/team-playbook.ts +384 -0
- package/src/types/team-trajectory.ts +673 -0
- package/src/types/trajectory-source.ts +47 -0
- package/src/utils/frontmatter.ts +118 -0
- package/src/utils/index.ts +7 -0
- package/src/workspace/index.ts +48 -0
- package/src/workspace/runner.ts +281 -0
- package/src/workspace/skill-converter.ts +288 -0
- package/src/workspace/templates/index.ts +64 -0
- package/src/workspace/templates/knowledge-defrag.ts +223 -0
- package/src/workspace/templates/knowledge-extraction.ts +337 -0
- package/src/workspace/templates/meta-reflection.ts +208 -0
- package/src/workspace/templates/playbook-extraction.ts +240 -0
- package/src/workspace/templates/refinement-analysis.ts +162 -0
- package/src/workspace/templates/solution-evaluation.ts +199 -0
- package/src/workspace/templates/team-playbook-extraction.ts +631 -0
- package/src/workspace/templates/team-trajectory-analysis.ts +564 -0
- package/src/workspace/templates/trajectory-analysis.ts +234 -0
- package/src/workspace/templates/usage-inference.ts +163 -0
- package/src/workspace/types.ts +233 -0
- package/tests/atlas-knowledge.test.ts +165 -0
- package/tests/gap-fixes.test.ts +1103 -0
- package/tests/integration/dataclaw-e2e.test.ts +559 -0
- package/tests/integration/e2e.test.ts +407 -0
- package/tests/integration/entire-e2e.test.ts +187 -0
- package/tests/integration/huggingface-e2e.test.ts +627 -0
- package/tests/integration/session-bank.test.ts +225 -0
- package/tests/integration/skill-tree-wiring.test.ts +152 -0
- package/tests/learning/dataclaw-trajectory-source.test.ts +642 -0
- package/tests/learning/entire-trajectory-source.test.ts +380 -0
- package/tests/learning/huggingface-trajectory-source.test.ts +817 -0
- package/tests/learning/knowledge-extractor.test.ts +491 -0
- package/tests/learning/team-ingester.test.ts +349 -0
- package/tests/learning/team-meta-learner.test.ts +618 -0
- package/tests/learning/team-pipeline.test.ts +334 -0
- package/tests/learning/trajectory-sources.test.ts +312 -0
- package/tests/memory/graph-layers/semantic.test.ts +219 -0
- package/tests/memory/knowledge-bank-extraction.test.ts +558 -0
- package/tests/memory/knowledge-bank.test.ts +705 -0
- package/tests/memory/knowledge-defrag.test.ts +366 -0
- package/tests/memory/knowledge-evolution.test.ts +563 -0
- package/tests/memory/knowledge-graph.test.ts +492 -0
- package/tests/memory/knowledge-inbox.test.ts +258 -0
- package/tests/memory/knowledge-minimem.test.ts +251 -0
- package/tests/memory/skill-exporter.test.ts +470 -0
- package/tests/memory/team-experience.test.ts +411 -0
- package/tests/runtime/agent-manager.test.ts +1 -1
- package/tests/runtime/compute-provider.test.ts +288 -0
- package/tests/runtime/delegate.test.ts +349 -0
- package/tests/runtime/macro-agent-backend.test.ts +266 -0
- package/tests/search/team-router.test.ts +376 -0
- package/tests/session-bank/fixtures/multi-tool-session/full.jsonl +12 -0
- package/tests/session-bank/fixtures/multi-tool-session/metadata.json +28 -0
- package/tests/session-bank/fixtures/root-metadata.json +18 -0
- package/tests/session-bank/fixtures/simple-session/full.jsonl +6 -0
- package/tests/session-bank/fixtures/simple-session/metadata.json +38 -0
- package/tests/session-bank/git-reader.test.ts +232 -0
- package/tests/session-bank/parser.test.ts +321 -0
- package/tests/session-bank/session-bank.test.ts +546 -0
- package/tests/surfacing/skill-publisher.test.ts +398 -0
- package/tests/surfacing/sqlite-storage-adapter.test.ts +218 -0
- package/tests/surfacing/team-skill-library.test.ts +444 -0
- package/tests/types/team-meta.test.ts +147 -0
- package/tests/types/team-playbook.test.ts +246 -0
- package/tests/types/team-trajectory.test.ts +557 -0
- package/tests/utils/frontmatter.test.ts +208 -0
- package/tests/workspace/full-flow.test.ts +839 -0
- package/tests/workspace/manager.test.ts +215 -0
- package/tests/workspace/runner.test.ts +330 -0
- package/tests/workspace/skill-converter.test.ts +205 -0
- package/tests/workspace/templates/knowledge-extraction.test.ts +235 -0
- package/tests/workspace/templates/team-playbook-extraction.test.ts +341 -0
- package/tests/workspace/templates/team-trajectory-analysis.test.ts +417 -0
- package/src/learning/llm-extractor.ts +0 -542
package/README.md
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
|
-
#
|
|
1
|
+
# cognitive-core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A TypeScript learning system for AI agents. Records how agents solve problems, extracts reusable playbooks and factual knowledge from trajectories, and injects relevant guidance into future tasks.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Table of Contents
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- [Motivation](#motivation)
|
|
8
|
+
- [Installation](#installation)
|
|
9
|
+
- [Quick Start](#quick-start)
|
|
10
|
+
- [How It Works](#how-it-works)
|
|
11
|
+
- [Knowledge Bank](#knowledge-bank)
|
|
12
|
+
- [CLI](#cli)
|
|
13
|
+
- [Agent Backends](#agent-backends)
|
|
14
|
+
- [Skill Library](#skill-library)
|
|
15
|
+
- [Configuration](#configuration)
|
|
16
|
+
- [Core Types](#core-types)
|
|
17
|
+
- [Research References](#research-references)
|
|
18
|
+
- [Limitations](#limitations)
|
|
19
|
+
- [Contributing](#contributing)
|
|
20
|
+
- [License](#license)
|
|
8
21
|
|
|
9
|
-
|
|
10
|
-
- **Experience Memory** (ReMem-style): Task-level retrieval of similar past experiences
|
|
11
|
-
- **Concept Library** (Stitch/LILO-style): Reusable code patterns and abstractions
|
|
12
|
-
- **Strategy Bank** (ArcMemo-style): High-level reasoning patterns
|
|
13
|
-
- **Skill Store** (Claudeception-inspired): Actionable skills with specific triggers
|
|
22
|
+
## Motivation
|
|
14
23
|
|
|
15
|
-
- **Learning Engine**: Automatic extraction of knowledge from trajectories
|
|
16
|
-
- Credit assignment for identifying key steps
|
|
17
|
-
- Pattern extraction using text analysis or LLM agents
|
|
18
|
-
- Deduplication to prevent redundant learning
|
|
19
24
|
|
|
20
|
-
-
|
|
21
|
-
- Strategies (when/what rules)
|
|
22
|
-
- Code concepts (reusable patterns)
|
|
23
|
-
- Skills (concrete solutions with triggers)
|
|
25
|
+
cognitive-core gives agents persistent, structured memory:
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
1. **Trajectories** record what the agent did (ReAct-style thought/action/observation steps)
|
|
28
|
+
2. **Playbooks** distill trajectories into reusable guidance (strategy, tactics, verification criteria)
|
|
29
|
+
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
|
|
31
|
+
5. **Meta-learning** tracks which playbooks helped and adjusts routing over time
|
|
32
|
+
|
|
33
|
+
The result: agents that get measurably better at recurring problem types without fine-tuning or prompt engineering.
|
|
27
34
|
|
|
28
35
|
## Installation
|
|
29
36
|
|
|
@@ -31,333 +38,596 @@ A TypeScript-native cognitive core for building AI agents that learn from experi
|
|
|
31
38
|
npm install cognitive-core
|
|
32
39
|
```
|
|
33
40
|
|
|
41
|
+
Requires Node.js 18+.
|
|
42
|
+
|
|
34
43
|
## Quick Start
|
|
35
44
|
|
|
36
|
-
###
|
|
45
|
+
### Solve a task with memory-augmented agents
|
|
37
46
|
|
|
38
47
|
```typescript
|
|
39
48
|
import { createAtlasWithAgents, createTask, createMockBackend } from 'cognitive-core';
|
|
40
49
|
|
|
41
|
-
// Create Atlas with agent backends
|
|
42
50
|
const atlas = createAtlasWithAgents(
|
|
43
|
-
[createMockBackend()],
|
|
44
|
-
{ storage: { baseDir: '.
|
|
51
|
+
[createMockBackend()],
|
|
52
|
+
{ storage: { baseDir: '.cognitive-core' } }
|
|
45
53
|
);
|
|
46
54
|
|
|
47
|
-
// Initialize (loads persisted data)
|
|
48
55
|
await atlas.init();
|
|
49
56
|
|
|
50
|
-
|
|
51
|
-
const task = createTask({
|
|
57
|
+
const result = await atlas.solve(createTask({
|
|
52
58
|
domain: 'code',
|
|
53
|
-
description: '
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
const result = await atlas.solve(task);
|
|
57
|
-
console.log('Success:', result.trajectory.outcome.success);
|
|
58
|
-
console.log('Routing strategy:', result.routing?.strategy);
|
|
59
|
-
console.log('Used refinement:', !!result.refinement);
|
|
59
|
+
description: 'Fix the TypeScript compilation error in auth.ts',
|
|
60
|
+
}));
|
|
60
61
|
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
console.log(
|
|
64
|
-
console.log('Backends:', stats.execution?.backends);
|
|
62
|
+
console.log(result.trajectory.outcome.success); // true
|
|
63
|
+
console.log(result.routing?.strategy); // 'direct' | 'adapt' | 'explore' | 'fallback'
|
|
64
|
+
console.log(result.injectedPlaybooks?.length); // number of playbooks injected
|
|
65
65
|
|
|
66
|
-
// Close (persists data)
|
|
67
66
|
await atlas.close();
|
|
68
67
|
```
|
|
69
68
|
|
|
70
|
-
###
|
|
69
|
+
### Feed trajectories from external agents
|
|
70
|
+
|
|
71
|
+
cognitive-core can learn from trajectories produced by external agents. Record what happened elsewhere and feed it in.
|
|
71
72
|
|
|
72
73
|
```typescript
|
|
73
|
-
import {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
74
|
+
import { createAtlas, createTrajectory, createTask, createStep, successOutcome } from 'cognitive-core';
|
|
75
|
+
|
|
76
|
+
const atlas = createAtlas({ storage: { baseDir: '.cognitive-core' } });
|
|
77
|
+
await atlas.init();
|
|
78
|
+
|
|
79
|
+
const trajectory = createTrajectory({
|
|
80
|
+
task: createTask({
|
|
81
|
+
domain: 'code',
|
|
82
|
+
description: 'Fix the null pointer exception in user service',
|
|
83
|
+
}),
|
|
84
|
+
steps: [
|
|
85
|
+
createStep({
|
|
86
|
+
thought: 'Check where the null value originates',
|
|
87
|
+
action: 'Read src/services/user.ts',
|
|
88
|
+
observation: 'getUserById returns undefined when user not found',
|
|
89
|
+
}),
|
|
90
|
+
createStep({
|
|
91
|
+
thought: 'Add a guard clause before accessing user properties',
|
|
92
|
+
action: 'Edit src/services/user.ts to add null check',
|
|
93
|
+
observation: 'Added: if (!user) return null',
|
|
94
|
+
}),
|
|
95
|
+
],
|
|
96
|
+
outcome: successOutcome('Fixed by adding null check in getUserById'),
|
|
97
|
+
agentId: 'claude-code',
|
|
85
98
|
});
|
|
86
99
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
const result = await atlas.processTrajectory(trajectory);
|
|
101
|
+
console.log(result.abstractable); // true - system can extract a playbook from this
|
|
102
|
+
|
|
103
|
+
await atlas.close();
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Query memory directly
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
const context = await atlas.queryMemory('typescript import resolution error', {
|
|
110
|
+
domains: ['code'],
|
|
111
|
+
includePlaybooks: true,
|
|
99
112
|
});
|
|
100
113
|
|
|
101
|
-
|
|
114
|
+
for (const { playbook, score } of context.playbooks) {
|
|
115
|
+
console.log(`${playbook.name} (${Math.round(score * 100)}% match)`);
|
|
116
|
+
console.log(` Strategy: ${playbook.guidance.strategy}`);
|
|
117
|
+
console.log(` Tactics: ${playbook.guidance.tactics.join(', ')}`);
|
|
118
|
+
}
|
|
119
|
+
```
|
|
102
120
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
121
|
+
## How It Works
|
|
122
|
+
|
|
123
|
+
### Solve flow
|
|
124
|
+
|
|
125
|
+
Every call to `atlas.solve(task)` runs through this pipeline:
|
|
126
|
+
|
|
127
|
+
```mermaid
|
|
128
|
+
flowchart TD
|
|
129
|
+
Task[Task arrives] --> Router[TaskRouter]
|
|
130
|
+
|
|
131
|
+
Router -->|queries| Memory[MemorySystem]
|
|
132
|
+
Memory --> Exp[ExperienceMemory]
|
|
133
|
+
Memory --> PB[PlaybookLibrary]
|
|
134
|
+
Memory --> KB[KnowledgeBank]
|
|
135
|
+
Memory --> Meta[MetaMemory]
|
|
136
|
+
|
|
137
|
+
Router --> Decision{RoutingDecision}
|
|
138
|
+
|
|
139
|
+
Decision --> Agent[AgentManager]
|
|
140
|
+
Agent -->|injects playbooks + knowledge| Backend[Backend]
|
|
141
|
+
Backend -->|returns trajectory| Session[AgentSession]
|
|
142
|
+
|
|
143
|
+
Session --> Check{Succeeded?}
|
|
144
|
+
Check -->|Yes| Learn[LearningPipeline]
|
|
145
|
+
Check -->|No| Refine{Retry?}
|
|
146
|
+
Refine -->|Yes, max 3x| Agent
|
|
147
|
+
Refine -->|No| Learn
|
|
148
|
+
|
|
149
|
+
Learn --> Analyze[TrajectoryAnalyzer]
|
|
150
|
+
Learn --> Extract[PlaybookExtractor]
|
|
151
|
+
Learn --> KnowExtract[KnowledgeExtractor]
|
|
152
|
+
Learn --> Usage[UsageInference]
|
|
153
|
+
Learn --> MetaLearn[MetaLearner]
|
|
154
|
+
|
|
155
|
+
Analyze --> Updated[Memory updated]
|
|
156
|
+
Extract --> Updated
|
|
157
|
+
KnowExtract --> Updated
|
|
158
|
+
Usage --> Updated
|
|
159
|
+
MetaLearn --> Updated
|
|
160
|
+
|
|
161
|
+
Updated -.->|next task| Router
|
|
108
162
|
```
|
|
109
163
|
|
|
110
|
-
|
|
164
|
+
### Playbook lifecycle
|
|
165
|
+
|
|
166
|
+
A playbook starts with low confidence (0.3) after extraction from a cluster of similar trajectories. Each time it's injected into an agent and the task succeeds, confidence grows. After enough successful uses (default: 5 successes, 80%+ success rate), it gets promoted to a **core skill** that's always in the system prompt. If it starts failing in specific contexts, the system records refinements rather than discarding the playbook entirely.
|
|
167
|
+
|
|
168
|
+
```mermaid
|
|
169
|
+
stateDiagram-v2
|
|
170
|
+
[*] --> Extracted : pattern found across trajectories
|
|
171
|
+
|
|
172
|
+
Extracted --> Contextual : confidence above 0.3
|
|
173
|
+
Contextual --> Domain : tagged to domain
|
|
174
|
+
|
|
175
|
+
Contextual --> Contextual : success
|
|
176
|
+
Domain --> Domain : success
|
|
177
|
+
|
|
178
|
+
Domain --> Core : 0.85+ confidence, 5+ successes, 80%+ rate
|
|
179
|
+
Core --> Core : success
|
|
180
|
+
|
|
181
|
+
Core --> Domain : 3 consecutive failures
|
|
182
|
+
Domain --> Contextual : confidence drops
|
|
111
183
|
|
|
184
|
+
Contextual --> Refined : failure in specific context
|
|
185
|
+
Refined --> Contextual : refinement recorded
|
|
112
186
|
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
187
|
+
|
|
188
|
+
### Memory architecture
|
|
189
|
+
|
|
190
|
+
The four memory stores serve different retrieval patterns:
|
|
191
|
+
|
|
192
|
+
```mermaid
|
|
193
|
+
graph LR
|
|
194
|
+
subgraph MemorySystem
|
|
195
|
+
E[ExperienceMemory]
|
|
196
|
+
P[PlaybookLibrary]
|
|
197
|
+
K[KnowledgeBank]
|
|
198
|
+
M[MetaMemory]
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
subgraph Search
|
|
202
|
+
BM[BM25 Index]
|
|
203
|
+
VS[sqlite-vec]
|
|
204
|
+
TS[Text Similarity]
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
subgraph Providers
|
|
208
|
+
OAI[OpenAI]
|
|
209
|
+
VOY[Voyage]
|
|
210
|
+
HF[HuggingFace local]
|
|
211
|
+
MM[minimem optional]
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
E --> BM
|
|
215
|
+
E --> VS
|
|
216
|
+
P --> BM
|
|
217
|
+
P --> VS
|
|
218
|
+
K --> TS
|
|
219
|
+
K -.-> MM
|
|
220
|
+
VS -.-> OAI
|
|
221
|
+
VS -.-> VOY
|
|
222
|
+
VS -.-> HF
|
|
223
|
+
|
|
224
|
+
subgraph Storage
|
|
225
|
+
JSON[JSON files]
|
|
226
|
+
SQL[SQLite]
|
|
227
|
+
MD[Markdown + YAML]
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
E --> JSON
|
|
231
|
+
P --> JSON
|
|
232
|
+
M --> JSON
|
|
233
|
+
K --> MD
|
|
234
|
+
VS --> SQL
|
|
142
235
|
```
|
|
143
236
|
|
|
144
|
-
|
|
237
|
+
| Store | Purpose | Format |
|
|
238
|
+
|-------|---------|--------|
|
|
239
|
+
| **ExperienceMemory** | Episodic — *what happened* | JSON |
|
|
240
|
+
| **PlaybookLibrary** | Procedural — *how to do things* | JSON |
|
|
241
|
+
| **KnowledgeBank** | Semantic — *facts, concepts, relationships* | Markdown + YAML frontmatter |
|
|
242
|
+
| **MetaMemory** | Meta-learning — *what worked* | JSON |
|
|
145
243
|
|
|
146
|
-
###
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
244
|
+
### Search and matching
|
|
245
|
+
|
|
246
|
+
Memory search uses BM25 text matching by default. For higher-quality retrieval, plug in an embedding provider (OpenAI, Voyage, or local via `@huggingface/transformers`) and cognitive-core switches to hybrid BM25 + vector search backed by `sqlite-vec`.
|
|
247
|
+
|
|
248
|
+
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
|
+
|
|
250
|
+
## Knowledge Bank
|
|
251
|
+
|
|
252
|
+
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.
|
|
253
|
+
|
|
254
|
+
### Knowledge note types
|
|
255
|
+
|
|
256
|
+
| Type | Purpose | Example |
|
|
257
|
+
|------|---------|---------|
|
|
258
|
+
| **Observation** | Atomic fact learned from experience | "Prisma requires `db push` before `migrate dev` when schema has drifted" |
|
|
259
|
+
| **Entity** | Living document about a tool/library/pattern | "Everything I know about Prisma" |
|
|
260
|
+
| **Domain summary** | High-level overview of a knowledge domain | "Database knowledge overview" |
|
|
261
|
+
|
|
262
|
+
### How knowledge is stored
|
|
263
|
+
|
|
264
|
+
Knowledge notes are plain Markdown files with structured YAML frontmatter, organized on the filesystem:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
knowledge/
|
|
268
|
+
├── observations/ # Atomic facts (k-*.md)
|
|
269
|
+
├── entities/ # Living entity docs (prisma.md, vitest.md)
|
|
270
|
+
└── domains/ # Domain summaries (database.md, testing.md)
|
|
155
271
|
```
|
|
156
272
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
273
|
+
Any agent with filesystem access can browse, grep, and read knowledge directly — no special API required.
|
|
274
|
+
|
|
275
|
+
### Multi-layer knowledge graph
|
|
276
|
+
|
|
277
|
+
Relationships between knowledge notes are tracked in a multi-layer graph overlay (inspired by [MAGMA](https://arxiv.org/abs/2601.03236)):
|
|
278
|
+
|
|
279
|
+
| Layer | Captures | Example |
|
|
280
|
+
|-------|----------|---------|
|
|
281
|
+
| **Semantic** | Conceptual relationships | "Prisma *depends-on* PostgreSQL" |
|
|
282
|
+
| **Temporal** | When knowledge was learned | "Observation A *supersedes* B" |
|
|
283
|
+
| **Causal** | Cause-effect chains | "Upgrading TS 5.4 *broke* enum const exports" |
|
|
284
|
+
| **Entity** | Tool/component interactions | "Next.js *uses* React" |
|
|
285
|
+
|
|
286
|
+
### Knowledge lifecycle
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
Trajectory → KnowledgeExtractor → Observations (confidence: 0.3)
|
|
290
|
+
│
|
|
291
|
+
reinforced by more trajectories
|
|
292
|
+
│
|
|
293
|
+
Observations (confidence: 0.5-0.8)
|
|
294
|
+
│
|
|
295
|
+
consolidated into entity notes
|
|
296
|
+
│
|
|
297
|
+
Entity Notes (living docs)
|
|
298
|
+
│
|
|
299
|
+
domain summaries regenerated
|
|
300
|
+
│
|
|
301
|
+
Domain Summaries
|
|
169
302
|
```
|
|
170
303
|
|
|
171
|
-
|
|
304
|
+
Knowledge evolves through:
|
|
305
|
+
- **Reinforcement** — same fact observed again increases confidence
|
|
306
|
+
- **Contradiction detection** — conflicting facts are flagged and resolved
|
|
307
|
+
- **Consolidation** — observations about the same entity merge into entity notes
|
|
308
|
+
- **Decay** — unvalidated knowledge gradually loses confidence
|
|
309
|
+
|
|
310
|
+
### Knowledge surfacing
|
|
311
|
+
|
|
312
|
+
During `atlas.solve()`, relevant knowledge is surfaced alongside playbooks as an independent context section:
|
|
313
|
+
|
|
172
314
|
```typescript
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
315
|
+
const result = await atlas.solve(task);
|
|
316
|
+
console.log(result.surfacedKnowledge?.length); // knowledge notes injected
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Three-tier retrieval:
|
|
320
|
+
1. **Domain match** — if the task domain matches a knowledge domain, include the domain summary
|
|
321
|
+
2. **Entity match** — if the task mentions known entities, include their notes
|
|
322
|
+
3. **Semantic match** — text similarity search for contextually relevant observations
|
|
323
|
+
|
|
324
|
+
### minimem integration
|
|
325
|
+
|
|
326
|
+
When [minimem](https://github.com/alexngai/minimem) is available, the knowledge bank can delegate search to minimem's hybrid search (vector + BM25) for higher-quality retrieval. Set `minimemAware: true` in config to enable. The two systems communicate via file conventions only — no cross-package imports.
|
|
327
|
+
|
|
328
|
+
See [Design Doc](docs/DESIGN-semantic-memory-knowledge-bank.md) for the full architecture.
|
|
329
|
+
|
|
330
|
+
## CLI
|
|
331
|
+
|
|
332
|
+
cognitive-core ships a CLI for querying playbooks and storing trajectories without writing code.
|
|
333
|
+
|
|
334
|
+
```bash
|
|
335
|
+
# Initialize storage
|
|
336
|
+
cognitive-core init --dir .cognitive-core
|
|
337
|
+
|
|
338
|
+
# Store a trajectory from a JSON file
|
|
339
|
+
cognitive-core store ./trajectory.json
|
|
340
|
+
|
|
341
|
+
# Search for relevant playbooks
|
|
342
|
+
cognitive-core search "fix typescript import errors" --domain code
|
|
343
|
+
# Found 2 playbook(s) matching "fix typescript import errors":
|
|
344
|
+
#
|
|
345
|
+
# Match: 92% (trigger)
|
|
346
|
+
# ## typescript-import-resolution
|
|
347
|
+
# Confidence: 85%
|
|
348
|
+
# 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
|
+
|
|
354
|
+
# Get full playbook details
|
|
355
|
+
cognitive-core get playbook-abc123
|
|
356
|
+
|
|
357
|
+
# List domains with playbooks
|
|
358
|
+
cognitive-core domains
|
|
359
|
+
|
|
360
|
+
# View memory statistics
|
|
361
|
+
cognitive-core stats
|
|
362
|
+
# Experiences: 47
|
|
363
|
+
# Playbooks: 12
|
|
364
|
+
# Meta-observations: 31
|
|
180
365
|
```
|
|
181
366
|
|
|
182
|
-
|
|
367
|
+
All commands support `--json` for structured output:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
cognitive-core search "debug async errors" --json | jq '.results[0].strategy'
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Agent Backends
|
|
374
|
+
|
|
375
|
+
cognitive-core delegates execution to backends that handle spawning, message passing, and trajectory extraction.
|
|
376
|
+
|
|
377
|
+
### Subprocess backend
|
|
378
|
+
|
|
379
|
+
Spawns agents as child processes. Works with any CLI agent.
|
|
380
|
+
|
|
183
381
|
```typescript
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
382
|
+
import { createAtlasWithAgents, createSubprocessBackend, claudeCodeConfig } from 'cognitive-core';
|
|
383
|
+
|
|
384
|
+
const backend = createSubprocessBackend({
|
|
385
|
+
'claude-code': claudeCodeConfig, // Pre-configured for Claude Code CLI
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
const atlas = createAtlasWithAgents([backend], {
|
|
389
|
+
execution: {
|
|
390
|
+
defaultAgentType: 'claude-code',
|
|
391
|
+
maxExecutionTime: 300,
|
|
392
|
+
captureToolCalls: true,
|
|
393
|
+
},
|
|
394
|
+
});
|
|
192
395
|
```
|
|
193
396
|
|
|
194
|
-
|
|
397
|
+
### ACP backend
|
|
195
398
|
|
|
196
|
-
|
|
399
|
+
Uses the [Agent Communication Protocol](https://www.npmjs.com/package/acp-factory) for richer interaction with ACP-compatible agents.
|
|
197
400
|
|
|
198
|
-
|
|
401
|
+
```typescript
|
|
402
|
+
import { createACPBackend, claudeCodeACPConfig } from 'cognitive-core';
|
|
403
|
+
|
|
404
|
+
const backend = createACPBackend({
|
|
405
|
+
'claude-code': claudeCodeACPConfig, // Uses npx claude-code-acp
|
|
406
|
+
});
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### Custom backends
|
|
199
410
|
|
|
200
411
|
Implement the `AgentBackend` interface:
|
|
201
412
|
|
|
202
413
|
```typescript
|
|
203
414
|
import type { AgentBackend, AgentSpawnConfig, AgentSession } from 'cognitive-core';
|
|
204
415
|
|
|
205
|
-
class
|
|
416
|
+
class MyBackend implements AgentBackend {
|
|
206
417
|
readonly name = 'my-agent';
|
|
207
|
-
readonly supportedTypes = ['my-agent'
|
|
418
|
+
readonly supportedTypes = ['my-agent'];
|
|
208
419
|
|
|
209
|
-
async isAvailable(): Promise<boolean> {
|
|
210
|
-
// Check if agent is available
|
|
211
|
-
return true;
|
|
212
|
-
}
|
|
420
|
+
async isAvailable(): Promise<boolean> { return true; }
|
|
213
421
|
|
|
214
422
|
async spawn(config: AgentSpawnConfig): Promise<AgentSession> {
|
|
215
|
-
//
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
timeout: config.timeout,
|
|
220
|
-
});
|
|
423
|
+
// config.task - the task to solve
|
|
424
|
+
// config.systemPromptAdditions - playbook context to inject
|
|
425
|
+
// config.timeout - max execution time
|
|
426
|
+
const session = await launchMyAgent(config);
|
|
221
427
|
return session;
|
|
222
428
|
}
|
|
223
429
|
|
|
224
|
-
async getSession(
|
|
225
|
-
|
|
226
|
-
return this.sessions.get(sessionId);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
async terminate(sessionId: string): Promise<void> {
|
|
230
|
-
// Terminate a running session
|
|
231
|
-
await this.sessions.get(sessionId)?.kill();
|
|
232
|
-
}
|
|
430
|
+
async getSession(id: string): Promise<AgentSession | undefined> { /* ... */ }
|
|
431
|
+
async terminate(id: string): Promise<void> { /* ... */ }
|
|
233
432
|
}
|
|
234
|
-
|
|
235
|
-
// Register with Atlas
|
|
236
|
-
const atlas = createAtlasWithAgents([new MyAgentBackend()]);
|
|
237
433
|
```
|
|
238
434
|
|
|
239
|
-
###
|
|
435
|
+
### Observing agent execution
|
|
240
436
|
|
|
241
437
|
```typescript
|
|
242
438
|
const manager = atlas.getAgentManager();
|
|
243
439
|
|
|
244
|
-
// Add observers for monitoring
|
|
245
440
|
manager.addObserver({
|
|
246
441
|
onSessionStart: (session) => console.log('Started:', session.id),
|
|
247
442
|
onToolCall: (session, toolCall) => console.log('Tool:', toolCall.name),
|
|
248
|
-
onSessionEnd: (session, trajectory) =>
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const comparison = await manager.compareWithKnowledge({
|
|
253
|
-
agentType: 'claude-code',
|
|
254
|
-
task: createTask({ domain: 'code', description: 'Fix the bug' }),
|
|
443
|
+
onSessionEnd: (session, trajectory) => {
|
|
444
|
+
console.log('Done:', trajectory.outcome.success);
|
|
445
|
+
console.log('Steps:', trajectory.steps.length);
|
|
446
|
+
},
|
|
255
447
|
});
|
|
256
|
-
|
|
257
|
-
console.log('Time saved:', comparison.improvement.timeDelta, 'ms');
|
|
258
|
-
console.log('Fewer tool calls:', comparison.improvement.toolCallDelta);
|
|
259
448
|
```
|
|
260
449
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
> **Note**: The `setProvider()` API is deprecated. Use `createAtlasWithAgents()` instead.
|
|
450
|
+
## Skill Library
|
|
264
451
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
```typescript
|
|
268
|
-
import type { LLMProvider, Message, CompletionOptions } from 'cognitive-core';
|
|
269
|
-
|
|
270
|
-
class MyProvider implements LLMProvider {
|
|
271
|
-
readonly name = 'my-provider';
|
|
272
|
-
|
|
273
|
-
async complete(
|
|
274
|
-
messages: Message[],
|
|
275
|
-
options?: CompletionOptions
|
|
276
|
-
): Promise<string> {
|
|
277
|
-
const response = await myLLMAPI.chat({
|
|
278
|
-
messages,
|
|
279
|
-
temperature: options?.temperature,
|
|
280
|
-
max_tokens: options?.maxTokens,
|
|
281
|
-
});
|
|
282
|
-
return response.content;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
// Deprecated - prefer createAtlasWithAgents()
|
|
287
|
-
atlas.setProvider(new MyProvider());
|
|
288
|
-
```
|
|
452
|
+
The skill library manages how playbooks are surfaced to agents across four tiers:
|
|
289
453
|
|
|
290
|
-
|
|
454
|
+
| Tier | When loaded | Criteria |
|
|
455
|
+
|------|-------------|----------|
|
|
456
|
+
| **Core** | Always in system prompt | 85%+ confidence, 5+ successes, 80%+ success rate |
|
|
457
|
+
| **Domain** | When task domain matches | Domain-tagged playbooks |
|
|
458
|
+
| **Contextual** | When task query matches | Semantic/trigger match |
|
|
459
|
+
| **On-demand** | Agent explicitly requests | Available via CLI |
|
|
291
460
|
|
|
292
|
-
|
|
461
|
+
Playbooks are automatically promoted and demoted based on usage outcomes. Three consecutive failures trigger demotion review.
|
|
293
462
|
|
|
294
463
|
```typescript
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
domain: 'code',
|
|
300
|
-
description: 'Fix the authentication bug',
|
|
301
|
-
}),
|
|
302
|
-
steps: [
|
|
303
|
-
createStep({
|
|
304
|
-
thought: 'Need to check the token validation',
|
|
305
|
-
action: 'Read auth.ts',
|
|
306
|
-
observation: 'Found expired token check missing',
|
|
307
|
-
}),
|
|
308
|
-
createStep({
|
|
309
|
-
thought: 'Adding expiry validation',
|
|
310
|
-
action: 'Edit auth.ts to add token.exp check',
|
|
311
|
-
observation: 'Token validation added',
|
|
312
|
-
}),
|
|
313
|
-
],
|
|
314
|
-
outcome: successOutcome('Fixed by adding token expiry check'),
|
|
315
|
-
agentId: 'external-agent',
|
|
316
|
-
});
|
|
317
|
-
|
|
318
|
-
// Process for learning
|
|
319
|
-
const result = await atlas.processTrajectory(trajectory);
|
|
320
|
-
console.log('Abstractable:', result.abstractable);
|
|
321
|
-
console.log('Strategy extracted:', result.strategyExtracted);
|
|
464
|
+
const skills = await atlas.getSkillLibrary()?.getSkillsForAgent(task);
|
|
465
|
+
// skills.core - always-on playbooks
|
|
466
|
+
// skills.domain - relevant to task domain
|
|
467
|
+
// skills.contextual - matched to this specific task
|
|
322
468
|
```
|
|
323
469
|
|
|
324
470
|
## Configuration
|
|
325
471
|
|
|
326
472
|
```typescript
|
|
327
|
-
const atlas =
|
|
473
|
+
const atlas = createAtlasWithAgents([backend], {
|
|
474
|
+
storage: {
|
|
475
|
+
baseDir: '.cognitive-core',
|
|
476
|
+
persistenceEnabled: true,
|
|
477
|
+
},
|
|
328
478
|
learning: {
|
|
329
|
-
creditStrategy: 'simple',
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
deduplicationThreshold: 0.9,
|
|
479
|
+
creditStrategy: 'simple', // 'simple' | 'contribution'
|
|
480
|
+
minTrajectories: 10, // batch learning threshold
|
|
481
|
+
deduplicationThreshold: 0.9, // prevent duplicate playbooks
|
|
333
482
|
},
|
|
334
483
|
router: {
|
|
335
|
-
similarityThreshold: 0.85,
|
|
484
|
+
similarityThreshold: 0.85, // match confidence threshold
|
|
336
485
|
useDomainRouting: true,
|
|
337
486
|
},
|
|
338
487
|
memory: {
|
|
339
|
-
maxExperiences: 4,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
488
|
+
maxExperiences: 4, // k for experience retrieval
|
|
489
|
+
maxContextTokens: 4000,
|
|
490
|
+
capacity: {
|
|
491
|
+
maxExperiences: 1000, // total stored experiences
|
|
492
|
+
maxPlaybooks: 200,
|
|
493
|
+
autoPrune: true,
|
|
494
|
+
preserveDomainCoverage: true,
|
|
495
|
+
},
|
|
343
496
|
},
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
497
|
+
knowledgeBank: {
|
|
498
|
+
enabled: true, // enable semantic memory (default: false)
|
|
499
|
+
memoryDir: 'memory',
|
|
500
|
+
extraction: {
|
|
501
|
+
enabled: true, // auto-extract from trajectories
|
|
502
|
+
useLlmExtraction: false, // use heuristic extraction
|
|
503
|
+
},
|
|
504
|
+
graph: {
|
|
505
|
+
enabledLayers: ['semantic'], // semantic | temporal | causal | entity
|
|
506
|
+
},
|
|
507
|
+
surfacing: {
|
|
508
|
+
maxNotesPerTask: 5,
|
|
509
|
+
maxTokensForKnowledge: 2000,
|
|
510
|
+
},
|
|
511
|
+
minimemAware: false, // set true if using minimem
|
|
512
|
+
},
|
|
513
|
+
execution: {
|
|
514
|
+
defaultAgentType: 'claude-code',
|
|
515
|
+
maxExecutionTime: 300,
|
|
516
|
+
captureToolCalls: true,
|
|
517
|
+
},
|
|
518
|
+
refinement: {
|
|
519
|
+
useAgentEvaluation: true,
|
|
520
|
+
maxIterations: 3,
|
|
521
|
+
acceptableScore: 0.7,
|
|
347
522
|
},
|
|
348
523
|
});
|
|
349
524
|
```
|
|
350
525
|
|
|
351
|
-
##
|
|
526
|
+
## Core Types
|
|
527
|
+
|
|
528
|
+
### Playbook
|
|
529
|
+
|
|
530
|
+
The central learning unit. Combines when to apply, what to do, and how to verify results.
|
|
531
|
+
|
|
532
|
+
```typescript
|
|
533
|
+
interface Playbook {
|
|
534
|
+
id: string;
|
|
535
|
+
name: string;
|
|
536
|
+
applicability: {
|
|
537
|
+
situations: string[]; // "debugging async code"
|
|
538
|
+
triggers: string[]; // "Promise rejection", "TS2307"
|
|
539
|
+
antiPatterns: string[]; // when NOT to use
|
|
540
|
+
domains: string[]; // "typescript", "react", "testing"
|
|
541
|
+
};
|
|
542
|
+
guidance: {
|
|
543
|
+
strategy: string; // high-level approach
|
|
544
|
+
tactics: string[]; // mid-level steps
|
|
545
|
+
steps?: string[]; // concrete commands
|
|
546
|
+
codeExample?: string;
|
|
547
|
+
};
|
|
548
|
+
verification: {
|
|
549
|
+
successIndicators: string[]; // "Tests pass", "No errors"
|
|
550
|
+
failureIndicators: string[]; // "Same error persists"
|
|
551
|
+
rollbackStrategy?: string;
|
|
552
|
+
};
|
|
553
|
+
evolution: {
|
|
554
|
+
version: string;
|
|
555
|
+
successCount: number;
|
|
556
|
+
failureCount: number;
|
|
557
|
+
refinements: Refinement[]; // context-specific adaptations
|
|
558
|
+
failures: FailureRecord[];
|
|
559
|
+
};
|
|
560
|
+
confidence: number; // 0-1, grows with successful use
|
|
561
|
+
complexity: 'simple' | 'moderate' | 'complex';
|
|
562
|
+
}
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### Trajectory
|
|
566
|
+
|
|
567
|
+
A recorded problem-solving session in ReAct format.
|
|
568
|
+
|
|
569
|
+
```typescript
|
|
570
|
+
interface Trajectory {
|
|
571
|
+
id: string;
|
|
572
|
+
task: Task;
|
|
573
|
+
steps: Step[]; // thought -> action -> observation
|
|
574
|
+
outcome: Outcome; // success/failure + solution
|
|
575
|
+
agentId: string;
|
|
576
|
+
llmCalls: number;
|
|
577
|
+
totalTokens: number;
|
|
578
|
+
wallTimeSeconds: number;
|
|
579
|
+
}
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### RoutingDecision
|
|
583
|
+
|
|
584
|
+
How the system decides to approach a task.
|
|
585
|
+
|
|
586
|
+
```typescript
|
|
587
|
+
interface RoutingDecision {
|
|
588
|
+
strategy: 'direct' | 'adapt' | 'explore' | 'fallback';
|
|
589
|
+
confidence: number;
|
|
590
|
+
memoryContext: MemoryQueryResultV2;
|
|
591
|
+
estimatedBudget: number;
|
|
592
|
+
reasoning: string;
|
|
593
|
+
}
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
## Research References
|
|
597
|
+
|
|
598
|
+
cognitive-core draws from several lines of research on agent memory and learning:
|
|
352
599
|
|
|
353
|
-
|
|
600
|
+
- **ArcMemo** - Concept-level memory outperforms instance-level at all compute scales
|
|
601
|
+
- **ReMem** - Experience retrieval with k=4, iterative refinement loops
|
|
602
|
+
- **Stitch** - Library learning through compression
|
|
603
|
+
- **LILO** - AutoDoc for concept naming
|
|
604
|
+
- **Voyager** - Ever-growing skill libraries with verification
|
|
605
|
+
- **Claudeception** - Lightweight skill persistence for code agents
|
|
606
|
+
- **[A-MEM](https://arxiv.org/abs/2502.12110)** - Zettelkasten-inspired structured notes with dynamic linking (knowledge note format)
|
|
607
|
+
- **[MAGMA](https://arxiv.org/abs/2601.03236)** - Multi-graph decomposition into semantic, temporal, causal, entity layers (graph overlay design)
|
|
608
|
+
- **[Zep](https://arxiv.org/pdf/2501.13956)** - Entity extraction, community detection, temporal tracking
|
|
609
|
+
- **[Memory Survey](https://arxiv.org/abs/2512.13564)** - Comprehensive survey and taxonomy of factual/experiential/procedural memory
|
|
354
610
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
- **
|
|
358
|
-
- **
|
|
359
|
-
- **
|
|
360
|
-
- **
|
|
611
|
+
## Limitations
|
|
612
|
+
|
|
613
|
+
- **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. Until then, agents run without memory augmentation. Knowledge extraction works per-trajectory, so knowledge is available sooner.
|
|
615
|
+
- **Text-based matching by default**. BM25 works but misses semantic similarity. Vector search requires configuring an embedding provider and adds latency. Knowledge bank search uses text similarity unless minimem is available.
|
|
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 and confidence model help, but don't solve the garbage-in problem.
|
|
617
|
+
- **Single-machine storage**. Persistence is JSON file-based (experiences, playbooks), Markdown file-based (knowledge), and SQLite (vector store). There's no built-in replication, multi-agent concurrency, or cloud storage.
|
|
618
|
+
- **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
|
+
|
|
621
|
+
## Contributing
|
|
622
|
+
|
|
623
|
+
Contributions welcome. The test suite uses Vitest:
|
|
624
|
+
|
|
625
|
+
```bash
|
|
626
|
+
npm install
|
|
627
|
+
npm run test:run # run tests once
|
|
628
|
+
npm run test # watch mode
|
|
629
|
+
npm run typecheck # type checking without emit
|
|
630
|
+
```
|
|
361
631
|
|
|
362
632
|
## License
|
|
363
633
|
|