cognitive-core 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +233 -0
- package/README.md +370 -54
- package/dist/atlas.d.ts +10 -10
- package/dist/atlas.d.ts.map +1 -1
- package/dist/atlas.js +79 -48
- package/dist/atlas.js.map +1 -1
- package/dist/bin/cli-utils.d.ts +37 -0
- package/dist/bin/cli-utils.d.ts.map +1 -0
- package/dist/bin/cli-utils.js +176 -0
- package/dist/bin/cli-utils.js.map +1 -0
- package/dist/bin/cognitive-core.d.ts +2 -12
- package/dist/bin/cognitive-core.d.ts.map +1 -1
- package/dist/bin/cognitive-core.js +76 -351
- package/dist/bin/cognitive-core.js.map +1 -1
- package/dist/bin/commands/kb.d.ts +6 -0
- package/dist/bin/commands/kb.d.ts.map +1 -0
- package/dist/bin/commands/kb.js +240 -0
- package/dist/bin/commands/kb.js.map +1 -0
- package/dist/bin/commands/learn.d.ts +6 -0
- package/dist/bin/commands/learn.d.ts.map +1 -0
- package/dist/bin/commands/learn.js +91 -0
- package/dist/bin/commands/learn.js.map +1 -0
- package/dist/bin/commands/legacy.d.ts +12 -0
- package/dist/bin/commands/legacy.d.ts.map +1 -0
- package/dist/bin/commands/legacy.js +142 -0
- package/dist/bin/commands/legacy.js.map +1 -0
- package/dist/bin/commands/run.d.ts +3 -0
- package/dist/bin/commands/run.d.ts.map +1 -0
- package/dist/bin/commands/run.js +99 -0
- package/dist/bin/commands/run.js.map +1 -0
- package/dist/bin/commands/sessions.d.ts +9 -0
- package/dist/bin/commands/sessions.d.ts.map +1 -0
- package/dist/bin/commands/sessions.js +183 -0
- package/dist/bin/commands/sessions.js.map +1 -0
- package/dist/bin/commands/skills.d.ts +6 -0
- package/dist/bin/commands/skills.d.ts.map +1 -0
- package/dist/bin/commands/skills.js +135 -0
- package/dist/bin/commands/skills.js.map +1 -0
- package/dist/embeddings/index.d.ts +1 -0
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +2 -0
- package/dist/embeddings/index.js.map +1 -1
- package/dist/embeddings/inverted-index.d.ts +47 -0
- package/dist/embeddings/inverted-index.d.ts.map +1 -0
- package/dist/embeddings/inverted-index.js +122 -0
- package/dist/embeddings/inverted-index.js.map +1 -0
- package/dist/embeddings/manager.d.ts +3 -1
- package/dist/embeddings/manager.d.ts.map +1 -1
- package/dist/embeddings/manager.js +12 -7
- package/dist/embeddings/manager.js.map +1 -1
- package/dist/embeddings/vector-store.d.ts +7 -3
- package/dist/embeddings/vector-store.d.ts.map +1 -1
- package/dist/embeddings/vector-store.js +22 -6
- package/dist/embeddings/vector-store.js.map +1 -1
- package/dist/factory.d.ts +11 -12
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +20 -7
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -5
- package/dist/index.js.map +1 -1
- package/dist/learning/analyzer.d.ts.map +1 -1
- package/dist/learning/analyzer.js +17 -35
- package/dist/learning/analyzer.js.map +1 -1
- package/dist/learning/energy-evaluator.d.ts +128 -0
- package/dist/learning/energy-evaluator.d.ts.map +1 -0
- package/dist/learning/energy-evaluator.js +175 -0
- package/dist/learning/energy-evaluator.js.map +1 -0
- package/dist/learning/healing-orchestrator.d.ts +182 -0
- package/dist/learning/healing-orchestrator.d.ts.map +1 -0
- package/dist/learning/healing-orchestrator.js +250 -0
- package/dist/learning/healing-orchestrator.js.map +1 -0
- package/dist/learning/index.d.ts +7 -2
- package/dist/learning/index.d.ts.map +1 -1
- package/dist/learning/index.js +13 -2
- package/dist/learning/index.js.map +1 -1
- package/dist/learning/instant-loop.d.ts +87 -0
- package/dist/learning/instant-loop.d.ts.map +1 -0
- package/dist/learning/instant-loop.js +264 -0
- package/dist/learning/instant-loop.js.map +1 -0
- package/dist/learning/loop-coordinator.d.ts +61 -0
- package/dist/learning/loop-coordinator.d.ts.map +1 -0
- package/dist/learning/loop-coordinator.js +96 -0
- package/dist/learning/loop-coordinator.js.map +1 -0
- package/dist/learning/maintenance-scheduler.d.ts +141 -0
- package/dist/learning/maintenance-scheduler.d.ts.map +1 -0
- package/dist/learning/maintenance-scheduler.js +186 -0
- package/dist/learning/maintenance-scheduler.js.map +1 -0
- package/dist/learning/meta-learner.d.ts.map +1 -1
- package/dist/learning/meta-learner.js +4 -21
- package/dist/learning/meta-learner.js.map +1 -1
- package/dist/learning/pipeline.d.ts +31 -4
- package/dist/learning/pipeline.d.ts.map +1 -1
- package/dist/learning/pipeline.js +64 -12
- package/dist/learning/pipeline.js.map +1 -1
- package/dist/learning/reflexion-generator.d.ts +64 -0
- package/dist/learning/reflexion-generator.d.ts.map +1 -0
- package/dist/learning/reflexion-generator.js +194 -0
- package/dist/learning/reflexion-generator.js.map +1 -0
- package/dist/learning/trajectory-sources/entire.d.ts +8 -5
- package/dist/learning/trajectory-sources/entire.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/entire.js +13 -6
- package/dist/learning/trajectory-sources/entire.js.map +1 -1
- package/dist/learning/trajectory-sources/index.d.ts +1 -1
- package/dist/learning/trajectory-sources/index.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/index.js +1 -1
- package/dist/learning/trajectory-sources/index.js.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.d.ts +4 -4
- package/dist/learning/trajectory-sources/pipeline.d.ts.map +1 -1
- package/dist/learning/trajectory-sources/pipeline.js +2 -2
- package/dist/learning/trajectory-sources/pipeline.js.map +1 -1
- package/dist/learning/unified-pipeline.d.ts +281 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -0
- package/dist/learning/unified-pipeline.js +637 -0
- package/dist/learning/unified-pipeline.js.map +1 -0
- package/dist/memory/candidate-retrieval.d.ts +43 -0
- package/dist/memory/candidate-retrieval.d.ts.map +1 -0
- package/dist/memory/candidate-retrieval.js +41 -0
- package/dist/memory/candidate-retrieval.js.map +1 -0
- package/dist/memory/causal-store.d.ts +97 -0
- package/dist/memory/causal-store.d.ts.map +1 -0
- package/dist/memory/causal-store.js +209 -0
- package/dist/memory/causal-store.js.map +1 -0
- package/dist/memory/coherence.d.ts +71 -0
- package/dist/memory/coherence.d.ts.map +1 -0
- package/dist/memory/coherence.js +176 -0
- package/dist/memory/coherence.js.map +1 -0
- package/dist/memory/experience.d.ts +39 -6
- package/dist/memory/experience.d.ts.map +1 -1
- package/dist/memory/experience.js +193 -49
- package/dist/memory/experience.js.map +1 -1
- package/dist/memory/index.d.ts +7 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +12 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/knowledge-bank.d.ts +14 -0
- package/dist/memory/knowledge-bank.d.ts.map +1 -1
- package/dist/memory/knowledge-bank.js +45 -0
- package/dist/memory/knowledge-bank.js.map +1 -1
- package/dist/memory/meta.d.ts +7 -8
- package/dist/memory/meta.d.ts.map +1 -1
- package/dist/memory/meta.js +73 -79
- package/dist/memory/meta.js.map +1 -1
- package/dist/memory/playbook.d.ts +26 -9
- package/dist/memory/playbook.d.ts.map +1 -1
- package/dist/memory/playbook.js +198 -74
- package/dist/memory/playbook.js.map +1 -1
- package/dist/memory/reasoning-bank.d.ts +130 -0
- package/dist/memory/reasoning-bank.d.ts.map +1 -0
- package/dist/memory/reasoning-bank.js +342 -0
- package/dist/memory/reasoning-bank.js.map +1 -0
- package/dist/memory/reflexion.d.ts +59 -0
- package/dist/memory/reflexion.d.ts.map +1 -0
- package/dist/memory/reflexion.js +96 -0
- package/dist/memory/reflexion.js.map +1 -0
- package/dist/memory/system.d.ts +7 -2
- package/dist/memory/system.d.ts.map +1 -1
- package/dist/memory/system.js +19 -7
- package/dist/memory/system.js.map +1 -1
- package/dist/memory/temporal-compressor.d.ts +126 -0
- package/dist/memory/temporal-compressor.d.ts.map +1 -0
- package/dist/memory/temporal-compressor.js +335 -0
- package/dist/memory/temporal-compressor.js.map +1 -0
- package/dist/persistence/index.d.ts +11 -0
- package/dist/persistence/index.d.ts.map +1 -0
- package/dist/persistence/index.js +11 -0
- package/dist/persistence/index.js.map +1 -0
- package/dist/persistence/migrator.d.ts +40 -0
- package/dist/persistence/migrator.d.ts.map +1 -0
- package/dist/persistence/migrator.js +238 -0
- package/dist/persistence/migrator.js.map +1 -0
- package/dist/persistence/serializers.d.ts +45 -0
- package/dist/persistence/serializers.d.ts.map +1 -0
- package/dist/persistence/serializers.js +80 -0
- package/dist/persistence/serializers.js.map +1 -0
- package/dist/persistence/sqlite-persistence.d.ts +228 -0
- package/dist/persistence/sqlite-persistence.d.ts.map +1 -0
- package/dist/persistence/sqlite-persistence.js +588 -0
- package/dist/persistence/sqlite-persistence.js.map +1 -0
- package/dist/runtime/flows/learning.d.ts +10 -12
- package/dist/runtime/flows/learning.d.ts.map +1 -1
- package/dist/runtime/flows/learning.js +10 -23
- package/dist/runtime/flows/learning.js.map +1 -1
- package/dist/search/index.d.ts +1 -0
- package/dist/search/index.d.ts.map +1 -1
- package/dist/search/index.js +2 -0
- package/dist/search/index.js.map +1 -1
- package/dist/search/moe-gate.d.ts +124 -0
- package/dist/search/moe-gate.d.ts.map +1 -0
- package/dist/search/moe-gate.js +234 -0
- package/dist/search/moe-gate.js.map +1 -0
- package/dist/search/router.d.ts +32 -2
- package/dist/search/router.d.ts.map +1 -1
- package/dist/search/router.js +87 -4
- package/dist/search/router.js.map +1 -1
- package/dist/session-bank/git-reader.d.ts +9 -4
- package/dist/session-bank/git-reader.d.ts.map +1 -1
- package/dist/session-bank/git-reader.js +22 -15
- package/dist/session-bank/git-reader.js.map +1 -1
- package/dist/session-bank/index.d.ts +2 -2
- package/dist/session-bank/index.d.ts.map +1 -1
- package/dist/session-bank/index.js +2 -2
- package/dist/session-bank/index.js.map +1 -1
- package/dist/session-bank/parser.d.ts +16 -5
- package/dist/session-bank/parser.d.ts.map +1 -1
- package/dist/session-bank/parser.js +187 -80
- package/dist/session-bank/parser.js.map +1 -1
- package/dist/session-bank/session-bank.d.ts +5 -0
- package/dist/session-bank/session-bank.d.ts.map +1 -1
- package/dist/session-bank/session-bank.js +30 -9
- package/dist/session-bank/session-bank.js.map +1 -1
- package/dist/session-bank/types.d.ts +4 -1
- package/dist/session-bank/types.d.ts.map +1 -1
- package/dist/session-bank/types.js +3 -3
- package/dist/session-bank/types.js.map +1 -1
- package/dist/surfacing/skill-publisher.d.ts.map +1 -1
- package/dist/surfacing/skill-publisher.js +15 -43
- package/dist/surfacing/skill-publisher.js.map +1 -1
- package/dist/surfacing/sqlite-storage-adapter.d.ts.map +1 -1
- package/dist/surfacing/sqlite-storage-adapter.js +13 -21
- package/dist/surfacing/sqlite-storage-adapter.js.map +1 -1
- package/dist/types/config.d.ts +100 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +27 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/memory.d.ts +52 -0
- package/dist/types/memory.d.ts.map +1 -1
- package/dist/types/memory.js +13 -0
- package/dist/types/memory.js.map +1 -1
- package/dist/types/playbook.d.ts +4 -0
- package/dist/types/playbook.d.ts.map +1 -1
- package/dist/types/playbook.js.map +1 -1
- package/dist/utils/error-classifier.d.ts +30 -0
- package/dist/utils/error-classifier.d.ts.map +1 -0
- package/dist/utils/error-classifier.js +85 -0
- package/dist/utils/error-classifier.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/partitioned-store.d.ts +93 -0
- package/dist/utils/partitioned-store.d.ts.map +1 -0
- package/dist/utils/partitioned-store.js +251 -0
- package/dist/utils/partitioned-store.js.map +1 -0
- package/dist/utils/trajectory-helpers.d.ts +39 -0
- package/dist/utils/trajectory-helpers.d.ts.map +1 -0
- package/dist/utils/trajectory-helpers.js +57 -0
- package/dist/utils/trajectory-helpers.js.map +1 -0
- package/dist/workspace/runner.d.ts +3 -4
- package/dist/workspace/runner.d.ts.map +1 -1
- package/dist/workspace/runner.js.map +1 -1
- package/dist/workspace/types.d.ts +9 -2
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/types.js.map +1 -1
- package/package.json +6 -4
- package/references/sessionlog/.husky/pre-commit +1 -0
- package/references/sessionlog/.lintstagedrc.json +4 -0
- package/references/sessionlog/.prettierignore +4 -0
- package/references/sessionlog/.prettierrc.json +11 -0
- package/references/sessionlog/LICENSE +21 -0
- package/references/sessionlog/README.md +453 -0
- package/references/sessionlog/eslint.config.js +58 -0
- package/references/sessionlog/package-lock.json +3672 -0
- package/references/sessionlog/package.json +65 -0
- package/references/sessionlog/src/__tests__/agent-hooks.test.ts +570 -0
- package/references/sessionlog/src/__tests__/agent-registry.test.ts +127 -0
- package/references/sessionlog/src/__tests__/claude-code-hooks.test.ts +225 -0
- package/references/sessionlog/src/__tests__/claude-generator.test.ts +46 -0
- package/references/sessionlog/src/__tests__/commit-msg.test.ts +86 -0
- package/references/sessionlog/src/__tests__/cursor-agent.test.ts +224 -0
- package/references/sessionlog/src/__tests__/e2e-live.test.ts +890 -0
- package/references/sessionlog/src/__tests__/event-log.test.ts +183 -0
- package/references/sessionlog/src/__tests__/flush-sentinel.test.ts +105 -0
- package/references/sessionlog/src/__tests__/gemini-agent.test.ts +375 -0
- package/references/sessionlog/src/__tests__/git-hooks.test.ts +78 -0
- package/references/sessionlog/src/__tests__/hook-managers.test.ts +121 -0
- package/references/sessionlog/src/__tests__/lifecycle-tasks.test.ts +759 -0
- package/references/sessionlog/src/__tests__/opencode-agent.test.ts +338 -0
- package/references/sessionlog/src/__tests__/redaction.test.ts +136 -0
- package/references/sessionlog/src/__tests__/session-repo.test.ts +353 -0
- package/references/sessionlog/src/__tests__/session-store.test.ts +166 -0
- package/references/sessionlog/src/__tests__/setup-ccweb.test.ts +466 -0
- package/references/sessionlog/src/__tests__/skill-live.test.ts +461 -0
- package/references/sessionlog/src/__tests__/summarize.test.ts +348 -0
- package/references/sessionlog/src/__tests__/task-plan-e2e.test.ts +610 -0
- package/references/sessionlog/src/__tests__/task-plan-live.test.ts +632 -0
- package/references/sessionlog/src/__tests__/transcript-timestamp.test.ts +121 -0
- package/references/sessionlog/src/__tests__/types.test.ts +166 -0
- package/references/sessionlog/src/__tests__/utils.test.ts +333 -0
- package/references/sessionlog/src/__tests__/validation.test.ts +103 -0
- package/references/sessionlog/src/__tests__/worktree.test.ts +57 -0
- package/references/sessionlog/src/agent/agents/claude-code.ts +1089 -0
- package/references/sessionlog/src/agent/agents/cursor.ts +361 -0
- package/references/sessionlog/src/agent/agents/gemini-cli.ts +632 -0
- package/references/sessionlog/src/agent/agents/opencode.ts +540 -0
- package/references/sessionlog/src/agent/registry.ts +143 -0
- package/references/sessionlog/src/agent/session-types.ts +113 -0
- package/references/sessionlog/src/agent/types.ts +220 -0
- package/references/sessionlog/src/cli.ts +597 -0
- package/references/sessionlog/src/commands/clean.ts +133 -0
- package/references/sessionlog/src/commands/disable.ts +84 -0
- package/references/sessionlog/src/commands/doctor.ts +145 -0
- package/references/sessionlog/src/commands/enable.ts +202 -0
- package/references/sessionlog/src/commands/explain.ts +261 -0
- package/references/sessionlog/src/commands/reset.ts +105 -0
- package/references/sessionlog/src/commands/resume.ts +180 -0
- package/references/sessionlog/src/commands/rewind.ts +195 -0
- package/references/sessionlog/src/commands/setup-ccweb.ts +275 -0
- package/references/sessionlog/src/commands/status.ts +172 -0
- package/references/sessionlog/src/config.ts +165 -0
- package/references/sessionlog/src/events/event-log.ts +126 -0
- package/references/sessionlog/src/git-operations.ts +558 -0
- package/references/sessionlog/src/hooks/git-hooks.ts +165 -0
- package/references/sessionlog/src/hooks/lifecycle.ts +391 -0
- package/references/sessionlog/src/index.ts +650 -0
- package/references/sessionlog/src/security/redaction.ts +283 -0
- package/references/sessionlog/src/session/state-machine.ts +452 -0
- package/references/sessionlog/src/store/checkpoint-store.ts +509 -0
- package/references/sessionlog/src/store/native-store.ts +173 -0
- package/references/sessionlog/src/store/provider-types.ts +99 -0
- package/references/sessionlog/src/store/session-store.ts +266 -0
- package/references/sessionlog/src/strategy/attribution.ts +296 -0
- package/references/sessionlog/src/strategy/common.ts +207 -0
- package/references/sessionlog/src/strategy/content-overlap.ts +228 -0
- package/references/sessionlog/src/strategy/manual-commit.ts +988 -0
- package/references/sessionlog/src/strategy/types.ts +279 -0
- package/references/sessionlog/src/summarize/claude-generator.ts +115 -0
- package/references/sessionlog/src/summarize/summarize.ts +432 -0
- package/references/sessionlog/src/types.ts +508 -0
- package/references/sessionlog/src/utils/chunk-files.ts +49 -0
- package/references/sessionlog/src/utils/commit-message.ts +65 -0
- package/references/sessionlog/src/utils/detect-agent.ts +36 -0
- package/references/sessionlog/src/utils/hook-managers.ts +125 -0
- package/references/sessionlog/src/utils/ide-tags.ts +32 -0
- package/references/sessionlog/src/utils/paths.ts +79 -0
- package/references/sessionlog/src/utils/preview-rewind.ts +80 -0
- package/references/sessionlog/src/utils/rewind-conflict.ts +121 -0
- package/references/sessionlog/src/utils/shadow-branch.ts +109 -0
- package/references/sessionlog/src/utils/string-utils.ts +46 -0
- package/references/sessionlog/src/utils/todo-extract.ts +188 -0
- package/references/sessionlog/src/utils/trailers.ts +187 -0
- package/references/sessionlog/src/utils/transcript-parse.ts +177 -0
- package/references/sessionlog/src/utils/transcript-timestamp.ts +59 -0
- package/references/sessionlog/src/utils/tree-ops.ts +219 -0
- package/references/sessionlog/src/utils/tty.ts +72 -0
- package/references/sessionlog/src/utils/validation.ts +65 -0
- package/references/sessionlog/src/utils/worktree.ts +58 -0
- package/references/sessionlog/src/wire-types.ts +59 -0
- package/references/sessionlog/templates/setup-env.sh +153 -0
- package/references/sessionlog/tsconfig.json +18 -0
- package/references/sessionlog/vitest.config.ts +12 -0
- package/references/skill-tree/.sudocode/issues.jsonl +8 -0
- package/references/skill-tree/.sudocode/specs.jsonl +2 -0
- package/references/skill-tree/CLAUDE.md +56 -80
- package/references/skill-tree/README.md +188 -140
- package/references/skill-tree/examples/basic-usage.ts +95 -121
- package/references/skill-tree/package-lock.json +369 -26
- package/references/skill-tree/package.json +1 -1
- package/src/atlas.ts +97 -67
- package/src/bin/cli-utils.ts +220 -0
- package/src/bin/cognitive-core.ts +84 -392
- package/src/bin/commands/kb.ts +266 -0
- package/src/bin/commands/learn.ts +100 -0
- package/src/bin/commands/legacy.ts +182 -0
- package/src/bin/commands/run.ts +113 -0
- package/src/bin/commands/sessions.ts +221 -0
- package/src/bin/commands/skills.ts +146 -0
- package/src/embeddings/index.ts +3 -0
- package/src/embeddings/inverted-index.ts +134 -0
- package/src/embeddings/manager.ts +13 -8
- package/src/embeddings/vector-store.ts +21 -9
- package/src/factory.ts +33 -16
- package/src/index.ts +109 -9
- package/src/learning/analyzer.ts +21 -37
- package/src/learning/energy-evaluator.ts +282 -0
- package/src/learning/healing-orchestrator.ts +383 -0
- package/src/learning/index.ts +65 -9
- package/src/learning/instant-loop.ts +357 -0
- package/src/learning/maintenance-scheduler.ts +271 -0
- package/src/learning/meta-learner.ts +5 -23
- package/src/learning/reflexion-generator.ts +273 -0
- package/src/learning/trajectory-sources/entire.ts +24 -13
- package/src/learning/trajectory-sources/index.ts +2 -2
- package/src/learning/trajectory-sources/pipeline.ts +5 -5
- package/src/learning/unified-pipeline.ts +921 -0
- package/src/memory/candidate-retrieval.ts +71 -0
- package/src/memory/causal-store.ts +273 -0
- package/src/memory/coherence.ts +252 -0
- package/src/memory/experience.ts +217 -50
- package/src/memory/index.ts +43 -0
- package/src/memory/knowledge-bank.ts +57 -0
- package/src/memory/meta.ts +78 -96
- package/src/memory/playbook.ts +239 -75
- package/src/memory/reasoning-bank.ts +458 -0
- package/src/memory/reflexion.ts +122 -0
- package/src/memory/system.ts +21 -5
- package/src/memory/temporal-compressor.ts +409 -0
- package/src/persistence/index.ts +37 -0
- package/src/persistence/migrator.ts +298 -0
- package/src/persistence/serializers.ts +79 -0
- package/src/persistence/sqlite-persistence.ts +925 -0
- package/src/runtime/flows/learning.ts +25 -42
- package/src/search/index.ts +10 -0
- package/src/search/moe-gate.ts +304 -0
- package/src/search/router.ts +111 -4
- package/src/session-bank/git-reader.ts +29 -19
- package/src/session-bank/index.ts +4 -2
- package/src/session-bank/parser.ts +280 -98
- package/src/session-bank/session-bank.ts +33 -12
- package/src/session-bank/types.ts +8 -5
- package/src/surfacing/skill-publisher.ts +17 -49
- package/src/surfacing/sqlite-storage-adapter.ts +16 -32
- package/src/types/config.ts +30 -0
- package/src/types/index.ts +3 -0
- package/src/types/memory.ts +30 -0
- package/src/types/playbook.ts +4 -0
- package/src/utils/error-classifier.ts +113 -0
- package/src/utils/index.ts +18 -0
- package/src/utils/partitioned-store.ts +299 -0
- package/src/utils/trajectory-helpers.ts +79 -0
- package/src/workspace/runner.ts +3 -3
- package/src/workspace/types.ts +10 -2
- package/tests/embeddings/inverted-index.test.ts +138 -0
- package/tests/feature-toggles.test.ts +275 -0
- package/tests/gap-fixes.test.ts +17 -4
- package/tests/integration/cli-e2e.test.ts +621 -0
- package/tests/integration/e2e.test.ts +6 -5
- package/tests/integration/entire-e2e.test.ts +314 -125
- package/tests/integration/persistence-e2e.test.ts +741 -0
- package/tests/integration/phase-e2e.test.ts +1143 -0
- package/tests/integration/session-bank.test.ts +20 -14
- package/tests/integration/sessionlog-e2e.test.ts +329 -0
- package/tests/integration/unified-pipeline-e2e.test.ts +634 -0
- package/tests/learning/analyzer.test.ts +1 -1
- package/tests/learning/energy-evaluator.test.ts +180 -0
- package/tests/learning/entire-trajectory-source.test.ts +25 -25
- package/tests/learning/healing-orchestrator.test.ts +269 -0
- package/tests/learning/instant-loop.test.ts +243 -0
- package/tests/learning/maintenance-scheduler.test.ts +191 -0
- package/tests/learning/reflexion-generator.test.ts +411 -0
- package/tests/learning/trajectory-sources.test.ts +12 -4
- package/tests/learning/unified-pipeline.test.ts +322 -0
- package/tests/mcp/playbook-server.test.ts +6 -1
- package/tests/memory/causal-store.test.ts +276 -0
- package/tests/memory/coherence.test.ts +232 -0
- package/tests/memory/experience.test.ts +8 -3
- package/tests/memory/playbook.test.ts +307 -1
- package/tests/memory/provenance.test.ts +11 -2
- package/tests/memory/reasoning-bank.test.ts +239 -0
- package/tests/memory/reflexion.test.ts +166 -0
- package/tests/memory/skill-exporter.test.ts +6 -1
- package/tests/memory/system.test.ts +6 -1
- package/tests/memory/temporal-compressor.test.ts +318 -0
- package/tests/persistence/migrator.test.ts +1009 -0
- package/tests/persistence/sqlite-persistence.test.ts +635 -0
- package/tests/runtime/agent-manager.test.ts +6 -1
- package/tests/runtime/delegate.test.ts +6 -1
- package/tests/search/moe-gate.test.ts +250 -0
- package/tests/search/refinement-loop.test.ts +11 -2
- package/tests/search/router.test.ts +81 -2
- package/tests/session-bank/fixtures/sessionlog-root-metadata.json +16 -0
- package/tests/session-bank/fixtures/sessionlog-session/full.jsonl +6 -0
- package/tests/session-bank/fixtures/sessionlog-session/metadata.json +55 -0
- package/tests/session-bank/git-reader.test.ts +13 -13
- package/tests/session-bank/parser.test.ts +135 -3
- package/tests/session-bank/session-bank.test.ts +1 -1
- package/tests/surfacing/skill-library.test.ts +6 -1
- package/tests/surfacing/skill-publisher.test.ts +24 -58
- package/tests/surfacing/sqlite-storage-adapter.test.ts +11 -23
- package/tests/utils/partitioned-store.test.ts +230 -0
- package/tests/workspace/full-flow.test.ts +10 -4
- package/tests/workspace/runner.test.ts +10 -4
- package/docs/DESIGN-workspace-migration.md +0 -1079
- package/docs/PLAN-agentic-workspace-implementation.md +0 -717
- package/docs/PLAN-graph-migration.md +0 -299
- package/docs/PLAN-session-bank-implementation.md +0 -474
- package/src/learning/pipeline.ts +0 -323
- package/tests/learning/pipeline.test.ts +0 -176
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TemporalCompressor — Adaptive memory compression.
|
|
3
|
+
*
|
|
4
|
+
* Experiences flow through Hot → Warm → Cold → Evicted tiers
|
|
5
|
+
* based on their accessScore (from Phase 0).
|
|
6
|
+
*
|
|
7
|
+
* Compression levels:
|
|
8
|
+
* - Hot: Full fidelity (all data preserved)
|
|
9
|
+
* - Warm: Strip solutionOutput to key steps only
|
|
10
|
+
* - Cold: Replace key steps with single-paragraph summary
|
|
11
|
+
* - Evicted: Remove entirely (after ensuring pattern captured in ReasoningBank)
|
|
12
|
+
*
|
|
13
|
+
* Hysteresis: An experience must stay below a threshold for 2 consecutive
|
|
14
|
+
* compression passes before demotion, preventing oscillation from a
|
|
15
|
+
* single retrieval hit.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import type { Experience } from '../types/index.js';
|
|
19
|
+
import type { SqlitePersistence } from '../persistence/index.js';
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for temporal compression
|
|
23
|
+
*/
|
|
24
|
+
export interface TemporalCompressorConfig {
|
|
25
|
+
/** accessScore above this = hot (default: 0.5) */
|
|
26
|
+
hotThreshold: number;
|
|
27
|
+
/** accessScore above this = warm (default: 0.2) */
|
|
28
|
+
warmThreshold: number;
|
|
29
|
+
/** accessScore below this = evict (default: 0.05) */
|
|
30
|
+
evictionThreshold: number;
|
|
31
|
+
/** Prevent oscillation between tiers (default: 0.05) */
|
|
32
|
+
hysteresis: number;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Result of a compression pass
|
|
37
|
+
*/
|
|
38
|
+
export interface CompressionResult {
|
|
39
|
+
/** IDs moved to a hotter tier (rare, via hysteresis) */
|
|
40
|
+
promoted: string[];
|
|
41
|
+
/** IDs moved to a colder tier */
|
|
42
|
+
demoted: string[];
|
|
43
|
+
/** IDs recommended for eviction */
|
|
44
|
+
evicted: string[];
|
|
45
|
+
/** IDs that stayed in the same tier */
|
|
46
|
+
unchanged: string[];
|
|
47
|
+
/** The modified experiences (for batch updating) */
|
|
48
|
+
updates: Map<string, Partial<Experience>>;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const DEFAULT_CONFIG: TemporalCompressorConfig = {
|
|
52
|
+
hotThreshold: 0.5,
|
|
53
|
+
warmThreshold: 0.2,
|
|
54
|
+
evictionThreshold: 0.05,
|
|
55
|
+
hysteresis: 0.05,
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* TemporalCompressor — evaluates and compresses experiences based on access scores
|
|
60
|
+
*/
|
|
61
|
+
export class TemporalCompressor {
|
|
62
|
+
private config: TemporalCompressorConfig;
|
|
63
|
+
private persistence?: SqlitePersistence;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Track experiences that were below demotion threshold on the previous pass.
|
|
67
|
+
* Hysteresis: only demote after 2 consecutive passes below threshold.
|
|
68
|
+
*/
|
|
69
|
+
private pendingDemotion: Set<string> = new Set();
|
|
70
|
+
|
|
71
|
+
constructor(options?: Partial<TemporalCompressorConfig>, persistence?: SqlitePersistence) {
|
|
72
|
+
this.config = { ...DEFAULT_CONFIG, ...options };
|
|
73
|
+
this.persistence = persistence;
|
|
74
|
+
|
|
75
|
+
// Load persisted pending demotions
|
|
76
|
+
if (persistence?.isInitialized) {
|
|
77
|
+
const saved = persistence.getSystemState<string[]>('temporal_compressor');
|
|
78
|
+
if (saved) {
|
|
79
|
+
this.pendingDemotion = new Set(saved);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Evaluate and compress experiences based on their access scores.
|
|
86
|
+
* Returns a CompressionResult describing all tier changes.
|
|
87
|
+
*/
|
|
88
|
+
async compress(experiences: Experience[]): Promise<CompressionResult> {
|
|
89
|
+
const result: CompressionResult = {
|
|
90
|
+
promoted: [],
|
|
91
|
+
demoted: [],
|
|
92
|
+
evicted: [],
|
|
93
|
+
unchanged: [],
|
|
94
|
+
updates: new Map(),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const newPendingDemotion = new Set<string>();
|
|
98
|
+
|
|
99
|
+
for (const exp of experiences) {
|
|
100
|
+
const currentTier = exp.tier ?? 'hot';
|
|
101
|
+
const targetTier = this.computeTargetTier(exp.accessScore);
|
|
102
|
+
|
|
103
|
+
if (targetTier === 'evict') {
|
|
104
|
+
// Cold → Evicted
|
|
105
|
+
if (currentTier === 'cold') {
|
|
106
|
+
if (this.pendingDemotion.has(exp.id)) {
|
|
107
|
+
// Second consecutive pass below eviction threshold → evict
|
|
108
|
+
result.evicted.push(exp.id);
|
|
109
|
+
} else {
|
|
110
|
+
// First pass below → mark pending
|
|
111
|
+
newPendingDemotion.add(exp.id);
|
|
112
|
+
result.unchanged.push(exp.id);
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
// Not yet cold — demote first (can't skip tiers)
|
|
116
|
+
this.handleDemotion(exp, currentTier, result, newPendingDemotion);
|
|
117
|
+
}
|
|
118
|
+
} else if (this.tierOrder(targetTier) < this.tierOrder(currentTier)) {
|
|
119
|
+
// Demotion (hot → warm, warm → cold, hot → cold)
|
|
120
|
+
this.handleDemotion(exp, currentTier, result, newPendingDemotion);
|
|
121
|
+
} else if (this.tierOrder(targetTier) > this.tierOrder(currentTier)) {
|
|
122
|
+
// Promotion (cold → warm, warm → hot) — requires score above threshold + hysteresis
|
|
123
|
+
const effectiveScore = exp.accessScore;
|
|
124
|
+
const promotionThreshold = this.getPromotionThreshold(currentTier);
|
|
125
|
+
|
|
126
|
+
if (effectiveScore >= promotionThreshold) {
|
|
127
|
+
const nextTier = this.nextHotterTier(currentTier);
|
|
128
|
+
if (nextTier) {
|
|
129
|
+
const promoted = this.promoteTier(exp, nextTier);
|
|
130
|
+
result.promoted.push(exp.id);
|
|
131
|
+
result.updates.set(exp.id, promoted);
|
|
132
|
+
} else {
|
|
133
|
+
result.unchanged.push(exp.id);
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
result.unchanged.push(exp.id);
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
result.unchanged.push(exp.id);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
this.pendingDemotion = newPendingDemotion;
|
|
144
|
+
|
|
145
|
+
// Persist pending demotions
|
|
146
|
+
if (this.persistence) {
|
|
147
|
+
this.persistence.setSystemState('temporal_compressor', [...this.pendingDemotion]);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return result;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Load persisted pending demotions. Call after persistence is initialized.
|
|
155
|
+
*/
|
|
156
|
+
loadPersistedState(): void {
|
|
157
|
+
if (this.persistence?.isInitialized) {
|
|
158
|
+
const saved = this.persistence.getSystemState<string[]>('temporal_compressor');
|
|
159
|
+
if (saved) {
|
|
160
|
+
this.pendingDemotion = new Set(saved);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Compress a single experience from hot → warm.
|
|
167
|
+
* Strips solutionOutput to key steps only.
|
|
168
|
+
*/
|
|
169
|
+
compressToWarm(experience: Experience): Experience {
|
|
170
|
+
const keySteps = this.extractKeySteps(experience);
|
|
171
|
+
const originalStepCount = this.estimateStepCount(experience);
|
|
172
|
+
|
|
173
|
+
return {
|
|
174
|
+
...experience,
|
|
175
|
+
tier: 'warm',
|
|
176
|
+
solutionOutput: keySteps.join('\n---\n'),
|
|
177
|
+
compressed: {
|
|
178
|
+
keySteps,
|
|
179
|
+
summary: '',
|
|
180
|
+
originalStepCount,
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Compress a single experience from warm → cold.
|
|
187
|
+
* Replaces key steps with a single-paragraph summary.
|
|
188
|
+
*/
|
|
189
|
+
compressToCold(experience: Experience): Experience {
|
|
190
|
+
const summary = this.generateSummary(experience);
|
|
191
|
+
|
|
192
|
+
return {
|
|
193
|
+
...experience,
|
|
194
|
+
tier: 'cold',
|
|
195
|
+
taskInput: experience.taskInput.slice(0, 200),
|
|
196
|
+
solutionOutput: summary,
|
|
197
|
+
feedback: experience.feedback.slice(0, 100),
|
|
198
|
+
compressed: {
|
|
199
|
+
keySteps: experience.compressed?.keySteps ?? [],
|
|
200
|
+
summary,
|
|
201
|
+
originalStepCount: experience.compressed?.originalStepCount ?? this.estimateStepCount(experience),
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// === Internal helpers ===
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Determine the target tier for a given access score.
|
|
210
|
+
*/
|
|
211
|
+
private computeTargetTier(accessScore: number): 'hot' | 'warm' | 'cold' | 'evict' {
|
|
212
|
+
if (accessScore >= this.config.hotThreshold) return 'hot';
|
|
213
|
+
if (accessScore >= this.config.warmThreshold) return 'warm';
|
|
214
|
+
if (accessScore >= this.config.evictionThreshold) return 'cold';
|
|
215
|
+
return 'evict';
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Numeric ordering for tiers (higher = hotter).
|
|
220
|
+
*/
|
|
221
|
+
private tierOrder(tier: 'hot' | 'warm' | 'cold'): number {
|
|
222
|
+
switch (tier) {
|
|
223
|
+
case 'hot': return 2;
|
|
224
|
+
case 'warm': return 1;
|
|
225
|
+
case 'cold': return 0;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Get the next colder tier.
|
|
231
|
+
*/
|
|
232
|
+
private nextColderTier(tier: 'hot' | 'warm' | 'cold'): 'warm' | 'cold' | undefined {
|
|
233
|
+
switch (tier) {
|
|
234
|
+
case 'hot': return 'warm';
|
|
235
|
+
case 'warm': return 'cold';
|
|
236
|
+
case 'cold': return undefined;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Get the next hotter tier.
|
|
242
|
+
*/
|
|
243
|
+
private nextHotterTier(tier: 'hot' | 'warm' | 'cold'): 'hot' | 'warm' | undefined {
|
|
244
|
+
switch (tier) {
|
|
245
|
+
case 'cold': return 'warm';
|
|
246
|
+
case 'warm': return 'hot';
|
|
247
|
+
case 'hot': return undefined;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Get the threshold needed for promotion from a tier (with hysteresis).
|
|
253
|
+
*/
|
|
254
|
+
private getPromotionThreshold(currentTier: 'hot' | 'warm' | 'cold'): number {
|
|
255
|
+
switch (currentTier) {
|
|
256
|
+
case 'cold': return this.config.warmThreshold + this.config.hysteresis;
|
|
257
|
+
case 'warm': return this.config.hotThreshold + this.config.hysteresis;
|
|
258
|
+
case 'hot': return Infinity;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Handle a demotion with hysteresis.
|
|
264
|
+
* Only demote after 2 consecutive passes below threshold.
|
|
265
|
+
*/
|
|
266
|
+
private handleDemotion(
|
|
267
|
+
exp: Experience,
|
|
268
|
+
currentTier: 'hot' | 'warm' | 'cold',
|
|
269
|
+
result: CompressionResult,
|
|
270
|
+
newPendingDemotion: Set<string>
|
|
271
|
+
): void {
|
|
272
|
+
if (this.pendingDemotion.has(exp.id)) {
|
|
273
|
+
// Second consecutive pass below threshold → demote one step
|
|
274
|
+
const nextTier = this.nextColderTier(currentTier);
|
|
275
|
+
if (nextTier) {
|
|
276
|
+
const compressed = nextTier === 'warm'
|
|
277
|
+
? this.compressToWarm(exp)
|
|
278
|
+
: this.compressToCold(exp);
|
|
279
|
+
|
|
280
|
+
result.demoted.push(exp.id);
|
|
281
|
+
result.updates.set(exp.id, {
|
|
282
|
+
tier: compressed.tier,
|
|
283
|
+
solutionOutput: compressed.solutionOutput,
|
|
284
|
+
taskInput: compressed.taskInput,
|
|
285
|
+
feedback: compressed.feedback,
|
|
286
|
+
compressed: compressed.compressed,
|
|
287
|
+
});
|
|
288
|
+
} else {
|
|
289
|
+
result.unchanged.push(exp.id);
|
|
290
|
+
}
|
|
291
|
+
} else {
|
|
292
|
+
// First pass below threshold → mark pending
|
|
293
|
+
newPendingDemotion.add(exp.id);
|
|
294
|
+
result.unchanged.push(exp.id);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Promote an experience to a hotter tier.
|
|
300
|
+
* Note: data can't be un-compressed, but the tier changes.
|
|
301
|
+
*/
|
|
302
|
+
private promoteTier(
|
|
303
|
+
_exp: Experience,
|
|
304
|
+
targetTier: 'hot' | 'warm'
|
|
305
|
+
): Partial<Experience> {
|
|
306
|
+
return { tier: targetTier };
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Extract key steps from a solution output.
|
|
311
|
+
* Looks for tool calls, error messages, and outcome-relevant actions.
|
|
312
|
+
*/
|
|
313
|
+
private extractKeySteps(experience: Experience): string[] {
|
|
314
|
+
const output = experience.solutionOutput;
|
|
315
|
+
const keySteps: string[] = [];
|
|
316
|
+
|
|
317
|
+
// If metadata has trajectory steps, extract from there
|
|
318
|
+
const metadata = experience.metadata as Record<string, unknown>;
|
|
319
|
+
const steps = metadata?.steps as Array<{
|
|
320
|
+
thought?: string;
|
|
321
|
+
action?: string;
|
|
322
|
+
observation?: string;
|
|
323
|
+
attributionScore?: number;
|
|
324
|
+
}> | undefined;
|
|
325
|
+
|
|
326
|
+
if (steps && Array.isArray(steps)) {
|
|
327
|
+
for (const step of steps) {
|
|
328
|
+
// Keep steps with high attribution or significant actions
|
|
329
|
+
const isKey =
|
|
330
|
+
(step.attributionScore !== undefined && step.attributionScore > 0.5) ||
|
|
331
|
+
step.action?.match(/^(Read|Write|Edit|Bash|Grep|Glob)\s/i) ||
|
|
332
|
+
step.observation?.match(/error|fail|success|created|updated/i);
|
|
333
|
+
|
|
334
|
+
if (isKey) {
|
|
335
|
+
const parts: string[] = [];
|
|
336
|
+
if (step.action) parts.push(`Action: ${step.action.slice(0, 150)}`);
|
|
337
|
+
if (step.observation) parts.push(`Result: ${step.observation.slice(0, 150)}`);
|
|
338
|
+
keySteps.push(parts.join(' → '));
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// Fallback: split output into paragraphs and keep first/last + error lines
|
|
344
|
+
if (keySteps.length === 0) {
|
|
345
|
+
const lines = output.split('\n').filter((l) => l.trim());
|
|
346
|
+
if (lines.length <= 5) {
|
|
347
|
+
return lines;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
// Keep first line (often the approach), error lines, and last line (outcome)
|
|
351
|
+
keySteps.push(lines[0]);
|
|
352
|
+
for (const line of lines) {
|
|
353
|
+
if (line.match(/error|exception|fail|warning/i) && keySteps.length < 8) {
|
|
354
|
+
keySteps.push(line.slice(0, 200));
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
keySteps.push(lines[lines.length - 1]);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return keySteps.slice(0, 10);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Estimate the original step count from an experience.
|
|
365
|
+
*/
|
|
366
|
+
private estimateStepCount(experience: Experience): number {
|
|
367
|
+
const metadata = experience.metadata as Record<string, unknown>;
|
|
368
|
+
if (typeof metadata?.stepCount === 'number') {
|
|
369
|
+
return metadata.stepCount;
|
|
370
|
+
}
|
|
371
|
+
const steps = metadata?.steps;
|
|
372
|
+
if (Array.isArray(steps)) {
|
|
373
|
+
return steps.length;
|
|
374
|
+
}
|
|
375
|
+
// Fallback: estimate from output length
|
|
376
|
+
return Math.max(1, Math.ceil(experience.solutionOutput.length / 200));
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Generate a one-paragraph summary for cold tier.
|
|
381
|
+
*/
|
|
382
|
+
private generateSummary(experience: Experience): string {
|
|
383
|
+
const success = experience.success ? 'Successfully' : 'Failed to';
|
|
384
|
+
const domain = experience.domain;
|
|
385
|
+
const taskSnippet = experience.taskInput.slice(0, 100);
|
|
386
|
+
|
|
387
|
+
// Use key steps if available
|
|
388
|
+
const keySteps = experience.compressed?.keySteps;
|
|
389
|
+
if (keySteps && keySteps.length > 0) {
|
|
390
|
+
const stepsSnippet = keySteps
|
|
391
|
+
.slice(0, 3)
|
|
392
|
+
.map((s) => s.slice(0, 80))
|
|
393
|
+
.join('; ');
|
|
394
|
+
return `[${domain}] ${success} complete task: "${taskSnippet}". Key steps: ${stepsSnippet}. ${experience.feedback.slice(0, 100)}`;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
return `[${domain}] ${success} complete task: "${taskSnippet}". ${experience.feedback.slice(0, 150)}`;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Create a TemporalCompressor
|
|
403
|
+
*/
|
|
404
|
+
export function createTemporalCompressor(
|
|
405
|
+
options?: Partial<TemporalCompressorConfig>,
|
|
406
|
+
persistence?: SqlitePersistence
|
|
407
|
+
): TemporalCompressor {
|
|
408
|
+
return new TemporalCompressor(options, persistence);
|
|
409
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persistence module — Unified SQLite database for system-internal state.
|
|
3
|
+
*
|
|
4
|
+
* Agent-accessible data (knowledge notes, published skills) stays as files.
|
|
5
|
+
* This module handles everything else: experiences, playbooks, causal edges,
|
|
6
|
+
* meta state, routing weights, vector embeddings.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export {
|
|
10
|
+
SqlitePersistence,
|
|
11
|
+
createSqlitePersistence,
|
|
12
|
+
type SqlitePersistenceConfig,
|
|
13
|
+
type ExperienceRow,
|
|
14
|
+
type PlaybookRow,
|
|
15
|
+
type ReflexionRow,
|
|
16
|
+
type CausalEdgeRow,
|
|
17
|
+
type MetaObservationRow,
|
|
18
|
+
type MetaStrategyRow,
|
|
19
|
+
type SystemStateRow,
|
|
20
|
+
} from './sqlite-persistence.js';
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
toISO,
|
|
24
|
+
fromISO,
|
|
25
|
+
toJSON,
|
|
26
|
+
fromJSON,
|
|
27
|
+
toInt,
|
|
28
|
+
fromInt,
|
|
29
|
+
embeddingToBlob,
|
|
30
|
+
blobToEmbedding,
|
|
31
|
+
} from './serializers.js';
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
JsonToSqliteMigrator,
|
|
35
|
+
runMigration,
|
|
36
|
+
type MigrationResult,
|
|
37
|
+
} from './migrator.js';
|