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,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ACP Protocol Handler (Base Class)
|
|
3
|
+
*
|
|
4
|
+
* Extracts the ACP wire protocol handling (processUpdate, runPrompt,
|
|
5
|
+
* session state management) from the monolithic ACPBackend into a
|
|
6
|
+
* reusable base class.
|
|
7
|
+
*
|
|
8
|
+
* Backend implementations (local, remote) extend this and provide
|
|
9
|
+
* their own spawn() / terminate() for their compute environment.
|
|
10
|
+
*/
|
|
11
|
+
import type {
|
|
12
|
+
Session,
|
|
13
|
+
ExtendedSessionUpdate,
|
|
14
|
+
} from 'acp-factory';
|
|
15
|
+
import type {
|
|
16
|
+
AgentSpawnConfig,
|
|
17
|
+
AgentSession,
|
|
18
|
+
AgentMessage,
|
|
19
|
+
ToolCall,
|
|
20
|
+
} from '../types.js';
|
|
21
|
+
|
|
22
|
+
// ============================================================
|
|
23
|
+
// Session State Types
|
|
24
|
+
// ============================================================
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Base session state shared by all ACP backends.
|
|
28
|
+
* Subclasses can extend this with backend-specific fields.
|
|
29
|
+
*/
|
|
30
|
+
export interface ACPSessionBase {
|
|
31
|
+
atlasSession: AgentSession;
|
|
32
|
+
acpSession: Session;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// ============================================================
|
|
36
|
+
// Protocol Handler Base Class
|
|
37
|
+
// ============================================================
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Abstract base class that handles ACP wire protocol concerns:
|
|
41
|
+
* - processUpdate(): Parses ExtendedSessionUpdate into AgentSession messages/tool calls
|
|
42
|
+
* - runPrompt(): Streams updates from an ACP session prompt
|
|
43
|
+
* - Common session accessors (getSession, sendMessage, listSessions)
|
|
44
|
+
*
|
|
45
|
+
* Subclasses provide their own lifecycle management (spawn, terminate).
|
|
46
|
+
*/
|
|
47
|
+
export abstract class ACPProtocolHandler<
|
|
48
|
+
TState extends ACPSessionBase = ACPSessionBase,
|
|
49
|
+
> {
|
|
50
|
+
protected sessions: Map<string, TState> = new Map();
|
|
51
|
+
|
|
52
|
+
// ----------------------------------------------------------
|
|
53
|
+
// Protocol: process a single ACP session update
|
|
54
|
+
// ----------------------------------------------------------
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Process a session update from the agent.
|
|
58
|
+
* Uses defensive typing since ACP types can vary.
|
|
59
|
+
*/
|
|
60
|
+
protected processUpdate(
|
|
61
|
+
session: AgentSession,
|
|
62
|
+
update: ExtendedSessionUpdate,
|
|
63
|
+
config: AgentSpawnConfig,
|
|
64
|
+
): void {
|
|
65
|
+
// Cast to any for flexible property access since ACP types are complex unions
|
|
66
|
+
const u = update as Record<string, unknown>;
|
|
67
|
+
const updateType = u.sessionUpdate as string;
|
|
68
|
+
|
|
69
|
+
switch (updateType) {
|
|
70
|
+
case 'agent_message_chunk':
|
|
71
|
+
case 'user_message_chunk':
|
|
72
|
+
case 'agent_thought_chunk': {
|
|
73
|
+
// ContentChunk has a single 'content' field (ContentBlock)
|
|
74
|
+
const content = u.content as Record<string, unknown> | undefined;
|
|
75
|
+
if (content && content.type === 'text' && typeof content.text === 'string') {
|
|
76
|
+
const message: AgentMessage = {
|
|
77
|
+
role: updateType === 'user_message_chunk' ? 'user' : 'assistant',
|
|
78
|
+
content: content.text,
|
|
79
|
+
timestamp: new Date(),
|
|
80
|
+
};
|
|
81
|
+
session.messages.push(message);
|
|
82
|
+
config.onMessage?.(message);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
case 'tool_call': {
|
|
88
|
+
// ToolCall has toolCallId, title, rawInput, status, content, etc.
|
|
89
|
+
const toolCallId = (u.toolCallId as string) ?? crypto.randomUUID();
|
|
90
|
+
const title = (u.title as string) ?? 'unknown';
|
|
91
|
+
const rawInput = u.rawInput;
|
|
92
|
+
|
|
93
|
+
const toolCall: ToolCall = {
|
|
94
|
+
id: toolCallId,
|
|
95
|
+
name: title,
|
|
96
|
+
input: rawInput,
|
|
97
|
+
startTime: new Date(),
|
|
98
|
+
};
|
|
99
|
+
session.toolCalls.push(toolCall);
|
|
100
|
+
config.onToolCall?.(toolCall);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
case 'tool_call_update': {
|
|
105
|
+
// ToolCallUpdate has toolCallId, status, content, etc.
|
|
106
|
+
const toolCallId = u.toolCallId as string;
|
|
107
|
+
const status = u.status as string | undefined;
|
|
108
|
+
const content = u.content as Array<Record<string, unknown>> | undefined;
|
|
109
|
+
|
|
110
|
+
const existingTc = session.toolCalls.find((t) => t.id === toolCallId);
|
|
111
|
+
if (existingTc) {
|
|
112
|
+
if (status === 'completed' || status === 'failed') {
|
|
113
|
+
existingTc.endTime = new Date();
|
|
114
|
+
}
|
|
115
|
+
if (content && Array.isArray(content)) {
|
|
116
|
+
// Extract text from content blocks
|
|
117
|
+
const outputs: string[] = [];
|
|
118
|
+
for (const block of content) {
|
|
119
|
+
if (block.type === 'text' && typeof block.text === 'string') {
|
|
120
|
+
outputs.push(block.text);
|
|
121
|
+
} else if (block.type === 'diff' && typeof block.diff === 'string') {
|
|
122
|
+
outputs.push(block.diff);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (outputs.length > 0) {
|
|
126
|
+
existingTc.output = outputs.join('\n');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (status === 'failed') {
|
|
130
|
+
existingTc.error = 'Tool call failed';
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
case 'permission_request': {
|
|
137
|
+
// In auto-approve mode, this shouldn't happen, but log it
|
|
138
|
+
session.messages.push({
|
|
139
|
+
role: 'system',
|
|
140
|
+
content: `Permission requested: ${JSON.stringify(update)}`,
|
|
141
|
+
timestamp: new Date(),
|
|
142
|
+
});
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
case 'plan': {
|
|
147
|
+
// Agent shared its plan
|
|
148
|
+
const plan = u.plan;
|
|
149
|
+
session.messages.push({
|
|
150
|
+
role: 'assistant',
|
|
151
|
+
content: `[Plan] ${JSON.stringify(plan)}`,
|
|
152
|
+
timestamp: new Date(),
|
|
153
|
+
});
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
default:
|
|
158
|
+
// Log other updates for debugging
|
|
159
|
+
session.metadata.lastUpdate = update;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// ----------------------------------------------------------
|
|
164
|
+
// Protocol: run a prompt and collect streaming updates
|
|
165
|
+
// ----------------------------------------------------------
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Run a prompt on an ACP session and collect all streaming updates
|
|
169
|
+
* into the Atlas session.
|
|
170
|
+
*/
|
|
171
|
+
protected async runPrompt(
|
|
172
|
+
state: TState,
|
|
173
|
+
promptContent: string,
|
|
174
|
+
config: AgentSpawnConfig,
|
|
175
|
+
): Promise<void> {
|
|
176
|
+
const { atlasSession, acpSession } = state;
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
// Stream updates from the agent
|
|
180
|
+
for await (const update of acpSession.prompt(promptContent)) {
|
|
181
|
+
this.processUpdate(atlasSession, update, config);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Mark as completed
|
|
185
|
+
atlasSession.state = 'completed';
|
|
186
|
+
atlasSession.endTime = new Date();
|
|
187
|
+
} catch (error) {
|
|
188
|
+
atlasSession.state = 'failed';
|
|
189
|
+
atlasSession.error = error instanceof Error ? error.message : 'Unknown error';
|
|
190
|
+
atlasSession.endTime = new Date();
|
|
191
|
+
console.error(
|
|
192
|
+
`[ACPProtocol] Session ${atlasSession.id} prompt execution failed:`,
|
|
193
|
+
error instanceof Error ? error.message : String(error),
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// ----------------------------------------------------------
|
|
199
|
+
// Common session accessors
|
|
200
|
+
// ----------------------------------------------------------
|
|
201
|
+
|
|
202
|
+
async getSession(sessionId: string): Promise<AgentSession | undefined> {
|
|
203
|
+
return this.sessions.get(sessionId)?.atlasSession;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
async sendMessage(sessionId: string, message: string): Promise<void> {
|
|
207
|
+
const state = this.sessions.get(sessionId);
|
|
208
|
+
if (!state) {
|
|
209
|
+
throw new Error('Session not found');
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Send additional prompt
|
|
213
|
+
for await (const update of state.acpSession.prompt(message)) {
|
|
214
|
+
this.processUpdate(state.atlasSession, update, {
|
|
215
|
+
agentType: state.atlasSession.agentType,
|
|
216
|
+
task: state.atlasSession.task,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
async listSessions(): Promise<AgentSession[]> {
|
|
222
|
+
return Array.from(this.sessions.values()).map((s) => s.atlasSession);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Get a raw ACP session for advanced usage
|
|
227
|
+
*/
|
|
228
|
+
getACPSession(sessionId: string): Session | undefined {
|
|
229
|
+
return this.sessions.get(sessionId)?.acpSession;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ACP Backend using acp-factory
|
|
2
|
+
* Local ACP Backend using acp-factory
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Extends ACPProtocolHandler with local process spawning via AgentFactory.
|
|
5
|
+
* The protocol handling (processUpdate, runPrompt, session management) is
|
|
6
|
+
* inherited from the base class so it can be reused by future remote backends.
|
|
6
7
|
*/
|
|
7
8
|
import {
|
|
8
9
|
AgentFactory,
|
|
9
10
|
AgentHandle,
|
|
10
|
-
Session,
|
|
11
11
|
type AgentConfig,
|
|
12
12
|
type SpawnOptions,
|
|
13
|
-
type ExtendedSessionUpdate,
|
|
14
13
|
} from 'acp-factory';
|
|
15
14
|
import type {
|
|
16
15
|
AgentBackend,
|
|
17
16
|
AgentSpawnConfig,
|
|
18
17
|
AgentSession,
|
|
19
|
-
AgentMessage,
|
|
20
|
-
ToolCall,
|
|
21
18
|
} from '../types.js';
|
|
19
|
+
import { ACPProtocolHandler, type ACPSessionBase } from './acp-protocol.js';
|
|
20
|
+
|
|
21
|
+
// ============================================================
|
|
22
|
+
// Configuration Types
|
|
23
|
+
// ============================================================
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* ACP agent configuration
|
|
@@ -28,27 +30,39 @@ export interface ACPAgentConfig extends AgentConfig {
|
|
|
28
30
|
displayName?: string;
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
// ============================================================
|
|
34
|
+
// Local Session State
|
|
35
|
+
// ============================================================
|
|
36
|
+
|
|
31
37
|
/**
|
|
32
|
-
*
|
|
38
|
+
* Session state for locally-spawned ACP agents.
|
|
39
|
+
* Extends the base with an AgentHandle for process lifecycle.
|
|
33
40
|
*/
|
|
34
|
-
interface
|
|
35
|
-
atlasSession: AgentSession;
|
|
41
|
+
interface LocalACPSessionState extends ACPSessionBase {
|
|
36
42
|
agentHandle: AgentHandle;
|
|
37
|
-
acpSession: Session;
|
|
38
43
|
}
|
|
39
44
|
|
|
45
|
+
// ============================================================
|
|
46
|
+
// LocalACPBackend
|
|
47
|
+
// ============================================================
|
|
48
|
+
|
|
40
49
|
/**
|
|
41
|
-
* ACP Backend
|
|
42
|
-
*
|
|
50
|
+
* Local ACP Backend
|
|
51
|
+
*
|
|
52
|
+
* Spawns ACP-compatible agents as local processes via AgentFactory.
|
|
53
|
+
* Protocol handling is inherited from ACPProtocolHandler.
|
|
43
54
|
*/
|
|
44
|
-
export class
|
|
55
|
+
export class LocalACPBackend
|
|
56
|
+
extends ACPProtocolHandler<LocalACPSessionState>
|
|
57
|
+
implements AgentBackend
|
|
58
|
+
{
|
|
45
59
|
readonly name = 'acp';
|
|
46
60
|
readonly supportedTypes: string[];
|
|
47
61
|
|
|
48
|
-
private sessions: Map<string, ACPSessionState> = new Map();
|
|
49
62
|
private handles: Map<string, AgentHandle> = new Map();
|
|
50
63
|
|
|
51
64
|
constructor(configs: Record<string, ACPAgentConfig>) {
|
|
65
|
+
super();
|
|
52
66
|
this.supportedTypes = Object.keys(configs);
|
|
53
67
|
|
|
54
68
|
// Register all agent configs with AgentFactory
|
|
@@ -83,7 +97,7 @@ export class ACPBackend implements AgentBackend {
|
|
|
83
97
|
};
|
|
84
98
|
|
|
85
99
|
try {
|
|
86
|
-
// Spawn the agent
|
|
100
|
+
// Spawn the agent locally via AgentFactory
|
|
87
101
|
const spawnOptions: SpawnOptions = {
|
|
88
102
|
permissionMode: 'auto-approve', // Auto-approve for automated learning
|
|
89
103
|
env: config.env,
|
|
@@ -100,7 +114,7 @@ export class ACPBackend implements AgentBackend {
|
|
|
100
114
|
const acpSession = await agentHandle.createSession(cwd);
|
|
101
115
|
|
|
102
116
|
// Store session state
|
|
103
|
-
const state:
|
|
117
|
+
const state: LocalACPSessionState = {
|
|
104
118
|
atlasSession,
|
|
105
119
|
agentHandle,
|
|
106
120
|
acpSession,
|
|
@@ -116,7 +130,7 @@ export class ACPBackend implements AgentBackend {
|
|
|
116
130
|
promptContent += `\n\n## Additional Context\n\`\`\`json\n${JSON.stringify(config.task.context, null, 2)}\n\`\`\``;
|
|
117
131
|
}
|
|
118
132
|
|
|
119
|
-
// Send prompt and collect updates
|
|
133
|
+
// Send prompt and collect updates (inherited protocol handler)
|
|
120
134
|
await this.runPrompt(state, promptContent, config);
|
|
121
135
|
|
|
122
136
|
return atlasSession;
|
|
@@ -125,169 +139,13 @@ export class ACPBackend implements AgentBackend {
|
|
|
125
139
|
atlasSession.error = error instanceof Error ? error.message : 'Unknown error';
|
|
126
140
|
atlasSession.endTime = new Date();
|
|
127
141
|
console.error(
|
|
128
|
-
`[
|
|
129
|
-
error instanceof Error ? error.message : String(error)
|
|
142
|
+
`[LocalACPBackend] Session ${atlasSessionId} spawn failed:`,
|
|
143
|
+
error instanceof Error ? error.message : String(error),
|
|
130
144
|
);
|
|
131
145
|
return atlasSession;
|
|
132
146
|
}
|
|
133
147
|
}
|
|
134
148
|
|
|
135
|
-
/**
|
|
136
|
-
* Run a prompt and collect all updates
|
|
137
|
-
*/
|
|
138
|
-
private async runPrompt(
|
|
139
|
-
state: ACPSessionState,
|
|
140
|
-
promptContent: string,
|
|
141
|
-
config: AgentSpawnConfig
|
|
142
|
-
): Promise<void> {
|
|
143
|
-
const { atlasSession, acpSession } = state;
|
|
144
|
-
|
|
145
|
-
try {
|
|
146
|
-
// Stream updates from the agent
|
|
147
|
-
for await (const update of acpSession.prompt(promptContent)) {
|
|
148
|
-
this.processUpdate(atlasSession, update, config);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Mark as completed
|
|
152
|
-
atlasSession.state = 'completed';
|
|
153
|
-
atlasSession.endTime = new Date();
|
|
154
|
-
} catch (error) {
|
|
155
|
-
atlasSession.state = 'failed';
|
|
156
|
-
atlasSession.error = error instanceof Error ? error.message : 'Unknown error';
|
|
157
|
-
atlasSession.endTime = new Date();
|
|
158
|
-
console.error(
|
|
159
|
-
`[ACPBackend] Session ${atlasSession.id} prompt execution failed:`,
|
|
160
|
-
error instanceof Error ? error.message : String(error)
|
|
161
|
-
);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Process a session update from the agent
|
|
167
|
-
* Uses defensive typing since ACP types can vary
|
|
168
|
-
*/
|
|
169
|
-
private processUpdate(
|
|
170
|
-
session: AgentSession,
|
|
171
|
-
update: ExtendedSessionUpdate,
|
|
172
|
-
config: AgentSpawnConfig
|
|
173
|
-
): void {
|
|
174
|
-
// Cast to any for flexible property access since ACP types are complex unions
|
|
175
|
-
const u = update as Record<string, unknown>;
|
|
176
|
-
const updateType = u.sessionUpdate as string;
|
|
177
|
-
|
|
178
|
-
switch (updateType) {
|
|
179
|
-
case 'agent_message_chunk':
|
|
180
|
-
case 'user_message_chunk':
|
|
181
|
-
case 'agent_thought_chunk': {
|
|
182
|
-
// ContentChunk has a single 'content' field (ContentBlock)
|
|
183
|
-
const content = u.content as Record<string, unknown> | undefined;
|
|
184
|
-
if (content && content.type === 'text' && typeof content.text === 'string') {
|
|
185
|
-
const message: AgentMessage = {
|
|
186
|
-
role: updateType === 'user_message_chunk' ? 'user' : 'assistant',
|
|
187
|
-
content: content.text,
|
|
188
|
-
timestamp: new Date(),
|
|
189
|
-
};
|
|
190
|
-
session.messages.push(message);
|
|
191
|
-
config.onMessage?.(message);
|
|
192
|
-
}
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
case 'tool_call': {
|
|
197
|
-
// ToolCall has toolCallId, title, rawInput, status, content, etc.
|
|
198
|
-
const toolCallId = (u.toolCallId as string) ?? crypto.randomUUID();
|
|
199
|
-
const title = (u.title as string) ?? 'unknown';
|
|
200
|
-
const rawInput = u.rawInput;
|
|
201
|
-
|
|
202
|
-
const toolCall: ToolCall = {
|
|
203
|
-
id: toolCallId,
|
|
204
|
-
name: title,
|
|
205
|
-
input: rawInput,
|
|
206
|
-
startTime: new Date(),
|
|
207
|
-
};
|
|
208
|
-
session.toolCalls.push(toolCall);
|
|
209
|
-
config.onToolCall?.(toolCall);
|
|
210
|
-
break;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
case 'tool_call_update': {
|
|
214
|
-
// ToolCallUpdate has toolCallId, status, content, etc.
|
|
215
|
-
const toolCallId = u.toolCallId as string;
|
|
216
|
-
const status = u.status as string | undefined;
|
|
217
|
-
const content = u.content as Array<Record<string, unknown>> | undefined;
|
|
218
|
-
|
|
219
|
-
const existingTc = session.toolCalls.find((t) => t.id === toolCallId);
|
|
220
|
-
if (existingTc) {
|
|
221
|
-
if (status === 'completed' || status === 'failed') {
|
|
222
|
-
existingTc.endTime = new Date();
|
|
223
|
-
}
|
|
224
|
-
if (content && Array.isArray(content)) {
|
|
225
|
-
// Extract text from content blocks
|
|
226
|
-
const outputs: string[] = [];
|
|
227
|
-
for (const block of content) {
|
|
228
|
-
if (block.type === 'text' && typeof block.text === 'string') {
|
|
229
|
-
outputs.push(block.text);
|
|
230
|
-
} else if (block.type === 'diff' && typeof block.diff === 'string') {
|
|
231
|
-
outputs.push(block.diff);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (outputs.length > 0) {
|
|
235
|
-
existingTc.output = outputs.join('\n');
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
if (status === 'failed') {
|
|
239
|
-
existingTc.error = 'Tool call failed';
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
case 'permission_request': {
|
|
246
|
-
// In auto-approve mode, this shouldn't happen, but log it
|
|
247
|
-
session.messages.push({
|
|
248
|
-
role: 'system',
|
|
249
|
-
content: `Permission requested: ${JSON.stringify(update)}`,
|
|
250
|
-
timestamp: new Date(),
|
|
251
|
-
});
|
|
252
|
-
break;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
case 'plan': {
|
|
256
|
-
// Agent shared its plan
|
|
257
|
-
const plan = u.plan;
|
|
258
|
-
session.messages.push({
|
|
259
|
-
role: 'assistant',
|
|
260
|
-
content: `[Plan] ${JSON.stringify(plan)}`,
|
|
261
|
-
timestamp: new Date(),
|
|
262
|
-
});
|
|
263
|
-
break;
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
default:
|
|
267
|
-
// Log other updates for debugging
|
|
268
|
-
session.metadata.lastUpdate = update;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
async getSession(sessionId: string): Promise<AgentSession | undefined> {
|
|
273
|
-
return this.sessions.get(sessionId)?.atlasSession;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
async sendMessage(sessionId: string, message: string): Promise<void> {
|
|
277
|
-
const state = this.sessions.get(sessionId);
|
|
278
|
-
if (!state) {
|
|
279
|
-
throw new Error('Session not found');
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Send additional prompt
|
|
283
|
-
for await (const update of state.acpSession.prompt(message)) {
|
|
284
|
-
this.processUpdate(state.atlasSession, update, {
|
|
285
|
-
agentType: state.atlasSession.agentType,
|
|
286
|
-
task: state.atlasSession.task,
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
|
|
291
149
|
async terminate(sessionId: string): Promise<void> {
|
|
292
150
|
const state = this.sessions.get(sessionId);
|
|
293
151
|
if (!state) return;
|
|
@@ -298,19 +156,19 @@ export class ACPBackend implements AgentBackend {
|
|
|
298
156
|
} catch (error) {
|
|
299
157
|
// Log cancellation errors but don't throw
|
|
300
158
|
console.error(
|
|
301
|
-
`[
|
|
302
|
-
error instanceof Error ? error.message : String(error)
|
|
159
|
+
`[LocalACPBackend] Session ${sessionId} cancel error:`,
|
|
160
|
+
error instanceof Error ? error.message : String(error),
|
|
303
161
|
);
|
|
304
162
|
}
|
|
305
163
|
|
|
306
164
|
try {
|
|
307
|
-
// Close the agent handle
|
|
165
|
+
// Close the local agent handle
|
|
308
166
|
await state.agentHandle.close();
|
|
309
167
|
} catch (error) {
|
|
310
168
|
// Log close errors but don't throw
|
|
311
169
|
console.error(
|
|
312
|
-
`[
|
|
313
|
-
error instanceof Error ? error.message : String(error)
|
|
170
|
+
`[LocalACPBackend] Session ${sessionId} close error:`,
|
|
171
|
+
error instanceof Error ? error.message : String(error),
|
|
314
172
|
);
|
|
315
173
|
}
|
|
316
174
|
|
|
@@ -322,32 +180,35 @@ export class ACPBackend implements AgentBackend {
|
|
|
322
180
|
this.handles.delete(sessionId);
|
|
323
181
|
}
|
|
324
182
|
|
|
325
|
-
async listSessions(): Promise<AgentSession[]> {
|
|
326
|
-
return Array.from(this.sessions.values()).map((s) => s.atlasSession);
|
|
327
|
-
}
|
|
328
|
-
|
|
329
183
|
/**
|
|
330
|
-
* Get a raw
|
|
331
|
-
*/
|
|
332
|
-
getACPSession(sessionId: string): Session | undefined {
|
|
333
|
-
return this.sessions.get(sessionId)?.acpSession;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* Get a raw agent handle for advanced usage
|
|
184
|
+
* Get a raw agent handle for advanced usage (local-specific)
|
|
338
185
|
*/
|
|
339
186
|
getAgentHandle(sessionId: string): AgentHandle | undefined {
|
|
340
187
|
return this.sessions.get(sessionId)?.agentHandle;
|
|
341
188
|
}
|
|
342
189
|
}
|
|
343
190
|
|
|
191
|
+
// ============================================================
|
|
192
|
+
// Backward-compatible alias
|
|
193
|
+
// ============================================================
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @deprecated Use LocalACPBackend directly. ACPBackend is a backward-compatible alias.
|
|
197
|
+
*/
|
|
198
|
+
export const ACPBackend = LocalACPBackend;
|
|
199
|
+
export type ACPBackend = LocalACPBackend;
|
|
200
|
+
|
|
201
|
+
// ============================================================
|
|
202
|
+
// Factory helpers
|
|
203
|
+
// ============================================================
|
|
204
|
+
|
|
344
205
|
/**
|
|
345
206
|
* Create an ACP backend with agent configurations
|
|
346
207
|
*/
|
|
347
208
|
export function createACPBackend(
|
|
348
|
-
configs: Record<string, ACPAgentConfig
|
|
349
|
-
):
|
|
350
|
-
return new
|
|
209
|
+
configs: Record<string, ACPAgentConfig>,
|
|
210
|
+
): LocalACPBackend {
|
|
211
|
+
return new LocalACPBackend(configs);
|
|
351
212
|
}
|
|
352
213
|
|
|
353
214
|
/**
|
|
@@ -12,6 +12,7 @@ export {
|
|
|
12
12
|
} from './mock.js';
|
|
13
13
|
|
|
14
14
|
export {
|
|
15
|
+
LocalACPBackend,
|
|
15
16
|
ACPBackend,
|
|
16
17
|
createACPBackend,
|
|
17
18
|
claudeCodeACPConfig,
|
|
@@ -20,5 +21,18 @@ export {
|
|
|
20
21
|
type ACPAgentConfig,
|
|
21
22
|
} from './acp.js';
|
|
22
23
|
|
|
24
|
+
export {
|
|
25
|
+
ACPProtocolHandler,
|
|
26
|
+
type ACPSessionBase,
|
|
27
|
+
} from './acp-protocol.js';
|
|
28
|
+
|
|
29
|
+
export {
|
|
30
|
+
MacroAgentBackendAdapter,
|
|
31
|
+
adaptMacroBackend,
|
|
32
|
+
createMacroAgentSource,
|
|
33
|
+
type MacroAgentBackendLike,
|
|
34
|
+
type MacroSessionLike,
|
|
35
|
+
} from './macro-agent.js';
|
|
36
|
+
|
|
23
37
|
// Re-export useful types from acp-factory
|
|
24
38
|
export { AgentFactory } from 'acp-factory';
|