cognitive-core 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.json +88 -0
- package/.claude/settings.local.json +11 -0
- package/.entire/settings.json +4 -0
- package/CLAUDE.md +233 -0
- package/README.md +841 -255
- package/dist/atlas.d.ts +150 -12
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +391 -31
- package/dist/atlas.js.map +1 -1
- package/dist/bin/cli-utils.d.ts +37 -0
- package/dist/bin/cli-utils.d.ts.map +1 -0
- package/dist/bin/cli-utils.js +176 -0
- package/dist/bin/cli-utils.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +2 -12
- package/dist/bin/cognitive-core.d.ts.map +1 -1
- package/dist/bin/cognitive-core.js +76 -351
- package/dist/bin/cognitive-core.js.map +1 -1
- package/dist/bin/commands/kb.d.ts +6 -0
- package/dist/bin/commands/kb.d.ts.map +1 -0
- package/dist/bin/commands/kb.js +240 -0
- package/dist/bin/commands/kb.js.map +1 -0
- package/dist/bin/commands/learn.d.ts +6 -0
- package/dist/bin/commands/learn.d.ts.map +1 -0
- package/dist/bin/commands/learn.js +91 -0
- package/dist/bin/commands/learn.js.map +1 -0
- package/dist/bin/commands/legacy.d.ts +12 -0
- package/dist/bin/commands/legacy.d.ts.map +1 -0
- package/dist/bin/commands/legacy.js +142 -0
- package/dist/bin/commands/legacy.js.map +1 -0
- package/dist/bin/commands/run.d.ts +3 -0
- package/dist/bin/commands/run.d.ts.map +1 -0
- package/dist/bin/commands/run.js +99 -0
- package/dist/bin/commands/run.js.map +1 -0
- package/dist/bin/commands/sessions.d.ts +9 -0
- package/dist/bin/commands/sessions.d.ts.map +1 -0
- package/dist/bin/commands/sessions.js +183 -0
- package/dist/bin/commands/sessions.js.map +1 -0
- package/dist/bin/commands/skills.d.ts +6 -0
- package/dist/bin/commands/skills.d.ts.map +1 -0
- package/dist/bin/commands/skills.js +135 -0
- package/dist/bin/commands/skills.js.map +1 -0
- package/dist/embeddings/index.d.ts +1 -0
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/inverted-index.d.ts +47 -0
- package/dist/embeddings/inverted-index.d.ts.map +1 -0
- package/dist/embeddings/inverted-index.js +122 -0
- package/dist/embeddings/inverted-index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +3 -1
- package/dist/embeddings/manager.d.ts.map +1 -1
- package/dist/embeddings/manager.js +12 -7
- package/dist/embeddings/manager.js.map +1 -1
- package/dist/embeddings/provider.d.ts.map +1 -1
- package/dist/embeddings/provider.js +6 -3
- package/dist/embeddings/provider.js.map +1 -1
- package/dist/embeddings/vector-store.d.ts +7 -3
- package/dist/embeddings/vector-store.d.ts.map +1 -1
- package/dist/embeddings/vector-store.js +22 -6
- package/dist/embeddings/vector-store.js.map +1 -1
- package/dist/factory.d.ts +11 -12
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +20 -7
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +11 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -8
- package/dist/index.js.map +1 -1
- package/dist/learning/analyzer.d.ts.map +1 -1
- package/dist/learning/analyzer.js +17 -35
- package/dist/learning/analyzer.js.map +1 -1
- package/dist/learning/energy-evaluator.d.ts +128 -0
- package/dist/learning/energy-evaluator.d.ts.map +1 -0
- package/dist/learning/energy-evaluator.js +175 -0
- package/dist/learning/energy-evaluator.js.map +1 -0
- package/dist/learning/healing-orchestrator.d.ts +182 -0
- package/dist/learning/healing-orchestrator.d.ts.map +1 -0
- package/dist/learning/healing-orchestrator.js +250 -0
- package/dist/learning/healing-orchestrator.js.map +1 -0
- package/dist/learning/index.d.ts +11 -2
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +20 -3
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/instant-loop.d.ts +87 -0
- package/dist/learning/instant-loop.d.ts.map +1 -0
- package/dist/learning/instant-loop.js +264 -0
- package/dist/learning/instant-loop.js.map +1 -0
- package/dist/learning/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/loop-coordinator.d.ts +61 -0
- package/dist/learning/loop-coordinator.d.ts.map +1 -0
- package/dist/learning/loop-coordinator.js +96 -0
- package/dist/learning/loop-coordinator.js.map +1 -0
- package/dist/learning/maintenance-scheduler.d.ts +141 -0
- package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
- package/dist/learning/maintenance-scheduler.js +186 -0
- package/dist/learning/maintenance-scheduler.js.map +1 -0
- package/dist/learning/meta-learner.d.ts +7 -0
- package/dist/learning/meta-learner.d.ts.map +1 -1
- package/dist/learning/meta-learner.js +47 -21
- package/dist/learning/meta-learner.js.map +1 -1
- package/dist/learning/pipeline.d.ts +55 -4
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +134 -16
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/reflexion-generator.d.ts +64 -0
- package/dist/learning/reflexion-generator.d.ts.map +1 -0
- package/dist/learning/reflexion-generator.js +194 -0
- package/dist/learning/reflexion-generator.js.map +1 -0
- package/dist/learning/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 +31 -0
- package/dist/learning/trajectory-sources/entire.d.ts.map +1 -0
- package/dist/learning/trajectory-sources/entire.js +189 -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/learning/unified-pipeline.d.ts +281 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -0
- package/dist/learning/unified-pipeline.js +637 -0
- package/dist/learning/unified-pipeline.js.map +1 -0
- package/dist/memory/candidate-retrieval.d.ts +43 -0
- package/dist/memory/candidate-retrieval.d.ts.map +1 -0
- package/dist/memory/candidate-retrieval.js +41 -0
- package/dist/memory/candidate-retrieval.js.map +1 -0
- package/dist/memory/causal-store.d.ts +97 -0
- package/dist/memory/causal-store.d.ts.map +1 -0
- package/dist/memory/causal-store.js +209 -0
- package/dist/memory/causal-store.js.map +1 -0
- package/dist/memory/coherence.d.ts +71 -0
- package/dist/memory/coherence.d.ts.map +1 -0
- package/dist/memory/coherence.js +176 -0
- package/dist/memory/coherence.js.map +1 -0
- package/dist/memory/experience.d.ts +39 -6
- package/dist/memory/experience.d.ts.map +1 -1
- package/dist/memory/experience.js +193 -49
- package/dist/memory/experience.js.map +1 -1
- package/dist/memory/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 +15 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +22 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/knowledge-bank.d.ts +234 -0
- package/dist/memory/knowledge-bank.d.ts.map +1 -0
- package/dist/memory/knowledge-bank.js +1048 -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/meta.d.ts +7 -8
- package/dist/memory/meta.d.ts.map +1 -1
- package/dist/memory/meta.js +73 -79
- package/dist/memory/meta.js.map +1 -1
- package/dist/memory/playbook.d.ts +26 -9
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +198 -74
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/reasoning-bank.d.ts +130 -0
- package/dist/memory/reasoning-bank.d.ts.map +1 -0
- package/dist/memory/reasoning-bank.js +342 -0
- package/dist/memory/reasoning-bank.js.map +1 -0
- package/dist/memory/reflexion.d.ts +59 -0
- package/dist/memory/reflexion.d.ts.map +1 -0
- package/dist/memory/reflexion.js +96 -0
- package/dist/memory/reflexion.js.map +1 -0
- package/dist/memory/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 +20 -3
- package/dist/memory/system.d.ts.map +1 -1
- package/dist/memory/system.js +61 -11
- 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/memory/temporal-compressor.d.ts +126 -0
- package/dist/memory/temporal-compressor.d.ts.map +1 -0
- package/dist/memory/temporal-compressor.js +335 -0
- package/dist/memory/temporal-compressor.js.map +1 -0
- package/dist/persistence/index.d.ts +11 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +11 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/migrator.d.ts +40 -0
- package/dist/persistence/migrator.d.ts.map +1 -0
- package/dist/persistence/migrator.js +238 -0
- package/dist/persistence/migrator.js.map +1 -0
- package/dist/persistence/serializers.d.ts +45 -0
- package/dist/persistence/serializers.d.ts.map +1 -0
- package/dist/persistence/serializers.js +80 -0
- package/dist/persistence/serializers.js.map +1 -0
- package/dist/persistence/sqlite-persistence.d.ts +228 -0
- package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
- package/dist/persistence/sqlite-persistence.js +588 -0
- package/dist/persistence/sqlite-persistence.js.map +1 -0
- package/dist/runtime/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/flows/learning.d.ts +10 -12
- package/dist/runtime/flows/learning.d.ts.map +1 -1
- package/dist/runtime/flows/learning.js +10 -23
- package/dist/runtime/flows/learning.js.map +1 -1
- package/dist/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 +2 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +4 -0
- package/dist/search/index.js.map +1 -1
- package/dist/search/moe-gate.d.ts +124 -0
- package/dist/search/moe-gate.d.ts.map +1 -0
- package/dist/search/moe-gate.js +234 -0
- package/dist/search/moe-gate.js.map +1 -0
- package/dist/search/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/router.d.ts +32 -2
- package/dist/search/router.d.ts.map +1 -1
- package/dist/search/router.js +87 -4
- package/dist/search/router.js.map +1 -1
- package/dist/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 +44 -0
- package/dist/session-bank/git-reader.d.ts.map +1 -0
- package/dist/session-bank/git-reader.js +172 -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 +50 -0
- package/dist/session-bank/parser.d.ts.map +1 -0
- package/dist/session-bank/parser.js +338 -0
- package/dist/session-bank/parser.js.map +1 -0
- package/dist/session-bank/session-bank.d.ts +40 -0
- package/dist/session-bank/session-bank.d.ts.map +1 -0
- package/dist/session-bank/session-bank.js +347 -0
- package/dist/session-bank/session-bank.js.map +1 -0
- package/dist/session-bank/types.d.ts +132 -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 +169 -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 +199 -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 +1318 -44
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +243 -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 +9 -2
- 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/memory.d.ts +52 -0
- package/dist/types/memory.d.ts.map +1 -1
- package/dist/types/memory.js +13 -0
- package/dist/types/memory.js.map +1 -1
- package/dist/types/playbook.d.ts +4 -0
- package/dist/types/playbook.d.ts.map +1 -1
- package/dist/types/playbook.js.map +1 -1
- package/dist/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/error-classifier.d.ts +30 -0
- package/dist/utils/error-classifier.d.ts.map +1 -0
- package/dist/utils/error-classifier.js +85 -0
- package/dist/utils/error-classifier.js.map +1 -0
- package/dist/utils/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 +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/partitioned-store.d.ts +93 -0
- package/dist/utils/partitioned-store.d.ts.map +1 -0
- package/dist/utils/partitioned-store.js +251 -0
- package/dist/utils/partitioned-store.js.map +1 -0
- package/dist/utils/trajectory-helpers.d.ts +39 -0
- package/dist/utils/trajectory-helpers.d.ts.map +1 -0
- package/dist/utils/trajectory-helpers.js +57 -0
- package/dist/utils/trajectory-helpers.js.map +1 -0
- package/dist/workspace/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 +49 -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 +152 -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/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 +27 -7
- 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/sessionlog/.husky/pre-commit +1 -0
- package/references/sessionlog/.lintstagedrc.json +4 -0
- package/references/sessionlog/.prettierignore +4 -0
- package/references/sessionlog/.prettierrc.json +11 -0
- package/references/sessionlog/LICENSE +21 -0
- package/references/sessionlog/README.md +453 -0
- package/references/sessionlog/eslint.config.js +58 -0
- package/references/sessionlog/package-lock.json +3672 -0
- package/references/sessionlog/package.json +65 -0
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
- package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
- package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
- package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
- package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
- package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
- package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
- package/references/sessionlog/src/__tests__/types.test.ts +166 -0
- package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
- package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
- package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
- package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
- package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
- package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
- package/references/sessionlog/src/agent/registry.ts +143 -0
- package/references/sessionlog/src/agent/session-types.ts +113 -0
- package/references/sessionlog/src/agent/types.ts +220 -0
- package/references/sessionlog/src/cli.ts +597 -0
- package/references/sessionlog/src/commands/clean.ts +133 -0
- package/references/sessionlog/src/commands/disable.ts +84 -0
- package/references/sessionlog/src/commands/doctor.ts +145 -0
- package/references/sessionlog/src/commands/enable.ts +202 -0
- package/references/sessionlog/src/commands/explain.ts +261 -0
- package/references/sessionlog/src/commands/reset.ts +105 -0
- package/references/sessionlog/src/commands/resume.ts +180 -0
- package/references/sessionlog/src/commands/rewind.ts +195 -0
- package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
- package/references/sessionlog/src/commands/status.ts +172 -0
- package/references/sessionlog/src/config.ts +165 -0
- package/references/sessionlog/src/events/event-log.ts +126 -0
- package/references/sessionlog/src/git-operations.ts +558 -0
- package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
- package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
- package/references/sessionlog/src/index.ts +650 -0
- package/references/sessionlog/src/security/redaction.ts +283 -0
- package/references/sessionlog/src/session/state-machine.ts +452 -0
- package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
- package/references/sessionlog/src/store/native-store.ts +173 -0
- package/references/sessionlog/src/store/provider-types.ts +99 -0
- package/references/sessionlog/src/store/session-store.ts +266 -0
- package/references/sessionlog/src/strategy/attribution.ts +296 -0
- package/references/sessionlog/src/strategy/common.ts +207 -0
- package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
- package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
- package/references/sessionlog/src/strategy/types.ts +279 -0
- package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
- package/references/sessionlog/src/summarize/summarize.ts +432 -0
- package/references/sessionlog/src/types.ts +508 -0
- package/references/sessionlog/src/utils/chunk-files.ts +49 -0
- package/references/sessionlog/src/utils/commit-message.ts +65 -0
- package/references/sessionlog/src/utils/detect-agent.ts +36 -0
- package/references/sessionlog/src/utils/hook-managers.ts +125 -0
- package/references/sessionlog/src/utils/ide-tags.ts +32 -0
- package/references/sessionlog/src/utils/paths.ts +79 -0
- package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
- package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
- package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
- package/references/sessionlog/src/utils/string-utils.ts +46 -0
- package/references/sessionlog/src/utils/todo-extract.ts +188 -0
- package/references/sessionlog/src/utils/trailers.ts +187 -0
- package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
- package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
- package/references/sessionlog/src/utils/tree-ops.ts +219 -0
- package/references/sessionlog/src/utils/tty.ts +72 -0
- package/references/sessionlog/src/utils/validation.ts +65 -0
- package/references/sessionlog/src/utils/worktree.ts +58 -0
- package/references/sessionlog/src/wire-types.ts +59 -0
- package/references/sessionlog/templates/setup-env.sh +153 -0
- package/references/sessionlog/tsconfig.json +18 -0
- package/references/sessionlog/vitest.config.ts +12 -0
- package/references/skill-tree/.claude/settings.json +6 -0
- package/references/skill-tree/.sudocode/issues.jsonl +19 -0
- package/references/skill-tree/.sudocode/specs.jsonl +3 -0
- package/references/skill-tree/CLAUDE.md +126 -0
- package/references/skill-tree/README.md +372 -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 +164 -0
- package/references/skill-tree/package-lock.json +1852 -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 +583 -41
- package/src/bin/cli-utils.ts +220 -0
- package/src/bin/cognitive-core.ts +84 -392
- package/src/bin/commands/kb.ts +266 -0
- package/src/bin/commands/learn.ts +100 -0
- package/src/bin/commands/legacy.ts +182 -0
- package/src/bin/commands/run.ts +113 -0
- package/src/bin/commands/sessions.ts +221 -0
- package/src/bin/commands/skills.ts +146 -0
- package/src/embeddings/index.ts +3 -0
- package/src/embeddings/inverted-index.ts +134 -0
- package/src/embeddings/manager.ts +13 -8
- package/src/embeddings/provider.ts +10 -3
- package/src/embeddings/vector-store.ts +21 -9
- package/src/factory.ts +33 -16
- package/src/index.ts +231 -9
- package/src/learning/analyzer.ts +21 -37
- package/src/learning/energy-evaluator.ts +282 -0
- package/src/learning/healing-orchestrator.ts +383 -0
- package/src/learning/index.ts +104 -13
- package/src/learning/instant-loop.ts +357 -0
- package/src/learning/knowledge-extractor.ts +470 -0
- package/src/learning/maintenance-scheduler.ts +271 -0
- package/src/learning/meta-learner.ts +59 -23
- package/src/learning/reflexion-generator.ts +273 -0
- 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 +251 -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/learning/unified-pipeline.ts +921 -0
- package/src/memory/candidate-retrieval.ts +71 -0
- package/src/memory/causal-store.ts +273 -0
- package/src/memory/coherence.ts +252 -0
- package/src/memory/experience.ts +217 -50
- package/src/memory/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 +88 -0
- package/src/memory/knowledge-bank.ts +1317 -0
- package/src/memory/knowledge-defrag.ts +329 -0
- package/src/memory/knowledge-graph.ts +361 -0
- package/src/memory/meta.ts +78 -96
- package/src/memory/playbook.ts +239 -75
- package/src/memory/reasoning-bank.ts +458 -0
- package/src/memory/reflexion.ts +122 -0
- package/src/memory/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 +80 -11
- package/src/memory/team-experience.ts +604 -0
- package/src/memory/temporal-compressor.ts +409 -0
- package/src/persistence/index.ts +37 -0
- package/src/persistence/migrator.ts +298 -0
- package/src/persistence/serializers.ts +79 -0
- package/src/persistence/sqlite-persistence.ts +925 -0
- package/src/runtime/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/flows/learning.ts +25 -42
- 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 +19 -0
- package/src/search/moe-gate.ts +304 -0
- package/src/search/refinement-loop.ts +106 -12
- package/src/search/router.ts +111 -4
- package/src/search/team-router.ts +459 -0
- package/src/session-bank/git-reader.ts +200 -0
- package/src/session-bank/index.ts +26 -0
- package/src/session-bank/parser.ts +548 -0
- package/src/session-bank/session-bank.ts +485 -0
- package/src/session-bank/types.ts +176 -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 +191 -0
- package/src/surfacing/sqlite-storage-adapter.ts +285 -0
- package/src/surfacing/team-skill-library.ts +610 -0
- package/src/types/config.ts +282 -0
- package/src/types/dataclaw.ts +99 -0
- package/src/types/huggingface-transformers.d.ts +12 -0
- package/src/types/index.ts +159 -0
- package/src/types/knowledge-graph.ts +246 -0
- package/src/types/knowledge.ts +388 -0
- package/src/types/memory.ts +30 -0
- package/src/types/playbook.ts +4 -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/error-classifier.ts +113 -0
- package/src/utils/frontmatter.ts +118 -0
- package/src/utils/index.ts +25 -0
- package/src/utils/partitioned-store.ts +299 -0
- package/src/utils/trajectory-helpers.ts +79 -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 +241 -0
- package/tests/atlas-knowledge.test.ts +165 -0
- package/tests/embeddings/inverted-index.test.ts +138 -0
- package/tests/feature-toggles.test.ts +275 -0
- package/tests/gap-fixes.test.ts +1116 -0
- package/tests/integration/cli-e2e.test.ts +621 -0
- package/tests/integration/dataclaw-e2e.test.ts +559 -0
- package/tests/integration/e2e.test.ts +412 -4
- package/tests/integration/entire-e2e.test.ts +376 -0
- package/tests/integration/huggingface-e2e.test.ts +627 -0
- package/tests/integration/persistence-e2e.test.ts +741 -0
- package/tests/integration/phase-e2e.test.ts +1143 -0
- package/tests/integration/session-bank.test.ts +231 -0
- package/tests/integration/sessionlog-e2e.test.ts +329 -0
- package/tests/integration/skill-tree-wiring.test.ts +152 -0
- package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
- package/tests/learning/analyzer.test.ts +1 -1
- package/tests/learning/dataclaw-trajectory-source.test.ts +642 -0
- package/tests/learning/energy-evaluator.test.ts +180 -0
- package/tests/learning/entire-trajectory-source.test.ts +380 -0
- package/tests/learning/healing-orchestrator.test.ts +269 -0
- package/tests/learning/huggingface-trajectory-source.test.ts +817 -0
- package/tests/learning/instant-loop.test.ts +243 -0
- package/tests/learning/knowledge-extractor.test.ts +491 -0
- package/tests/learning/maintenance-scheduler.test.ts +191 -0
- package/tests/learning/reflexion-generator.test.ts +411 -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 +320 -0
- package/tests/learning/unified-pipeline.test.ts +322 -0
- package/tests/mcp/playbook-server.test.ts +6 -1
- package/tests/memory/causal-store.test.ts +276 -0
- package/tests/memory/coherence.test.ts +232 -0
- package/tests/memory/experience.test.ts +8 -3
- package/tests/memory/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/playbook.test.ts +307 -1
- package/tests/memory/provenance.test.ts +11 -2
- package/tests/memory/reasoning-bank.test.ts +239 -0
- package/tests/memory/reflexion.test.ts +166 -0
- package/tests/memory/skill-exporter.test.ts +475 -0
- package/tests/memory/system.test.ts +6 -1
- package/tests/memory/team-experience.test.ts +411 -0
- package/tests/memory/temporal-compressor.test.ts +318 -0
- package/tests/persistence/migrator.test.ts +1009 -0
- package/tests/persistence/sqlite-persistence.test.ts +635 -0
- package/tests/runtime/agent-manager.test.ts +7 -2
- package/tests/runtime/compute-provider.test.ts +288 -0
- package/tests/runtime/delegate.test.ts +354 -0
- package/tests/runtime/macro-agent-backend.test.ts +266 -0
- package/tests/search/moe-gate.test.ts +250 -0
- package/tests/search/refinement-loop.test.ts +11 -2
- package/tests/search/router.test.ts +81 -2
- package/tests/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/sessionlog-root-metadata.json +16 -0
- package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
- package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
- package/tests/session-bank/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 +453 -0
- package/tests/session-bank/session-bank.test.ts +546 -0
- package/tests/surfacing/skill-library.test.ts +6 -1
- package/tests/surfacing/skill-publisher.test.ts +364 -0
- package/tests/surfacing/sqlite-storage-adapter.test.ts +206 -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/utils/partitioned-store.test.ts +230 -0
- package/tests/workspace/full-flow.test.ts +845 -0
- package/tests/workspace/manager.test.ts +215 -0
- package/tests/workspace/runner.test.ts +336 -0
- package/tests/workspace/skill-converter.test.ts +205 -0
- package/tests/workspace/templates/knowledge-extraction.test.ts +235 -0
- package/tests/workspace/templates/team-playbook-extraction.test.ts +341 -0
- package/tests/workspace/templates/team-trajectory-analysis.test.ts +417 -0
- package/src/learning/llm-extractor.ts +0 -542
- package/src/learning/pipeline.ts +0 -244
- package/tests/learning/pipeline.test.ts +0 -176
|
@@ -0,0 +1,1134 @@
|
|
|
1
|
+
# Design: Session Bank (Entire-backed)
|
|
2
|
+
|
|
3
|
+
> **Status**: Proposed
|
|
4
|
+
> **Authors**: Alex Ngai, Claude
|
|
5
|
+
> **Date**: 2026-02-24
|
|
6
|
+
> **Related**: [Entire CLI](https://github.com/entireio/cli), [ReMem](https://arxiv.org/abs/2501.00662)
|
|
7
|
+
|
|
8
|
+
## 1. Motivation
|
|
9
|
+
|
|
10
|
+
cognitive-core's learning pipeline operates on **Trajectory** objects — structured sequences of thought/action/observation steps with an outcome. Today, trajectories are constructed synthetically (tests, manual creation) or extracted in-memory from `AgentSession` objects that are discarded after execution.
|
|
11
|
+
|
|
12
|
+
This creates three problems:
|
|
13
|
+
|
|
14
|
+
1. **No durable session capture** — When an agent runs outside cognitive-core (e.g. Claude Code sessions, standalone CLI agents), there is no mechanism to ingest those sessions as trajectories. The richest source of learning data — real developer interactions — is lost.
|
|
15
|
+
|
|
16
|
+
2. **No raw transcript preservation** — The `Trajectory` type is a lossy abstraction. It discards conversational context, partial reasoning, tool call timing, and multi-turn structure. Once converted, the original session is gone.
|
|
17
|
+
|
|
18
|
+
3. **No session-level queries** — The existing `ExperienceMemory` stores compressed experience tuples. There is no way to ask "show me all sessions where the agent debugged a TypeScript error" at the raw session level, before lossy compression.
|
|
19
|
+
|
|
20
|
+
### The Entire Opportunity
|
|
21
|
+
|
|
22
|
+
[Entire](https://github.com/entireio/cli) is a Go CLI tool that captures full agent session transcripts via Claude Code (and Gemini CLI) hooks. It stores data on an orphan git branch (`entire/checkpoints/v1`), providing:
|
|
23
|
+
|
|
24
|
+
- **Automatic capture** — 7 hook events: session-start, session-end, stop, user-prompt-submit, pre-task, post-task, post-todo
|
|
25
|
+
- **Full fidelity** — JSONL transcripts preserve every message, tool call, and observation in the agent's native format
|
|
26
|
+
- **Rich metadata** — token usage, file attribution, AI-generated summaries (intent, outcome, learnings, friction points)
|
|
27
|
+
- **Git-native storage** — checkpoint-sharded orphan branch, pushed alongside your code
|
|
28
|
+
- **Commit linking** — git trailers (`Entire-Checkpoint`, `Entire-Session`) bidirectionally link code commits to session data
|
|
29
|
+
|
|
30
|
+
By using Entire as the capture and storage layer, cognitive-core gains a durable session archive without building its own capture infrastructure.
|
|
31
|
+
|
|
32
|
+
### Standalone Package Philosophy
|
|
33
|
+
|
|
34
|
+
The session bank is designed as a **standalone TypeScript package** (`@entire-sessions/reader` or similar) that can be used independently of cognitive-core. It reads from Entire's orphan branch and exposes a generic session query API. cognitive-core then adapts it via a thin `EntireTrajectorySource` implementing the existing `TrajectorySource` interface.
|
|
35
|
+
|
|
36
|
+
This keeps the boundary clean:
|
|
37
|
+
- **session-bank** knows about Entire's data format, not about Trajectories
|
|
38
|
+
- **cognitive-core** knows about Trajectories, not about Entire's internals
|
|
39
|
+
- The adapter is the only code that bridges the two
|
|
40
|
+
|
|
41
|
+
## 2. Architecture Overview
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
45
|
+
│ cognitive-core │
|
|
46
|
+
│ │
|
|
47
|
+
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
|
48
|
+
│ │ Playbook │ │ Experience │ │ Knowledge Bank │ │
|
|
49
|
+
│ │ Library │ │ Memory │ │ (semantic) │ │
|
|
50
|
+
│ └──────┬──────┘ └──────┬───────┘ └───────┬───────────┘ │
|
|
51
|
+
│ │ │ │ │
|
|
52
|
+
│ │ ┌──────────┴──────────┐ │ │
|
|
53
|
+
│ └─────┤ Learning Pipeline ├────────┘ │
|
|
54
|
+
│ └─────────┬───────────┘ │
|
|
55
|
+
│ │ │
|
|
56
|
+
│ ┌─────────┴───────────┐ │
|
|
57
|
+
│ │ EntireTrajectory │ ← adapter (in cognitive- │
|
|
58
|
+
│ │ Source │ core, implements │
|
|
59
|
+
│ │ │ TrajectorySource) │
|
|
60
|
+
│ └─────────┬───────────┘ │
|
|
61
|
+
│ │ │
|
|
62
|
+
└─────────────────────────┼────────────────────────────────────────┘
|
|
63
|
+
│ uses
|
|
64
|
+
┌─────────────────────────▼────────────────────────────────────────┐
|
|
65
|
+
│ session-bank (standalone package) │
|
|
66
|
+
│ │
|
|
67
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
|
|
68
|
+
│ │ EntireGit │ │ Transcript │ │ SessionBank │ │
|
|
69
|
+
│ │ Reader │ │ Parser │ │ (facade: discover, │ │
|
|
70
|
+
│ │ (git plumb) │ │ (JSONL→types)│ │ query, get, count) │ │
|
|
71
|
+
│ └──────┬───────┘ └──────┬───────┘ └──────────┬────────────┘ │
|
|
72
|
+
│ │ │ │ │
|
|
73
|
+
│ └────────┬────────┘ │ │
|
|
74
|
+
│ │ reads │ exposes │
|
|
75
|
+
│ ▼ ▼ │
|
|
76
|
+
│ git show / ls-tree SessionRecord[] │
|
|
77
|
+
└──────────────────┬───────────────────────────────────────────────┘
|
|
78
|
+
│
|
|
79
|
+
reads from
|
|
80
|
+
│
|
|
81
|
+
┌───────────▼─────────────┐
|
|
82
|
+
│ entire/checkpoints/v1 │ (orphan branch)
|
|
83
|
+
│ │
|
|
84
|
+
│ <id[:2]>/<id[2:]>/ │ checkpoint-sharded
|
|
85
|
+
│ ├── metadata.json │ root summary
|
|
86
|
+
│ ├── 0/ │ session subdirectory
|
|
87
|
+
│ │ ├── metadata.json │ committed metadata
|
|
88
|
+
│ │ ├── full.jsonl │ raw transcript
|
|
89
|
+
│ │ ├── prompt.txt │ user prompts
|
|
90
|
+
│ │ └── context.md │ generated context
|
|
91
|
+
│ └── tasks/ │ subagent checkpoints
|
|
92
|
+
└─────────────────────────┘
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Data Flow
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
1. Developer uses Claude Code (Entire hooks installed)
|
|
99
|
+
│
|
|
100
|
+
▼
|
|
101
|
+
2. Entire hooks fire on session events → capture to shadow branch
|
|
102
|
+
│
|
|
103
|
+
▼
|
|
104
|
+
3. Developer commits → post-commit hook condenses to entire/checkpoints/v1
|
|
105
|
+
│
|
|
106
|
+
▼
|
|
107
|
+
4. session-bank: SessionBank.discover() reads orphan branch via git plumbing
|
|
108
|
+
│
|
|
109
|
+
▼
|
|
110
|
+
5. session-bank: Parser converts JSONL → SessionRecord (with metadata, events, summary)
|
|
111
|
+
│
|
|
112
|
+
▼
|
|
113
|
+
6. cognitive-core: EntireTrajectorySource.load() calls SessionBank, synthesizes Trajectories
|
|
114
|
+
│
|
|
115
|
+
▼
|
|
116
|
+
7. cognitive-core: LearningPipeline.processTrajectory() → playbooks, experiences, knowledge
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 3. Entire's Real Storage Format
|
|
120
|
+
|
|
121
|
+
Based on analysis of [`entireio/cli`](https://github.com/entireio/cli) source code.
|
|
122
|
+
|
|
123
|
+
### Branch Structure
|
|
124
|
+
|
|
125
|
+
Entire uses the `entire/checkpoints/v1` orphan branch. Checkpoints are **sharded by the first 2 hex chars** of the checkpoint ID (256 possible buckets):
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
entire/checkpoints/v1 branch tree:
|
|
129
|
+
<checkpointId[:2]>/<checkpointId[2:]>/
|
|
130
|
+
├── metadata.json # CheckpointSummary (root-level, aggregated)
|
|
131
|
+
├── 0/ # First session subdirectory
|
|
132
|
+
│ ├── metadata.json # CommittedMetadata for this session
|
|
133
|
+
│ ├── full.jsonl # Complete transcript (Claude native JSONL)
|
|
134
|
+
│ ├── prompt.txt # Concatenated user prompts
|
|
135
|
+
│ ├── context.md # Generated context document
|
|
136
|
+
│ └── content_hash.txt # Deduplication hash
|
|
137
|
+
├── 1/ # Second session (if concurrent)
|
|
138
|
+
│ └── ...
|
|
139
|
+
└── tasks/ # Task/subagent checkpoints (optional)
|
|
140
|
+
└── <tool-use-id>/
|
|
141
|
+
├── checkpoint.json # Task checkpoint metadata
|
|
142
|
+
├── agent-<id>.jsonl # Subagent transcript
|
|
143
|
+
└── checkpoints/
|
|
144
|
+
└── NNN-<id>.json # Incremental checkpoints
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### ID Formats
|
|
148
|
+
|
|
149
|
+
- **Checkpoint ID**: 12 lowercase hex chars (e.g. `a3b2c4d5e6f7`), generated from 6 random bytes
|
|
150
|
+
- **Session ID**: `YYYY-MM-DD-<UUID>` (e.g. `2026-01-08-abc123de-f456-7890-abcd-ef1234567890`)
|
|
151
|
+
|
|
152
|
+
### Transcript Format (full.jsonl)
|
|
153
|
+
|
|
154
|
+
Each line is Claude's native JSONL format:
|
|
155
|
+
|
|
156
|
+
```jsonl
|
|
157
|
+
{"type":"user","uuid":"abc123","message":{"content":"Fix the bug in auth.ts"}}
|
|
158
|
+
{"type":"assistant","uuid":"def456","message":{"content":[{"type":"text","text":"I'll fix that..."},{"type":"tool_use","name":"Edit","input":{"file_path":"/src/auth.ts","old_string":"...","new_string":"..."}}]}}
|
|
159
|
+
{"type":"user","uuid":"ghi789","message":{"content":[{"type":"tool_result","tool_use_id":"...","content":"File edited successfully"}]}}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The `message.content` is either:
|
|
163
|
+
- A string (user text messages)
|
|
164
|
+
- An array of `ContentBlock` objects (assistant responses with text + tool_use, or user messages with tool_results)
|
|
165
|
+
|
|
166
|
+
Transcripts exceeding 50MB are chunked: `full.jsonl.001`, `full.jsonl.002`, etc.
|
|
167
|
+
|
|
168
|
+
### Session Metadata (per-session metadata.json)
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
// Entire's CommittedMetadata (Go struct → TypeScript equivalent)
|
|
172
|
+
interface EntireCommittedMetadata {
|
|
173
|
+
cli_version: string;
|
|
174
|
+
checkpoint_id: string; // 12-hex-char
|
|
175
|
+
session_id: string; // YYYY-MM-DD-<UUID>
|
|
176
|
+
strategy: 'manual-commit' | 'auto-commit';
|
|
177
|
+
created_at: string; // RFC3339
|
|
178
|
+
branch: string; // source code branch
|
|
179
|
+
files_touched: string[]; // files modified during session
|
|
180
|
+
agent: string; // "Claude Code", "Gemini CLI", etc.
|
|
181
|
+
is_task: boolean;
|
|
182
|
+
tool_use_id?: string; // for task checkpoints
|
|
183
|
+
checkpoint_transcript_start: number; // line offset into JSONL
|
|
184
|
+
token_usage: EntireTokenUsage;
|
|
185
|
+
summary?: EntireSummary; // AI-generated (optional)
|
|
186
|
+
initial_attribution?: EntireAttribution;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
interface EntireTokenUsage {
|
|
190
|
+
input_tokens: number;
|
|
191
|
+
cache_creation_tokens: number;
|
|
192
|
+
cache_read_tokens: number;
|
|
193
|
+
output_tokens: number;
|
|
194
|
+
api_call_count: number;
|
|
195
|
+
subagent_usage?: EntireTokenUsage[];
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface EntireSummary {
|
|
199
|
+
intent: string; // What the user was trying to do
|
|
200
|
+
outcome: string; // What happened
|
|
201
|
+
learnings: {
|
|
202
|
+
repo_patterns: string[]; // Repository-specific patterns
|
|
203
|
+
code_findings: string[]; // Code-specific findings
|
|
204
|
+
workflow_practices: string[]; // Workflow learnings
|
|
205
|
+
};
|
|
206
|
+
friction_points: string[]; // Where things went wrong
|
|
207
|
+
open_items: string[]; // Unfinished work
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
interface EntireAttribution {
|
|
211
|
+
agent_lines_added: number;
|
|
212
|
+
human_additions: number;
|
|
213
|
+
human_modifications: number;
|
|
214
|
+
human_removals: number;
|
|
215
|
+
total_committed_lines: number;
|
|
216
|
+
agent_contribution: number; // 0-1 percentage
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Root Checkpoint Summary (root metadata.json)
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
interface EntireCheckpointSummary {
|
|
224
|
+
sessions: Array<{
|
|
225
|
+
metadata: string; // path: "0/metadata.json"
|
|
226
|
+
transcript: string; // path: "0/full.jsonl"
|
|
227
|
+
context: string; // path: "0/context.md"
|
|
228
|
+
content_hash: string; // path: "0/content_hash.txt"
|
|
229
|
+
prompt: string; // path: "0/prompt.txt"
|
|
230
|
+
}>;
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Commit Trailers
|
|
235
|
+
|
|
236
|
+
Entire writes trailers into user git commits for bidirectional linking:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
Entire-Checkpoint: a3b2c4d5e6f7
|
|
240
|
+
Entire-Session: 2026-01-08-abc123de-f456-7890-abcd-ef1234567890
|
|
241
|
+
Entire-Strategy: manual-commit
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 4. Standalone Package: Type Definitions
|
|
245
|
+
|
|
246
|
+
These types are defined by the session-bank package — they represent parsed, normalized Entire data. They are deliberately **not** cognitive-core types.
|
|
247
|
+
|
|
248
|
+
### SessionRecord — The Core Type
|
|
249
|
+
|
|
250
|
+
```typescript
|
|
251
|
+
/**
|
|
252
|
+
* A parsed Entire checkpoint session — the primary data type exposed
|
|
253
|
+
* by the session bank. Contains the full transcript, metadata, and
|
|
254
|
+
* Entire's AI-generated summary.
|
|
255
|
+
*
|
|
256
|
+
* This is the intermediate representation between Entire's raw files
|
|
257
|
+
* on the orphan branch and any downstream consumer (cognitive-core,
|
|
258
|
+
* analytics, UI, etc.).
|
|
259
|
+
*/
|
|
260
|
+
export interface SessionRecord {
|
|
261
|
+
/** Entire session ID (YYYY-MM-DD-<UUID>) */
|
|
262
|
+
sessionId: string;
|
|
263
|
+
|
|
264
|
+
/** Entire checkpoint ID (12-hex-char) */
|
|
265
|
+
checkpointId: string;
|
|
266
|
+
|
|
267
|
+
/** Parsed metadata from per-session metadata.json */
|
|
268
|
+
metadata: SessionMetadata;
|
|
269
|
+
|
|
270
|
+
/** Parsed transcript events from full.jsonl */
|
|
271
|
+
transcript: TranscriptMessage[];
|
|
272
|
+
|
|
273
|
+
/** AI-generated summary (from Entire's summarize feature, if enabled) */
|
|
274
|
+
summary?: SessionSummary;
|
|
275
|
+
|
|
276
|
+
/** Token usage statistics */
|
|
277
|
+
tokenUsage: TokenUsage;
|
|
278
|
+
|
|
279
|
+
/** Line-level code attribution */
|
|
280
|
+
attribution?: Attribution;
|
|
281
|
+
|
|
282
|
+
/** Provenance: where this data came from on the orphan branch */
|
|
283
|
+
source: SessionSource;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export interface SessionMetadata {
|
|
287
|
+
/** Entire CLI version that captured this */
|
|
288
|
+
cliVersion: string;
|
|
289
|
+
/** Checkpoint strategy used */
|
|
290
|
+
strategy: 'manual-commit' | 'auto-commit';
|
|
291
|
+
/** When the checkpoint was created */
|
|
292
|
+
createdAt: Date;
|
|
293
|
+
/** Source code branch the session was on */
|
|
294
|
+
branch: string;
|
|
295
|
+
/** Agent that ran the session */
|
|
296
|
+
agent: string;
|
|
297
|
+
/** Working directory (if available from context) */
|
|
298
|
+
cwd?: string;
|
|
299
|
+
/** Files modified during the session */
|
|
300
|
+
filesTouched: string[];
|
|
301
|
+
/** Whether this is a task (subagent) checkpoint */
|
|
302
|
+
isTask: boolean;
|
|
303
|
+
/** Tool use ID (for task checkpoints) */
|
|
304
|
+
toolUseId?: string;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
export interface TranscriptMessage {
|
|
308
|
+
/** Message role */
|
|
309
|
+
role: 'user' | 'assistant';
|
|
310
|
+
/** Unique message identifier */
|
|
311
|
+
uuid: string;
|
|
312
|
+
/** Content blocks */
|
|
313
|
+
content: ContentBlock[];
|
|
314
|
+
/** Computed: index in original JSONL */
|
|
315
|
+
lineIndex: number;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
export type ContentBlock =
|
|
319
|
+
| TextBlock
|
|
320
|
+
| ToolUseBlock
|
|
321
|
+
| ToolResultBlock;
|
|
322
|
+
|
|
323
|
+
export interface TextBlock {
|
|
324
|
+
type: 'text';
|
|
325
|
+
text: string;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export interface ToolUseBlock {
|
|
329
|
+
type: 'tool_use';
|
|
330
|
+
id: string;
|
|
331
|
+
name: string;
|
|
332
|
+
input: Record<string, unknown>;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
export interface ToolResultBlock {
|
|
336
|
+
type: 'tool_result';
|
|
337
|
+
toolUseId: string;
|
|
338
|
+
content: string;
|
|
339
|
+
isError?: boolean;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
export interface SessionSummary {
|
|
343
|
+
/** What the user was trying to accomplish */
|
|
344
|
+
intent: string;
|
|
345
|
+
/** What actually happened */
|
|
346
|
+
outcome: string;
|
|
347
|
+
/** Learnings from the session */
|
|
348
|
+
learnings: {
|
|
349
|
+
repoPatterns: string[];
|
|
350
|
+
codeFindings: string[];
|
|
351
|
+
workflowPractices: string[];
|
|
352
|
+
};
|
|
353
|
+
/** Where things went wrong or caused friction */
|
|
354
|
+
frictionPoints: string[];
|
|
355
|
+
/** Unfinished work or follow-ups */
|
|
356
|
+
openItems: string[];
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
export interface TokenUsage {
|
|
360
|
+
inputTokens: number;
|
|
361
|
+
cacheCreationTokens: number;
|
|
362
|
+
cacheReadTokens: number;
|
|
363
|
+
outputTokens: number;
|
|
364
|
+
apiCallCount: number;
|
|
365
|
+
subagentUsage?: TokenUsage[];
|
|
366
|
+
/** Computed: total tokens across all categories */
|
|
367
|
+
total: number;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
export interface Attribution {
|
|
371
|
+
agentLinesAdded: number;
|
|
372
|
+
humanAdditions: number;
|
|
373
|
+
humanModifications: number;
|
|
374
|
+
humanRemovals: number;
|
|
375
|
+
totalCommittedLines: number;
|
|
376
|
+
/** 0-1 percentage of agent contribution */
|
|
377
|
+
agentContribution: number;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
export interface SessionSource {
|
|
381
|
+
/** Orphan branch name */
|
|
382
|
+
branch: string;
|
|
383
|
+
/** Path on branch: "<id[:2]>/<id[2:]>" */
|
|
384
|
+
checkpointPath: string;
|
|
385
|
+
/** Session subdirectory index: "0", "1", etc. */
|
|
386
|
+
sessionIndex: string;
|
|
387
|
+
/** Git commit SHA on the orphan branch containing this data */
|
|
388
|
+
commitSha?: string;
|
|
389
|
+
/** Git commit SHA on the source branch linked via Entire-Checkpoint trailer */
|
|
390
|
+
linkedCommitSha?: string;
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### SessionQuery — Query Interface
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
/**
|
|
398
|
+
* Query options for filtering sessions in the bank.
|
|
399
|
+
*/
|
|
400
|
+
export interface SessionQuery {
|
|
401
|
+
/** Only checkpoints created after this date */
|
|
402
|
+
since?: Date;
|
|
403
|
+
/** Only checkpoints created before this date */
|
|
404
|
+
before?: Date;
|
|
405
|
+
/** Filter by source code branch (exact match) */
|
|
406
|
+
branch?: string;
|
|
407
|
+
/** Filter by agent type (e.g. "Claude Code") */
|
|
408
|
+
agent?: string;
|
|
409
|
+
/** Full-text search across user messages */
|
|
410
|
+
search?: string;
|
|
411
|
+
/** Filter by checkpoint strategy */
|
|
412
|
+
strategy?: 'manual-commit' | 'auto-commit';
|
|
413
|
+
/** Only include sessions with/without summaries */
|
|
414
|
+
hasSummary?: boolean;
|
|
415
|
+
/** Maximum number of sessions to return */
|
|
416
|
+
limit?: number;
|
|
417
|
+
/** Sort order (default: newest first) */
|
|
418
|
+
sort?: 'newest' | 'oldest';
|
|
419
|
+
/** Only sessions not yet marked as processed */
|
|
420
|
+
unprocessedOnly?: boolean;
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
export interface SessionQueryResult {
|
|
424
|
+
sessions: SessionRecord[];
|
|
425
|
+
total: number;
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
### CheckpointRef — Lightweight Reference
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
/**
|
|
433
|
+
* Lightweight reference to a checkpoint, for enumeration without
|
|
434
|
+
* loading full transcripts.
|
|
435
|
+
*/
|
|
436
|
+
export interface CheckpointRef {
|
|
437
|
+
checkpointId: string;
|
|
438
|
+
sessionIds: string[];
|
|
439
|
+
path: string;
|
|
440
|
+
/** Available without loading full metadata */
|
|
441
|
+
sessionCount: number;
|
|
442
|
+
}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## 5. Standalone Package: Core Components
|
|
446
|
+
|
|
447
|
+
### 5.1 EntireGitReader
|
|
448
|
+
|
|
449
|
+
Low-level git plumbing for reading from the orphan branch without checkout.
|
|
450
|
+
|
|
451
|
+
```typescript
|
|
452
|
+
export class EntireGitReader {
|
|
453
|
+
constructor(options: { repoPath: string; branch?: string });
|
|
454
|
+
|
|
455
|
+
/** Check if the orphan branch exists in this repo */
|
|
456
|
+
async branchExists(): Promise<boolean>;
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* List all checkpoint directories (top-level shard + inner dirs).
|
|
460
|
+
* Returns paths like ["a3/b2c4d5e6f7", "f1/0a9b8c7d6e5f", ...]
|
|
461
|
+
*/
|
|
462
|
+
async listCheckpoints(): Promise<string[]>;
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* List session subdirectories within a checkpoint.
|
|
466
|
+
* Returns ["0", "1", ...] (numeric session indices)
|
|
467
|
+
*/
|
|
468
|
+
async listSessions(checkpointPath: string): Promise<string[]>;
|
|
469
|
+
|
|
470
|
+
/** Read a single file from the orphan branch */
|
|
471
|
+
async readFile(path: string): Promise<string>;
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Read multiple files in batch (minimizes git process spawns).
|
|
475
|
+
* Returns Map<path, content>. Missing files are omitted.
|
|
476
|
+
*/
|
|
477
|
+
async readFiles(paths: string[]): Promise<Map<string, string>>;
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Read a file, returning null if it doesn't exist (no throw).
|
|
481
|
+
*/
|
|
482
|
+
async readFileOrNull(path: string): Promise<string | null>;
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Get the HEAD commit SHA of the orphan branch.
|
|
486
|
+
* Useful for cache invalidation.
|
|
487
|
+
*/
|
|
488
|
+
async getBranchHead(): Promise<string | null>;
|
|
489
|
+
}
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
**Implementation:**
|
|
493
|
+
|
|
494
|
+
```bash
|
|
495
|
+
# Branch existence
|
|
496
|
+
git rev-parse --verify entire/checkpoints/v1
|
|
497
|
+
|
|
498
|
+
# List shard directories (top-level: "a3", "f1", etc.)
|
|
499
|
+
git ls-tree --name-only entire/checkpoints/v1
|
|
500
|
+
|
|
501
|
+
# List checkpoints within a shard
|
|
502
|
+
git ls-tree --name-only entire/checkpoints/v1 a3/
|
|
503
|
+
|
|
504
|
+
# List session subdirs within a checkpoint
|
|
505
|
+
git ls-tree --name-only entire/checkpoints/v1 a3/b2c4d5e6f7/
|
|
506
|
+
|
|
507
|
+
# Read a file
|
|
508
|
+
git show entire/checkpoints/v1:a3/b2c4d5e6f7/0/metadata.json
|
|
509
|
+
|
|
510
|
+
# Batch read (single git process via cat-file --batch)
|
|
511
|
+
echo "entire/checkpoints/v1:a3/b2c4d5e6f7/0/metadata.json" | git cat-file --batch
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
### 5.2 EntireTranscriptParser
|
|
515
|
+
|
|
516
|
+
Parses Entire's raw files into `SessionRecord` objects.
|
|
517
|
+
|
|
518
|
+
```typescript
|
|
519
|
+
export class EntireTranscriptParser {
|
|
520
|
+
/**
|
|
521
|
+
* Parse a full session from its component files.
|
|
522
|
+
*/
|
|
523
|
+
parseSession(
|
|
524
|
+
metadataJson: string,
|
|
525
|
+
transcriptJsonl: string,
|
|
526
|
+
checkpointPath: string,
|
|
527
|
+
sessionIndex: string
|
|
528
|
+
): SessionRecord;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* Parse just the per-session metadata (fast path for listing).
|
|
532
|
+
*/
|
|
533
|
+
parseMetadata(metadataJson: string): SessionMetadata & {
|
|
534
|
+
sessionId: string;
|
|
535
|
+
checkpointId: string;
|
|
536
|
+
summary?: SessionSummary;
|
|
537
|
+
tokenUsage: TokenUsage;
|
|
538
|
+
attribution?: Attribution;
|
|
539
|
+
};
|
|
540
|
+
|
|
541
|
+
/**
|
|
542
|
+
* Parse a JSONL transcript into structured messages.
|
|
543
|
+
* Handles Claude's native JSONL format:
|
|
544
|
+
* {"type":"user"|"assistant", "uuid":"...", "message":{...}}
|
|
545
|
+
*
|
|
546
|
+
* Tolerant of malformed lines (skips with warning).
|
|
547
|
+
*/
|
|
548
|
+
parseTranscript(jsonlContent: string): TranscriptMessage[];
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Parse chunked transcripts (full.jsonl.001, .002, etc.)
|
|
552
|
+
* by concatenating chunks before parsing.
|
|
553
|
+
*/
|
|
554
|
+
parseChunkedTranscript(chunks: string[]): TranscriptMessage[];
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* Parse the root checkpoint summary to discover session subdirectories.
|
|
558
|
+
*/
|
|
559
|
+
parseCheckpointSummary(metadataJson: string): CheckpointRef;
|
|
560
|
+
}
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
**JSONL parsing details:**
|
|
564
|
+
|
|
565
|
+
Each line in Entire's transcript follows Claude's format:
|
|
566
|
+
|
|
567
|
+
```typescript
|
|
568
|
+
// Raw JSONL line shape
|
|
569
|
+
interface RawTranscriptLine {
|
|
570
|
+
type: 'user' | 'assistant';
|
|
571
|
+
uuid: string;
|
|
572
|
+
message: {
|
|
573
|
+
content: string | RawContentBlock[];
|
|
574
|
+
};
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
interface RawContentBlock {
|
|
578
|
+
type: 'text' | 'tool_use' | 'tool_result';
|
|
579
|
+
text?: string; // for type === 'text'
|
|
580
|
+
name?: string; // for type === 'tool_use'
|
|
581
|
+
input?: Record<string, unknown>; // for type === 'tool_use'
|
|
582
|
+
tool_use_id?: string; // for type === 'tool_result'
|
|
583
|
+
content?: string; // for type === 'tool_result'
|
|
584
|
+
}
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
The parser normalizes this into `TranscriptMessage` with typed `ContentBlock` discriminated union. String content is wrapped into `[{ type: 'text', text: content }]` for consistency.
|
|
588
|
+
|
|
589
|
+
### 5.3 SessionBank — Main Facade
|
|
590
|
+
|
|
591
|
+
```typescript
|
|
592
|
+
export class SessionBank {
|
|
593
|
+
constructor(options?: SessionBankOptions);
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Initialize: verify orphan branch exists, optionally build index.
|
|
597
|
+
* @throws if repoPath is not a git repository
|
|
598
|
+
*/
|
|
599
|
+
async init(): Promise<void>;
|
|
600
|
+
|
|
601
|
+
/** Whether the Entire orphan branch exists in this repo */
|
|
602
|
+
isAvailable(): boolean;
|
|
603
|
+
|
|
604
|
+
// ── Discovery ──────────────────────────────────────────────
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* List all checkpoint references without loading transcripts.
|
|
608
|
+
* Fast: only reads directory listings and root metadata.json files.
|
|
609
|
+
*/
|
|
610
|
+
async listCheckpoints(): Promise<CheckpointRef[]>;
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Discover all sessions across all checkpoints.
|
|
614
|
+
* Loads metadata but NOT transcripts (lazy loading).
|
|
615
|
+
*/
|
|
616
|
+
async discover(): Promise<SessionRecord[]>;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* Count sessions matching a query.
|
|
620
|
+
*/
|
|
621
|
+
async count(query?: SessionQuery): Promise<number>;
|
|
622
|
+
|
|
623
|
+
// ── Querying ───────────────────────────────────────────────
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Query sessions with filtering and sorting.
|
|
627
|
+
* Loads full transcripts only for matching sessions.
|
|
628
|
+
*/
|
|
629
|
+
async query(query?: SessionQuery): Promise<SessionQueryResult>;
|
|
630
|
+
|
|
631
|
+
/**
|
|
632
|
+
* Get a single session by session ID.
|
|
633
|
+
* Searches across all checkpoints.
|
|
634
|
+
*/
|
|
635
|
+
async getBySessionId(sessionId: string): Promise<SessionRecord | undefined>;
|
|
636
|
+
|
|
637
|
+
/**
|
|
638
|
+
* Get all sessions within a specific checkpoint.
|
|
639
|
+
*/
|
|
640
|
+
async getByCheckpointId(checkpointId: string): Promise<SessionRecord[]>;
|
|
641
|
+
|
|
642
|
+
/**
|
|
643
|
+
* Find the session(s) linked to a specific git commit.
|
|
644
|
+
* Uses git log to find Entire-Checkpoint trailers.
|
|
645
|
+
*/
|
|
646
|
+
async getByCommit(commitSha: string): Promise<SessionRecord[]>;
|
|
647
|
+
|
|
648
|
+
// ── Processing Tracking ────────────────────────────────────
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Mark a session as processed by an external consumer.
|
|
652
|
+
* Tracked in a local state file to avoid re-processing.
|
|
653
|
+
*/
|
|
654
|
+
async markProcessed(
|
|
655
|
+
sessionId: string,
|
|
656
|
+
metadata?: Record<string, unknown>
|
|
657
|
+
): Promise<void>;
|
|
658
|
+
|
|
659
|
+
/** Check if a session has been marked as processed */
|
|
660
|
+
isProcessed(sessionId: string): boolean;
|
|
661
|
+
|
|
662
|
+
/** Get all processing log entries */
|
|
663
|
+
getProcessingLog(): ProcessingLogEntry[];
|
|
664
|
+
|
|
665
|
+
// ── Cache Management ───────────────────────────────────────
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Invalidate cached data (forces re-read from git on next query).
|
|
669
|
+
* Called automatically when orphan branch HEAD changes.
|
|
670
|
+
*/
|
|
671
|
+
invalidateCache(): void;
|
|
672
|
+
|
|
673
|
+
// ── Lifecycle ──────────────────────────────────────────────
|
|
674
|
+
|
|
675
|
+
async close(): Promise<void>;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
export interface SessionBankOptions {
|
|
679
|
+
/** Git repository path (default: process.cwd()) */
|
|
680
|
+
repoPath?: string;
|
|
681
|
+
/** Orphan branch name (default: 'entire/checkpoints/v1') */
|
|
682
|
+
branch?: string;
|
|
683
|
+
/** Directory to store processing state (default: '.atlas/session-bank') */
|
|
684
|
+
stateDir?: string;
|
|
685
|
+
/** Enable in-memory caching of parsed sessions */
|
|
686
|
+
cache?: boolean;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
export interface ProcessingLogEntry {
|
|
690
|
+
sessionId: string;
|
|
691
|
+
processedAt: Date;
|
|
692
|
+
metadata?: Record<string, unknown>;
|
|
693
|
+
}
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
### Lazy Loading Strategy
|
|
697
|
+
|
|
698
|
+
The session bank uses a two-tier loading approach:
|
|
699
|
+
|
|
700
|
+
1. **Metadata-only (fast)**: `listCheckpoints()` and `discover()` read only `metadata.json` files. This is fast because it avoids parsing potentially large JSONL transcripts.
|
|
701
|
+
|
|
702
|
+
2. **Full load (on demand)**: `query()`, `getBySessionId()`, `getByCheckpointId()` load the full `full.jsonl` transcript. The transcript is parsed lazily — only when a query actually matches.
|
|
703
|
+
|
|
704
|
+
This matters because JSONL transcripts can be large (Entire chunks at 50MB).
|
|
705
|
+
|
|
706
|
+
## 6. cognitive-core Adapter: EntireTrajectorySource
|
|
707
|
+
|
|
708
|
+
This lives in cognitive-core, not in the standalone package. It adapts `SessionRecord` into `Trajectory`.
|
|
709
|
+
|
|
710
|
+
```typescript
|
|
711
|
+
// src/learning/trajectory-sources/entire.ts
|
|
712
|
+
|
|
713
|
+
import type { SessionRecord, SessionBank } from '@entire-sessions/reader';
|
|
714
|
+
import type {
|
|
715
|
+
TrajectorySource,
|
|
716
|
+
TrajectoryWithAnalysis,
|
|
717
|
+
TrajectoryLoadOptions,
|
|
718
|
+
} from '../../types/trajectory-source.js';
|
|
719
|
+
import type { Trajectory, Step, Task, Outcome } from '../../types/index.js';
|
|
720
|
+
|
|
721
|
+
export interface EntireSynthesisOptions {
|
|
722
|
+
/** Domain to assign (default: inferred from branch/files) */
|
|
723
|
+
domain?: string;
|
|
724
|
+
/** How to determine success/failure (default: 'summary') */
|
|
725
|
+
outcomeStrategy?: 'summary' | 'heuristic' | 'llm';
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
export class EntireTrajectorySource implements TrajectorySource {
|
|
729
|
+
readonly name = 'entire';
|
|
730
|
+
|
|
731
|
+
constructor(
|
|
732
|
+
private sessionBank: SessionBank,
|
|
733
|
+
private options?: EntireSynthesisOptions
|
|
734
|
+
) {}
|
|
735
|
+
|
|
736
|
+
async load(options?: TrajectoryLoadOptions): Promise<TrajectoryWithAnalysis[]> {
|
|
737
|
+
const result = await this.sessionBank.query({
|
|
738
|
+
since: options?.since,
|
|
739
|
+
limit: options?.limit,
|
|
740
|
+
unprocessedOnly: false,
|
|
741
|
+
});
|
|
742
|
+
|
|
743
|
+
return result.sessions
|
|
744
|
+
.map(session => {
|
|
745
|
+
try {
|
|
746
|
+
return {
|
|
747
|
+
trajectory: this.synthesize(session),
|
|
748
|
+
analysis: undefined, // consumer computes this
|
|
749
|
+
};
|
|
750
|
+
} catch {
|
|
751
|
+
return null;
|
|
752
|
+
}
|
|
753
|
+
})
|
|
754
|
+
.filter((t): t is TrajectoryWithAnalysis => t !== null)
|
|
755
|
+
.filter(t => {
|
|
756
|
+
if (options?.domain && t.trajectory.task.domain !== options.domain) return false;
|
|
757
|
+
if (options?.successOnly && !t.trajectory.outcome.success) return false;
|
|
758
|
+
return true;
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
async count(options?: TrajectoryLoadOptions): Promise<number> {
|
|
763
|
+
return this.sessionBank.count({
|
|
764
|
+
since: options?.since,
|
|
765
|
+
limit: options?.limit,
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
/**
|
|
770
|
+
* Convert an Entire SessionRecord into a cognitive-core Trajectory.
|
|
771
|
+
*/
|
|
772
|
+
synthesize(session: SessionRecord): Trajectory {
|
|
773
|
+
return {
|
|
774
|
+
id: `entire-${session.checkpointId}-${session.sessionId}`,
|
|
775
|
+
task: this.extractTask(session),
|
|
776
|
+
steps: this.extractSteps(session),
|
|
777
|
+
outcome: this.inferOutcome(session),
|
|
778
|
+
agentId: session.metadata.agent,
|
|
779
|
+
timestamp: session.metadata.createdAt,
|
|
780
|
+
llmCalls: session.tokenUsage.apiCallCount,
|
|
781
|
+
totalTokens: session.tokenUsage.total,
|
|
782
|
+
wallTimeSeconds: 0, // not available from metadata alone
|
|
783
|
+
metadata: {
|
|
784
|
+
source: 'entire',
|
|
785
|
+
checkpointId: session.checkpointId,
|
|
786
|
+
sessionId: session.sessionId,
|
|
787
|
+
branch: session.metadata.branch,
|
|
788
|
+
filesTouched: session.metadata.filesTouched,
|
|
789
|
+
strategy: session.metadata.strategy,
|
|
790
|
+
attribution: session.attribution,
|
|
791
|
+
},
|
|
792
|
+
};
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
// ── Private helpers ──────────────────────────────────────
|
|
796
|
+
|
|
797
|
+
private extractTask(session: SessionRecord): Task {
|
|
798
|
+
// Prefer Entire's summary intent over raw first message
|
|
799
|
+
const description = session.summary?.intent
|
|
800
|
+
?? this.getFirstUserMessage(session)
|
|
801
|
+
?? 'Unknown task';
|
|
802
|
+
|
|
803
|
+
return {
|
|
804
|
+
id: `task-${session.sessionId}`,
|
|
805
|
+
domain: this.options?.domain ?? this.inferDomain(session),
|
|
806
|
+
description,
|
|
807
|
+
context: {
|
|
808
|
+
filesTouched: session.metadata.filesTouched,
|
|
809
|
+
branch: session.metadata.branch,
|
|
810
|
+
},
|
|
811
|
+
metadata: {},
|
|
812
|
+
createdAt: session.metadata.createdAt,
|
|
813
|
+
};
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
private extractSteps(session: SessionRecord): Step[] {
|
|
817
|
+
const steps: Step[] = [];
|
|
818
|
+
|
|
819
|
+
for (const msg of session.transcript) {
|
|
820
|
+
if (msg.role !== 'assistant') continue;
|
|
821
|
+
|
|
822
|
+
// Extract text blocks as thought
|
|
823
|
+
const textBlocks = msg.content.filter(b => b.type === 'text');
|
|
824
|
+
const thought = textBlocks.map(b => (b as { text: string }).text).join('\n');
|
|
825
|
+
|
|
826
|
+
// Extract tool_use blocks as actions
|
|
827
|
+
const toolBlocks = msg.content.filter(b => b.type === 'tool_use');
|
|
828
|
+
|
|
829
|
+
if (toolBlocks.length === 0) {
|
|
830
|
+
// Pure reasoning step (no tool calls)
|
|
831
|
+
if (thought) {
|
|
832
|
+
steps.push({
|
|
833
|
+
thought,
|
|
834
|
+
action: '',
|
|
835
|
+
observation: '',
|
|
836
|
+
timestamp: session.metadata.createdAt, // approximation
|
|
837
|
+
metadata: { messageUuid: msg.uuid },
|
|
838
|
+
});
|
|
839
|
+
}
|
|
840
|
+
} else {
|
|
841
|
+
// One step per tool call, sharing the thought
|
|
842
|
+
for (const tool of toolBlocks) {
|
|
843
|
+
const t = tool as { name: string; id: string; input: Record<string, unknown> };
|
|
844
|
+
const observation = this.findToolResult(session.transcript, t.id);
|
|
845
|
+
|
|
846
|
+
steps.push({
|
|
847
|
+
thought: steps.length === 0 || thought ? thought : undefined,
|
|
848
|
+
action: `${t.name}(${JSON.stringify(t.input)})`,
|
|
849
|
+
observation: observation ?? '',
|
|
850
|
+
timestamp: session.metadata.createdAt,
|
|
851
|
+
metadata: {
|
|
852
|
+
messageUuid: msg.uuid,
|
|
853
|
+
toolName: t.name,
|
|
854
|
+
toolUseId: t.id,
|
|
855
|
+
},
|
|
856
|
+
});
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
return steps;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
private inferOutcome(session: SessionRecord): Outcome {
|
|
865
|
+
const strategy = this.options?.outcomeStrategy ?? 'summary';
|
|
866
|
+
|
|
867
|
+
if (strategy === 'summary' && session.summary) {
|
|
868
|
+
// Use Entire's AI-generated outcome
|
|
869
|
+
const outcome = session.summary.outcome.toLowerCase();
|
|
870
|
+
const success = !outcome.includes('fail') &&
|
|
871
|
+
!outcome.includes('error') &&
|
|
872
|
+
!outcome.includes('unable') &&
|
|
873
|
+
!outcome.includes('could not');
|
|
874
|
+
return {
|
|
875
|
+
success,
|
|
876
|
+
partialScore: success ? 1.0 : 0.0,
|
|
877
|
+
verificationDetails: {
|
|
878
|
+
entireOutcome: session.summary.outcome,
|
|
879
|
+
frictionPoints: session.summary.frictionPoints,
|
|
880
|
+
openItems: session.summary.openItems,
|
|
881
|
+
},
|
|
882
|
+
};
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
// Heuristic fallback
|
|
886
|
+
const hasFiles = session.metadata.filesTouched.length > 0;
|
|
887
|
+
return {
|
|
888
|
+
success: hasFiles, // if files were touched, something was accomplished
|
|
889
|
+
partialScore: hasFiles ? 0.7 : 0.3,
|
|
890
|
+
verificationDetails: { strategy: 'heuristic' },
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
private inferDomain(session: SessionRecord): string {
|
|
895
|
+
const files = session.metadata.filesTouched;
|
|
896
|
+
if (files.some(f => f.match(/\.(test|spec)\.(ts|js|tsx|jsx)$/))) return 'testing';
|
|
897
|
+
if (files.some(f => f.match(/\.(ts|tsx)$/))) return 'typescript';
|
|
898
|
+
if (files.some(f => f.match(/\.(py)$/))) return 'python';
|
|
899
|
+
if (files.some(f => f.match(/\.(go)$/))) return 'go';
|
|
900
|
+
if (files.some(f => f.match(/\.(rs)$/))) return 'rust';
|
|
901
|
+
return 'code';
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
private getFirstUserMessage(session: SessionRecord): string | undefined {
|
|
905
|
+
const firstUser = session.transcript.find(m => m.role === 'user');
|
|
906
|
+
if (!firstUser) return undefined;
|
|
907
|
+
const textBlock = firstUser.content.find(b => b.type === 'text');
|
|
908
|
+
return textBlock ? (textBlock as { text: string }).text : undefined;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
private findToolResult(
|
|
912
|
+
messages: SessionRecord['transcript'],
|
|
913
|
+
toolUseId: string
|
|
914
|
+
): string | undefined {
|
|
915
|
+
for (const msg of messages) {
|
|
916
|
+
if (msg.role !== 'user') continue;
|
|
917
|
+
for (const block of msg.content) {
|
|
918
|
+
if (block.type === 'tool_result' && (block as { toolUseId: string }).toolUseId === toolUseId) {
|
|
919
|
+
return (block as { content: string }).content;
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
}
|
|
923
|
+
return undefined;
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
### Key Synthesis Decisions
|
|
929
|
+
|
|
930
|
+
| Decision | Approach | Rationale |
|
|
931
|
+
|----------|----------|-----------|
|
|
932
|
+
| Task description | Use `summary.intent` (prefer) or first user message | Entire's AI summary produces cleaner task descriptions than raw prompts |
|
|
933
|
+
| Outcome | Use `summary.outcome` keywords | Entire already runs outcome analysis; avoids duplicate LLM call |
|
|
934
|
+
| Domain | Infer from `filesTouched` extensions | Simple heuristic; can be overridden via options |
|
|
935
|
+
| Step grouping | One step per tool_use, shared thought | Matches ReAct format; preserves tool-level granularity |
|
|
936
|
+
| Token count | Use `tokenUsage.total` directly | Entire captures real API usage, no need to estimate |
|
|
937
|
+
| Trajectory ID | `entire-{checkpointId}-{sessionId}` | Globally unique, traceable back to source |
|
|
938
|
+
|
|
939
|
+
## 7. cognitive-core Integration
|
|
940
|
+
|
|
941
|
+
### Config Addition
|
|
942
|
+
|
|
943
|
+
```typescript
|
|
944
|
+
// Add to AtlasConfigSchema
|
|
945
|
+
const SessionBankConfigSchema = z.object({
|
|
946
|
+
/** Enable session bank integration */
|
|
947
|
+
enabled: z.boolean().default(false),
|
|
948
|
+
/** Orphan branch name */
|
|
949
|
+
branch: z.string().default('entire/checkpoints/v1'),
|
|
950
|
+
/** State directory (relative to storage.baseDir) */
|
|
951
|
+
stateDir: z.string().default('session-bank'),
|
|
952
|
+
/** Default outcome strategy for synthesis */
|
|
953
|
+
outcomeStrategy: z.enum(['summary', 'heuristic', 'llm']).default('summary'),
|
|
954
|
+
/** Auto-ingest unprocessed sessions on init */
|
|
955
|
+
autoIngest: z.boolean().default(false),
|
|
956
|
+
/** Maximum sessions per auto-ingest batch */
|
|
957
|
+
maxIngestBatch: z.number().default(20),
|
|
958
|
+
});
|
|
959
|
+
```
|
|
960
|
+
|
|
961
|
+
### Atlas Integration
|
|
962
|
+
|
|
963
|
+
```typescript
|
|
964
|
+
class Atlas {
|
|
965
|
+
// Existing...
|
|
966
|
+
|
|
967
|
+
getSessionBank(): SessionBank | null;
|
|
968
|
+
|
|
969
|
+
/**
|
|
970
|
+
* Ingest unprocessed Entire sessions into the learning pipeline.
|
|
971
|
+
* Each session is: parsed → synthesized to Trajectory → processTrajectory()
|
|
972
|
+
*/
|
|
973
|
+
async ingestEntireSessions(options?: {
|
|
974
|
+
limit?: number;
|
|
975
|
+
domain?: string;
|
|
976
|
+
outcomeStrategy?: 'summary' | 'heuristic' | 'llm';
|
|
977
|
+
}): Promise<IngestResult>;
|
|
978
|
+
}
|
|
979
|
+
```
|
|
980
|
+
|
|
981
|
+
### Ingestion Flow (inside Atlas)
|
|
982
|
+
|
|
983
|
+
```typescript
|
|
984
|
+
async ingestEntireSessions(options) {
|
|
985
|
+
const bank = this.getSessionBank();
|
|
986
|
+
if (!bank) throw new Error('Session bank not enabled');
|
|
987
|
+
|
|
988
|
+
const source = new EntireTrajectorySource(bank, {
|
|
989
|
+
domain: options?.domain,
|
|
990
|
+
outcomeStrategy: options?.outcomeStrategy,
|
|
991
|
+
});
|
|
992
|
+
|
|
993
|
+
const sessions = await bank.query({
|
|
994
|
+
unprocessedOnly: true,
|
|
995
|
+
limit: options?.limit ?? this.config.sessionBank.maxIngestBatch,
|
|
996
|
+
});
|
|
997
|
+
|
|
998
|
+
const results = [];
|
|
999
|
+
for (const session of sessions.sessions) {
|
|
1000
|
+
try {
|
|
1001
|
+
const trajectory = source.synthesize(session);
|
|
1002
|
+
const processResult = await this.processTrajectory(trajectory);
|
|
1003
|
+
await bank.markProcessed(session.sessionId, {
|
|
1004
|
+
trajectoryId: trajectory.id,
|
|
1005
|
+
});
|
|
1006
|
+
results.push({ sessionId: session.sessionId, trajectoryId: trajectory.id, success: true });
|
|
1007
|
+
} catch (error) {
|
|
1008
|
+
results.push({ sessionId: session.sessionId, success: false, error: String(error) });
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
return { discovered: sessions.total, ingested: results.filter(r => r.success).length, ... };
|
|
1013
|
+
}
|
|
1014
|
+
```
|
|
1015
|
+
|
|
1016
|
+
## 8. Package Structure
|
|
1017
|
+
|
|
1018
|
+
### Standalone Package
|
|
1019
|
+
|
|
1020
|
+
```
|
|
1021
|
+
session-bank/ # standalone npm package
|
|
1022
|
+
├── package.json # @entire-sessions/reader (or similar)
|
|
1023
|
+
├── tsconfig.json
|
|
1024
|
+
├── src/
|
|
1025
|
+
│ ├── index.ts # Barrel: SessionBank, types, parser
|
|
1026
|
+
│ ├── session-bank.ts # SessionBank class
|
|
1027
|
+
│ ├── git-reader.ts # EntireGitReader
|
|
1028
|
+
│ ├── parser.ts # EntireTranscriptParser
|
|
1029
|
+
│ └── types.ts # SessionRecord, SessionQuery, etc.
|
|
1030
|
+
└── tests/
|
|
1031
|
+
├── fixtures/ # Sample JSONL + metadata files
|
|
1032
|
+
│ ├── simple-session/
|
|
1033
|
+
│ │ ├── metadata.json
|
|
1034
|
+
│ │ └── full.jsonl
|
|
1035
|
+
│ └── multi-tool-session/
|
|
1036
|
+
│ ├── metadata.json
|
|
1037
|
+
│ └── full.jsonl
|
|
1038
|
+
├── parser.test.ts
|
|
1039
|
+
├── git-reader.test.ts
|
|
1040
|
+
└── session-bank.test.ts
|
|
1041
|
+
```
|
|
1042
|
+
|
|
1043
|
+
### cognitive-core Additions
|
|
1044
|
+
|
|
1045
|
+
```
|
|
1046
|
+
src/
|
|
1047
|
+
├── learning/
|
|
1048
|
+
│ └── trajectory-sources/
|
|
1049
|
+
│ ├── entire.ts # EntireTrajectorySource (NEW)
|
|
1050
|
+
│ └── index.ts # Updated barrel
|
|
1051
|
+
└── types/
|
|
1052
|
+
└── config.ts # SessionBankConfigSchema addition
|
|
1053
|
+
```
|
|
1054
|
+
|
|
1055
|
+
## 9. Implementation Plan
|
|
1056
|
+
|
|
1057
|
+
### Phase 1: Standalone Reader (session-bank package)
|
|
1058
|
+
- `EntireGitReader` — git plumbing, branch existence, file reading
|
|
1059
|
+
- `EntireTranscriptParser` — JSONL parsing, metadata parsing, chunked transcripts
|
|
1060
|
+
- Types (`SessionRecord`, `TranscriptMessage`, `ContentBlock`, etc.)
|
|
1061
|
+
- Unit tests with real Entire fixture data
|
|
1062
|
+
|
|
1063
|
+
### Phase 2: Session Bank Facade
|
|
1064
|
+
- `SessionBank` class — discover, query, get, count
|
|
1065
|
+
- Lazy loading (metadata-first, transcript-on-demand)
|
|
1066
|
+
- Processing log persistence
|
|
1067
|
+
- Cache invalidation via orphan branch HEAD comparison
|
|
1068
|
+
|
|
1069
|
+
### Phase 3: cognitive-core Adapter
|
|
1070
|
+
- `EntireTrajectorySource` implementing `TrajectorySource`
|
|
1071
|
+
- `synthesize()` — SessionRecord → Trajectory conversion
|
|
1072
|
+
- ReAct step grouping, outcome inference (summary-based + heuristic)
|
|
1073
|
+
- `SessionBankConfigSchema` addition to `AtlasConfig`
|
|
1074
|
+
- `Atlas.ingestEntireSessions()` integration
|
|
1075
|
+
|
|
1076
|
+
### Phase 4: Polish
|
|
1077
|
+
- Commit-linked queries (`getByCommit()` via trailer parsing)
|
|
1078
|
+
- `search` filter (full-text across user messages)
|
|
1079
|
+
- Task/subagent checkpoint support
|
|
1080
|
+
- Error tolerance for corrupt/partial data
|
|
1081
|
+
- Integration test against a real Entire-enabled repo
|
|
1082
|
+
|
|
1083
|
+
## 10. Design Decisions
|
|
1084
|
+
|
|
1085
|
+
### Why a standalone package?
|
|
1086
|
+
|
|
1087
|
+
The session bank reads Entire's data format — it doesn't need cognitive-core's Trajectory type, learning pipeline, or memory system. Keeping it standalone means:
|
|
1088
|
+
- Entire's data can be consumed by other tools (analytics, dashboards, review UIs)
|
|
1089
|
+
- The package has zero dependencies beyond Node.js built-ins
|
|
1090
|
+
- Testing is simpler (no cognitive-core setup needed)
|
|
1091
|
+
- cognitive-core's `EntireTrajectorySource` adapter is a thin 100-line bridge
|
|
1092
|
+
|
|
1093
|
+
### Why `summary.intent` over first user message for task description?
|
|
1094
|
+
|
|
1095
|
+
Entire's AI-generated summaries distill multi-turn sessions into coherent task descriptions. The first user message might be "fix this" with no context. The summary's `intent` field is "Fix the authentication token refresh bug in the middleware" — much better for learning.
|
|
1096
|
+
|
|
1097
|
+
### Why `summary`-based outcome inference by default?
|
|
1098
|
+
|
|
1099
|
+
Entire already runs an LLM to generate session summaries with an `outcome` field. Using this avoids a duplicate LLM call during ingestion. The summary-based strategy examines the outcome text for failure indicators — this is nearly as accurate as a dedicated outcome classifier, at zero additional cost.
|
|
1100
|
+
|
|
1101
|
+
### Why checkpoint-indexed, not session-indexed?
|
|
1102
|
+
|
|
1103
|
+
Entire's storage is organized by checkpoint ID, not session ID. A single checkpoint can contain multiple concurrent sessions. The session bank follows this structure rather than fighting it — `getByCheckpointId()` returns all sessions in a checkpoint, while `getBySessionId()` searches across checkpoints.
|
|
1104
|
+
|
|
1105
|
+
### Why processing log rather than modifying Entire's data?
|
|
1106
|
+
|
|
1107
|
+
The session bank never writes to the orphan branch. Processing state is kept in a local file (`.atlas/session-bank/processed.json`). This means:
|
|
1108
|
+
- Multiple consumers can independently track their own processing state
|
|
1109
|
+
- Entire's data stays immutable and authoritative
|
|
1110
|
+
- No risk of corrupting the orphan branch
|
|
1111
|
+
|
|
1112
|
+
## 11. Entire Features We Leverage
|
|
1113
|
+
|
|
1114
|
+
| Entire Feature | How We Use It |
|
|
1115
|
+
|---|---|
|
|
1116
|
+
| `summary.intent` | Task description for Trajectory |
|
|
1117
|
+
| `summary.outcome` | Outcome inference (success/failure) |
|
|
1118
|
+
| `summary.learnings` | Candidate knowledge notes for KnowledgeBank |
|
|
1119
|
+
| `summary.friction_points` | Anti-pattern identification for playbooks |
|
|
1120
|
+
| `files_touched` | Domain inference, file-level context |
|
|
1121
|
+
| `token_usage` | Direct `totalTokens` on Trajectory (no estimation) |
|
|
1122
|
+
| `initial_attribution` | Code contribution metrics for meta-learning |
|
|
1123
|
+
| `Entire-Checkpoint` trailers | Commit↔session linking |
|
|
1124
|
+
| Checkpoint sharding | Efficient git tree enumeration |
|
|
1125
|
+
| Transcript chunking | Handle large sessions (>50MB) gracefully |
|
|
1126
|
+
|
|
1127
|
+
## 12. Future Extensions
|
|
1128
|
+
|
|
1129
|
+
- **Learnings → KnowledgeBank pipeline** — `summary.learnings` maps directly to KnowledgeBank observations; auto-extract without re-analyzing the transcript
|
|
1130
|
+
- **Friction → anti-pattern extraction** — `summary.friction_points` can seed `playbook.applicability.antiPatterns`
|
|
1131
|
+
- **Attribution-weighted learning** — weight trajectory importance by `agentContribution` score; sessions where the human did most of the work may be less useful for agent learning
|
|
1132
|
+
- **Cross-repo federation** — aggregate session banks from multiple repos into a shared learning corpus
|
|
1133
|
+
- **Incremental sync** — track orphan branch commit SHA; only re-scan checkpoints added since last sync
|
|
1134
|
+
- **Gemini CLI support** — Entire captures Gemini sessions too; parser can be extended to handle Gemini's JSON format alongside Claude's JSONL
|