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
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { KnowledgeNote } from '../types/knowledge.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Result from a SearchProvider — maps a note ID to a relevance score.
|
|
5
|
+
*/
|
|
6
|
+
export interface SearchProviderResult {
|
|
7
|
+
noteId: string;
|
|
8
|
+
score: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Strategy interface for searching knowledge notes.
|
|
13
|
+
*
|
|
14
|
+
* Implementations receive pre-filtered candidate notes and return
|
|
15
|
+
* scored results. This allows swapping between text-based similarity
|
|
16
|
+
* (default) and external search backends (e.g., minimem).
|
|
17
|
+
*/
|
|
18
|
+
export interface SearchProvider {
|
|
19
|
+
/** Human-readable name for diagnostics / logging. */
|
|
20
|
+
readonly name: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Search pre-filtered candidates and return scored results.
|
|
24
|
+
*
|
|
25
|
+
* @param query - The search query string.
|
|
26
|
+
* @param candidates - Pre-filtered KnowledgeNote array (already domain/stale-filtered).
|
|
27
|
+
* @param options - Additional options like maxResults.
|
|
28
|
+
* @returns Scored results sorted by descending score.
|
|
29
|
+
*/
|
|
30
|
+
search(
|
|
31
|
+
query: string,
|
|
32
|
+
candidates: KnowledgeNote[],
|
|
33
|
+
options?: { maxResults?: number }
|
|
34
|
+
): SearchProviderResult[] | Promise<SearchProviderResult[]>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { KnowledgeNote } from '../../types/knowledge.js';
|
|
2
|
+
import type { SearchProvider, SearchProviderResult } from '../search-provider.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Subset of the minimem search API that MinimemSearchProvider depends on.
|
|
6
|
+
* Structurally compatible with the Minimem class from the minimem package.
|
|
7
|
+
*
|
|
8
|
+
* Kept as a narrow interface (rather than importing Minimem directly) so
|
|
9
|
+
* tests can inject a lightweight mock without instantiating a full Minimem.
|
|
10
|
+
*/
|
|
11
|
+
export interface MinimemSearchClient {
|
|
12
|
+
search(query: string, options?: { maxResults?: number; minScore?: number }): Promise<
|
|
13
|
+
Array<{
|
|
14
|
+
path: string;
|
|
15
|
+
startLine: number;
|
|
16
|
+
endLine: number;
|
|
17
|
+
score: number;
|
|
18
|
+
snippet: string;
|
|
19
|
+
}>
|
|
20
|
+
>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Search provider that delegates to a minimem instance.
|
|
25
|
+
*
|
|
26
|
+
* Maps minimem search results (which return file paths) back to
|
|
27
|
+
* KnowledgeNote IDs by matching against the candidate set.
|
|
28
|
+
*
|
|
29
|
+
* Falls back to returning an empty array on any error so that
|
|
30
|
+
* the KnowledgeBank can gracefully degrade.
|
|
31
|
+
*/
|
|
32
|
+
export class MinimemSearchProvider implements SearchProvider {
|
|
33
|
+
readonly name = 'minimem';
|
|
34
|
+
|
|
35
|
+
constructor(private readonly client: MinimemSearchClient) {}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Async search via minimem client.
|
|
39
|
+
* Maps minimem results back to note IDs from the candidate set.
|
|
40
|
+
*/
|
|
41
|
+
async search(
|
|
42
|
+
query: string,
|
|
43
|
+
candidates: KnowledgeNote[],
|
|
44
|
+
options?: { maxResults?: number }
|
|
45
|
+
): Promise<SearchProviderResult[]> {
|
|
46
|
+
try {
|
|
47
|
+
const maxResults = options?.maxResults ?? 10;
|
|
48
|
+
const minimemResults = await this.client.search(query, { maxResults });
|
|
49
|
+
|
|
50
|
+
// Build a lookup: normalize paths to match against candidate filePaths
|
|
51
|
+
const noteByPath = new Map<string, KnowledgeNote>();
|
|
52
|
+
for (const note of candidates) {
|
|
53
|
+
// Match on the full filePath or just the filename
|
|
54
|
+
noteByPath.set(note.filePath, note);
|
|
55
|
+
const filename = note.filePath.split('/').pop();
|
|
56
|
+
if (filename) {
|
|
57
|
+
noteByPath.set(filename, note);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const results: SearchProviderResult[] = [];
|
|
62
|
+
for (const mr of minimemResults) {
|
|
63
|
+
// Try matching by full path, then by filename portion
|
|
64
|
+
const pathParts = mr.path.split('/');
|
|
65
|
+
const filename = pathParts.pop();
|
|
66
|
+
const note =
|
|
67
|
+
noteByPath.get(mr.path) ||
|
|
68
|
+
(filename ? noteByPath.get(filename) : undefined);
|
|
69
|
+
|
|
70
|
+
if (note) {
|
|
71
|
+
results.push({
|
|
72
|
+
noteId: note.frontmatter.id,
|
|
73
|
+
score: mr.score,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return results;
|
|
79
|
+
} catch {
|
|
80
|
+
// Gracefully degrade: return empty on any error
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { KnowledgeNote } from '../../types/knowledge.js';
|
|
2
|
+
import type { SearchProvider, SearchProviderResult } from '../search-provider.js';
|
|
3
|
+
import { findTopK } from '../../utils/similarity.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Default search provider using Jaccard + n-gram text similarity.
|
|
7
|
+
*
|
|
8
|
+
* This is the original search logic extracted from KnowledgeBank.search().
|
|
9
|
+
* Scores each candidate note against the query using `findTopK()`.
|
|
10
|
+
*/
|
|
11
|
+
export class TextSimilaritySearchProvider implements SearchProvider {
|
|
12
|
+
readonly name = 'text-similarity';
|
|
13
|
+
|
|
14
|
+
search(
|
|
15
|
+
query: string,
|
|
16
|
+
candidates: KnowledgeNote[],
|
|
17
|
+
options?: { maxResults?: number }
|
|
18
|
+
): SearchProviderResult[] {
|
|
19
|
+
const maxResults = options?.maxResults ?? 10;
|
|
20
|
+
|
|
21
|
+
const results = findTopK<KnowledgeNote>(
|
|
22
|
+
query,
|
|
23
|
+
candidates,
|
|
24
|
+
(note) => `${note.frontmatter.id} ${note.body}`,
|
|
25
|
+
maxResults
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
return results
|
|
29
|
+
.filter((r) => r.score > 0)
|
|
30
|
+
.map((r) => ({
|
|
31
|
+
noteId: r.item.frontmatter.id,
|
|
32
|
+
score: r.score,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Exporter - Compile playbooks into the Open Agent Skills format
|
|
3
|
+
*
|
|
4
|
+
* Playbooks are the source of truth (rich, evolving, learned from experience).
|
|
5
|
+
* SKILL.md files are the compiled distribution artifact — portable across 25+
|
|
6
|
+
* agent platforms (Claude Code, Codex CLI, GitHub Copilot, Cursor, etc.).
|
|
7
|
+
*
|
|
8
|
+
* The export preserves playbook-specific knowledge (anti-patterns, refinements,
|
|
9
|
+
* verification) in the Markdown body, while mapping core fields to the standard
|
|
10
|
+
* YAML frontmatter schema.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { existsSync } from 'node:fs';
|
|
16
|
+
import type { Playbook } from '../types/index.js';
|
|
17
|
+
import { getPlaybookSuccessRate, hasReliableStats } from '../types/index.js';
|
|
18
|
+
import type { PlaybookLibrary } from './playbook.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Options for filtering which playbooks to export
|
|
22
|
+
*/
|
|
23
|
+
export interface SkillExportFilter {
|
|
24
|
+
/** Minimum confidence to include (default: 0.5) */
|
|
25
|
+
minConfidence?: number;
|
|
26
|
+
/** Only include playbooks with at least this many total uses */
|
|
27
|
+
minUses?: number;
|
|
28
|
+
/** Only include playbooks from these domains */
|
|
29
|
+
domains?: string[];
|
|
30
|
+
/** Only include playbooks with these origins */
|
|
31
|
+
origins?: Array<'extracted' | 'curated' | 'imported' | 'manual'>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Options for how the SKILL.md is generated
|
|
36
|
+
*/
|
|
37
|
+
export interface SkillExportOptions {
|
|
38
|
+
/** Include evolution stats (confidence, success rate) in metadata */
|
|
39
|
+
includeStats?: boolean;
|
|
40
|
+
/** Include refinements section in the body */
|
|
41
|
+
includeRefinements?: boolean;
|
|
42
|
+
/** Include anti-patterns as a "When NOT to use" section */
|
|
43
|
+
includeAntiPatterns?: boolean;
|
|
44
|
+
/** Include verification section */
|
|
45
|
+
includeVerification?: boolean;
|
|
46
|
+
/** Custom metadata fields to add to frontmatter */
|
|
47
|
+
extraMetadata?: Record<string, string>;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const DEFAULT_OPTIONS: Required<SkillExportOptions> = {
|
|
51
|
+
includeStats: true,
|
|
52
|
+
includeRefinements: true,
|
|
53
|
+
includeAntiPatterns: true,
|
|
54
|
+
includeVerification: true,
|
|
55
|
+
extraMetadata: {},
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Result of an export operation
|
|
60
|
+
*/
|
|
61
|
+
export interface SkillExportResult {
|
|
62
|
+
exported: number;
|
|
63
|
+
skipped: number;
|
|
64
|
+
errors: Array<{ playbook: string; error: string }>;
|
|
65
|
+
skills: ExportedSkill[];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* A single exported skill (before writing to disk)
|
|
70
|
+
*/
|
|
71
|
+
export interface ExportedSkill {
|
|
72
|
+
name: string;
|
|
73
|
+
dirName: string;
|
|
74
|
+
content: string;
|
|
75
|
+
sourcePlaybookId: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Compile a single playbook into SKILL.md content
|
|
80
|
+
*/
|
|
81
|
+
export function compilePlaybookToSkill(
|
|
82
|
+
playbook: Playbook,
|
|
83
|
+
options?: SkillExportOptions
|
|
84
|
+
): string {
|
|
85
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
86
|
+
const sections: string[] = [];
|
|
87
|
+
|
|
88
|
+
// === YAML Frontmatter ===
|
|
89
|
+
sections.push('---');
|
|
90
|
+
sections.push(`name: ${playbook.name}`);
|
|
91
|
+
sections.push(`description: >-`);
|
|
92
|
+
sections.push(` ${buildDescription(playbook)}`);
|
|
93
|
+
|
|
94
|
+
// Metadata block
|
|
95
|
+
const metadata: Record<string, string> = {
|
|
96
|
+
version: playbook.evolution.version,
|
|
97
|
+
complexity: playbook.complexity,
|
|
98
|
+
...opts.extraMetadata,
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
if (playbook.provenance?.origin) {
|
|
102
|
+
metadata['origin'] = playbook.provenance.origin;
|
|
103
|
+
}
|
|
104
|
+
if (playbook.provenance?.curatedBy) {
|
|
105
|
+
metadata['author'] = playbook.provenance.curatedBy;
|
|
106
|
+
}
|
|
107
|
+
if (opts.includeStats) {
|
|
108
|
+
metadata['confidence'] = playbook.confidence.toFixed(2);
|
|
109
|
+
if (hasReliableStats(playbook)) {
|
|
110
|
+
metadata['success-rate'] = getPlaybookSuccessRate(playbook).toFixed(2);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
sections.push('metadata:');
|
|
115
|
+
for (const [key, value] of Object.entries(metadata)) {
|
|
116
|
+
sections.push(` ${key}: "${value}"`);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Compatibility — express domains as environment context
|
|
120
|
+
if (playbook.applicability.domains.length > 0) {
|
|
121
|
+
sections.push(
|
|
122
|
+
`compatibility: Applicable to ${playbook.applicability.domains.join(', ')} projects`
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
sections.push('---');
|
|
127
|
+
sections.push('');
|
|
128
|
+
|
|
129
|
+
// === Markdown Body ===
|
|
130
|
+
|
|
131
|
+
// Strategy (the core guidance)
|
|
132
|
+
sections.push(`## Strategy`);
|
|
133
|
+
sections.push('');
|
|
134
|
+
sections.push(playbook.guidance.strategy);
|
|
135
|
+
sections.push('');
|
|
136
|
+
|
|
137
|
+
// Tactics
|
|
138
|
+
if (playbook.guidance.tactics.length > 0) {
|
|
139
|
+
sections.push('## Tactics');
|
|
140
|
+
sections.push('');
|
|
141
|
+
for (const tactic of playbook.guidance.tactics) {
|
|
142
|
+
sections.push(`- ${tactic}`);
|
|
143
|
+
}
|
|
144
|
+
sections.push('');
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Concrete steps
|
|
148
|
+
if (playbook.guidance.steps && playbook.guidance.steps.length > 0) {
|
|
149
|
+
sections.push('## Steps');
|
|
150
|
+
sections.push('');
|
|
151
|
+
for (let i = 0; i < playbook.guidance.steps.length; i++) {
|
|
152
|
+
sections.push(`${i + 1}. ${playbook.guidance.steps[i]}`);
|
|
153
|
+
}
|
|
154
|
+
sections.push('');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Code example
|
|
158
|
+
if (playbook.guidance.codeExample) {
|
|
159
|
+
sections.push('## Example');
|
|
160
|
+
sections.push('');
|
|
161
|
+
sections.push('```');
|
|
162
|
+
sections.push(playbook.guidance.codeExample);
|
|
163
|
+
sections.push('```');
|
|
164
|
+
sections.push('');
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Anti-patterns — "when NOT to use this"
|
|
168
|
+
if (opts.includeAntiPatterns && playbook.applicability.antiPatterns.length > 0) {
|
|
169
|
+
sections.push('## When NOT to use this');
|
|
170
|
+
sections.push('');
|
|
171
|
+
for (const ap of playbook.applicability.antiPatterns) {
|
|
172
|
+
sections.push(`- ${ap}`);
|
|
173
|
+
}
|
|
174
|
+
sections.push('');
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Triggers — concrete signals that this skill applies
|
|
178
|
+
if (playbook.applicability.triggers.length > 0) {
|
|
179
|
+
sections.push('## Triggers');
|
|
180
|
+
sections.push('');
|
|
181
|
+
sections.push(
|
|
182
|
+
'This skill applies when you encounter any of the following:'
|
|
183
|
+
);
|
|
184
|
+
sections.push('');
|
|
185
|
+
for (const trigger of playbook.applicability.triggers) {
|
|
186
|
+
sections.push(`- ${trigger}`);
|
|
187
|
+
}
|
|
188
|
+
sections.push('');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Verification
|
|
192
|
+
if (opts.includeVerification) {
|
|
193
|
+
const { successIndicators, failureIndicators, rollbackStrategy } =
|
|
194
|
+
playbook.verification;
|
|
195
|
+
if (successIndicators.length > 0 || failureIndicators.length > 0) {
|
|
196
|
+
sections.push('## Verification');
|
|
197
|
+
sections.push('');
|
|
198
|
+
if (successIndicators.length > 0) {
|
|
199
|
+
sections.push('**Success looks like:**');
|
|
200
|
+
for (const si of successIndicators) {
|
|
201
|
+
sections.push(`- ${si}`);
|
|
202
|
+
}
|
|
203
|
+
sections.push('');
|
|
204
|
+
}
|
|
205
|
+
if (failureIndicators.length > 0) {
|
|
206
|
+
sections.push('**Failure looks like:**');
|
|
207
|
+
for (const fi of failureIndicators) {
|
|
208
|
+
sections.push(`- ${fi}`);
|
|
209
|
+
}
|
|
210
|
+
sections.push('');
|
|
211
|
+
}
|
|
212
|
+
if (rollbackStrategy) {
|
|
213
|
+
sections.push(`**Rollback:** ${rollbackStrategy}`);
|
|
214
|
+
sections.push('');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Refinements — context-specific notes learned from experience
|
|
220
|
+
if (opts.includeRefinements && playbook.evolution.refinements.length > 0) {
|
|
221
|
+
sections.push('## Context-specific notes');
|
|
222
|
+
sections.push('');
|
|
223
|
+
for (const ref of playbook.evolution.refinements) {
|
|
224
|
+
sections.push(`- **${ref.context}:** ${ref.addition}`);
|
|
225
|
+
}
|
|
226
|
+
sections.push('');
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return sections.join('\n');
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Build the description field from playbook applicability.
|
|
234
|
+
* The description is critical for skill discovery — agents use it to
|
|
235
|
+
* decide whether to load the skill.
|
|
236
|
+
*/
|
|
237
|
+
function buildDescription(playbook: Playbook): string {
|
|
238
|
+
const parts = [
|
|
239
|
+
...playbook.applicability.situations,
|
|
240
|
+
...playbook.applicability.triggers.slice(0, 2),
|
|
241
|
+
];
|
|
242
|
+
const desc = parts.join('. ');
|
|
243
|
+
const domains = playbook.applicability.domains.join(', ');
|
|
244
|
+
// YAML multiline: use >- for long descriptions
|
|
245
|
+
const full = `${desc}. Domains: ${domains}.`;
|
|
246
|
+
// Truncate to 1024 chars per spec
|
|
247
|
+
if (full.length > 1024) {
|
|
248
|
+
return full.slice(0, 1021) + '...';
|
|
249
|
+
}
|
|
250
|
+
return full;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Export playbooks from a library to a directory of SKILL.md files
|
|
255
|
+
*/
|
|
256
|
+
export async function exportPlaybooksAsSkills(
|
|
257
|
+
library: PlaybookLibrary,
|
|
258
|
+
outputDir: string,
|
|
259
|
+
filter?: SkillExportFilter,
|
|
260
|
+
options?: SkillExportOptions
|
|
261
|
+
): Promise<SkillExportResult> {
|
|
262
|
+
const result: SkillExportResult = {
|
|
263
|
+
exported: 0,
|
|
264
|
+
skipped: 0,
|
|
265
|
+
errors: [],
|
|
266
|
+
skills: [],
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
let playbooks = await library.getAll();
|
|
270
|
+
|
|
271
|
+
// Apply filters
|
|
272
|
+
if (filter?.minConfidence !== undefined) {
|
|
273
|
+
playbooks = playbooks.filter((p) => p.confidence >= filter.minConfidence!);
|
|
274
|
+
}
|
|
275
|
+
if (filter?.minUses !== undefined) {
|
|
276
|
+
playbooks = playbooks.filter(
|
|
277
|
+
(p) =>
|
|
278
|
+
p.evolution.successCount + p.evolution.failureCount >= filter.minUses!
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
if (filter?.domains && filter.domains.length > 0) {
|
|
282
|
+
playbooks = playbooks.filter((p) =>
|
|
283
|
+
p.applicability.domains.some((d) => filter.domains!.includes(d))
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
if (filter?.origins && filter.origins.length > 0) {
|
|
287
|
+
playbooks = playbooks.filter(
|
|
288
|
+
(p) =>
|
|
289
|
+
p.provenance?.origin !== undefined &&
|
|
290
|
+
filter.origins!.includes(p.provenance.origin)
|
|
291
|
+
);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Ensure output directory exists
|
|
295
|
+
if (!existsSync(outputDir)) {
|
|
296
|
+
await mkdir(outputDir, { recursive: true });
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
for (const playbook of playbooks) {
|
|
300
|
+
try {
|
|
301
|
+
const content = compilePlaybookToSkill(playbook, options);
|
|
302
|
+
const dirName = playbook.name;
|
|
303
|
+
const skillDir = join(outputDir, dirName);
|
|
304
|
+
|
|
305
|
+
// Create skill directory
|
|
306
|
+
if (!existsSync(skillDir)) {
|
|
307
|
+
await mkdir(skillDir, { recursive: true });
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Write SKILL.md
|
|
311
|
+
await writeFile(join(skillDir, 'SKILL.md'), content, 'utf-8');
|
|
312
|
+
|
|
313
|
+
const skill: ExportedSkill = {
|
|
314
|
+
name: playbook.name,
|
|
315
|
+
dirName,
|
|
316
|
+
content,
|
|
317
|
+
sourcePlaybookId: playbook.id,
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
result.skills.push(skill);
|
|
321
|
+
result.exported++;
|
|
322
|
+
} catch (error) {
|
|
323
|
+
result.errors.push({
|
|
324
|
+
playbook: playbook.name,
|
|
325
|
+
error: error instanceof Error ? error.message : String(error),
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return result;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Export a single playbook to a SKILL.md file
|
|
335
|
+
*/
|
|
336
|
+
export async function exportPlaybookAsSkill(
|
|
337
|
+
playbook: Playbook,
|
|
338
|
+
outputDir: string,
|
|
339
|
+
options?: SkillExportOptions
|
|
340
|
+
): Promise<ExportedSkill> {
|
|
341
|
+
const content = compilePlaybookToSkill(playbook, options);
|
|
342
|
+
const dirName = playbook.name;
|
|
343
|
+
const skillDir = join(outputDir, dirName);
|
|
344
|
+
|
|
345
|
+
if (!existsSync(skillDir)) {
|
|
346
|
+
await mkdir(skillDir, { recursive: true });
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
await writeFile(join(skillDir, 'SKILL.md'), content, 'utf-8');
|
|
350
|
+
|
|
351
|
+
return {
|
|
352
|
+
name: playbook.name,
|
|
353
|
+
dirName,
|
|
354
|
+
content,
|
|
355
|
+
sourcePlaybookId: playbook.id,
|
|
356
|
+
};
|
|
357
|
+
}
|
package/src/memory/system.ts
CHANGED
|
@@ -10,15 +10,23 @@ import type {
|
|
|
10
10
|
MemoryConfig,
|
|
11
11
|
MemoryCapacityConfig,
|
|
12
12
|
Trajectory,
|
|
13
|
+
TeamTrajectory,
|
|
14
|
+
KnowledgeBankConfig,
|
|
13
15
|
} from '../types/index.js';
|
|
14
16
|
import { createExperience } from '../types/index.js';
|
|
15
17
|
import { ExperienceMemory, type PruneResult } from './experience.js';
|
|
16
18
|
import { PlaybookLibrary, type PlaybookMatch } from './playbook.js';
|
|
17
19
|
import { MetaMemory } from './meta.js';
|
|
20
|
+
import {
|
|
21
|
+
TeamExperienceMemory,
|
|
22
|
+
type TeamExperience,
|
|
23
|
+
} from './team-experience.js';
|
|
18
24
|
import {
|
|
19
25
|
LearningEffectivenessTracker,
|
|
20
26
|
type EffectivenessMetrics,
|
|
21
27
|
} from '../learning/effectiveness.js';
|
|
28
|
+
import { KnowledgeBank } from './knowledge-bank.js';
|
|
29
|
+
import { join } from 'node:path';
|
|
22
30
|
|
|
23
31
|
/**
|
|
24
32
|
* Default capacity configuration
|
|
@@ -64,6 +72,8 @@ export class MemorySystem {
|
|
|
64
72
|
public readonly playbooks: PlaybookLibrary;
|
|
65
73
|
public readonly meta: MetaMemory;
|
|
66
74
|
public readonly effectiveness: LearningEffectivenessTracker;
|
|
75
|
+
public readonly teamExperiences: TeamExperienceMemory;
|
|
76
|
+
public readonly knowledgeBank: KnowledgeBank | null;
|
|
67
77
|
|
|
68
78
|
private config: MemoryConfig;
|
|
69
79
|
private capacityConfig: MemoryCapacityConfig;
|
|
@@ -71,7 +81,11 @@ export class MemorySystem {
|
|
|
71
81
|
private lastCapacityCheck = 0;
|
|
72
82
|
private capacityCheckInterval = 60000; // Check every minute
|
|
73
83
|
|
|
74
|
-
constructor(
|
|
84
|
+
constructor(
|
|
85
|
+
baseDir: string,
|
|
86
|
+
config?: Partial<MemoryConfig>,
|
|
87
|
+
knowledgeBankConfig?: KnowledgeBankConfig
|
|
88
|
+
) {
|
|
75
89
|
this.config = {
|
|
76
90
|
maxExperiences: config?.maxExperiences ?? 4,
|
|
77
91
|
maxStrategies: config?.maxStrategies ?? 3,
|
|
@@ -87,6 +101,15 @@ export class MemorySystem {
|
|
|
87
101
|
this.playbooks = new PlaybookLibrary(baseDir);
|
|
88
102
|
this.meta = new MetaMemory(baseDir);
|
|
89
103
|
this.effectiveness = new LearningEffectivenessTracker(baseDir);
|
|
104
|
+
this.teamExperiences = new TeamExperienceMemory(baseDir);
|
|
105
|
+
|
|
106
|
+
// Initialize knowledge bank if enabled
|
|
107
|
+
if (knowledgeBankConfig?.enabled) {
|
|
108
|
+
const memoryDir = join(baseDir, knowledgeBankConfig.memoryDir ?? 'memory');
|
|
109
|
+
this.knowledgeBank = new KnowledgeBank(memoryDir, knowledgeBankConfig);
|
|
110
|
+
} else {
|
|
111
|
+
this.knowledgeBank = null;
|
|
112
|
+
}
|
|
90
113
|
}
|
|
91
114
|
|
|
92
115
|
/**
|
|
@@ -95,12 +118,17 @@ export class MemorySystem {
|
|
|
95
118
|
async init(): Promise<void> {
|
|
96
119
|
if (this.initialized) return;
|
|
97
120
|
|
|
98
|
-
|
|
121
|
+
const initPromises: Promise<void>[] = [
|
|
99
122
|
this.experiences.init(),
|
|
100
123
|
this.playbooks.init(),
|
|
101
124
|
this.meta.init(),
|
|
102
125
|
this.effectiveness.init(),
|
|
103
|
-
|
|
126
|
+
this.teamExperiences.init(),
|
|
127
|
+
];
|
|
128
|
+
if (this.knowledgeBank) {
|
|
129
|
+
initPromises.push(this.knowledgeBank.init());
|
|
130
|
+
}
|
|
131
|
+
await Promise.all(initPromises);
|
|
104
132
|
|
|
105
133
|
this.initialized = true;
|
|
106
134
|
}
|
|
@@ -368,14 +396,19 @@ export class MemorySystem {
|
|
|
368
396
|
playbookCount: number;
|
|
369
397
|
metaObservationCount: number;
|
|
370
398
|
annotationCount: number;
|
|
399
|
+
teamExperienceCount: number;
|
|
400
|
+
teamPlaybookCount: number;
|
|
401
|
+
rolePlaybookCount: number;
|
|
402
|
+
teamMetaObservationCount: number;
|
|
371
403
|
}> {
|
|
372
404
|
await this.init();
|
|
373
405
|
|
|
374
|
-
const [experienceCount, playbookCount, metaStats, annotationCount] = await Promise.all([
|
|
406
|
+
const [experienceCount, playbookCount, metaStats, annotationCount, teamStats] = await Promise.all([
|
|
375
407
|
this.experiences.count(),
|
|
376
408
|
this.playbooks.count(),
|
|
377
409
|
this.meta.getStats(),
|
|
378
410
|
this.effectiveness.count(),
|
|
411
|
+
this.teamExperiences.getStats(),
|
|
379
412
|
]);
|
|
380
413
|
|
|
381
414
|
return {
|
|
@@ -383,6 +416,10 @@ export class MemorySystem {
|
|
|
383
416
|
playbookCount,
|
|
384
417
|
metaObservationCount: metaStats.totalObservations,
|
|
385
418
|
annotationCount,
|
|
419
|
+
teamExperienceCount: teamStats.teamExperienceCount,
|
|
420
|
+
teamPlaybookCount: teamStats.teamPlaybookCount,
|
|
421
|
+
rolePlaybookCount: teamStats.rolePlaybookCount,
|
|
422
|
+
teamMetaObservationCount: teamStats.metaObservationCount,
|
|
386
423
|
};
|
|
387
424
|
}
|
|
388
425
|
|
|
@@ -530,13 +567,28 @@ export class MemorySystem {
|
|
|
530
567
|
/**
|
|
531
568
|
* Close all stores
|
|
532
569
|
*/
|
|
570
|
+
/**
|
|
571
|
+
* Store a team trajectory and create a team experience
|
|
572
|
+
*/
|
|
573
|
+
async storeTeamTrajectory(trajectory: TeamTrajectory): Promise<TeamExperience> {
|
|
574
|
+
await this.init();
|
|
575
|
+
return this.teamExperiences.storeTeamExperience({
|
|
576
|
+
teamTrajectory: trajectory,
|
|
577
|
+
});
|
|
578
|
+
}
|
|
579
|
+
|
|
533
580
|
async close(): Promise<void> {
|
|
534
|
-
|
|
581
|
+
const closePromises: Promise<void>[] = [
|
|
535
582
|
this.experiences.close(),
|
|
536
583
|
this.playbooks.close(),
|
|
537
584
|
this.meta.close(),
|
|
538
585
|
this.effectiveness.close(),
|
|
539
|
-
|
|
586
|
+
this.teamExperiences.close(),
|
|
587
|
+
];
|
|
588
|
+
if (this.knowledgeBank) {
|
|
589
|
+
closePromises.push(this.knowledgeBank.close());
|
|
590
|
+
}
|
|
591
|
+
await Promise.all(closePromises);
|
|
540
592
|
}
|
|
541
593
|
}
|
|
542
594
|
|
|
@@ -545,7 +597,8 @@ export class MemorySystem {
|
|
|
545
597
|
*/
|
|
546
598
|
export function createMemorySystem(
|
|
547
599
|
baseDir: string,
|
|
548
|
-
config?: Partial<MemoryConfig
|
|
600
|
+
config?: Partial<MemoryConfig>,
|
|
601
|
+
knowledgeBankConfig?: KnowledgeBankConfig
|
|
549
602
|
): MemorySystem {
|
|
550
|
-
return new MemorySystem(baseDir, config);
|
|
603
|
+
return new MemorySystem(baseDir, config, knowledgeBankConfig);
|
|
551
604
|
}
|