cognitive-core 0.1.2 → 0.2.1
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 +111 -2
- package/.sessionlog/settings.json +4 -0
- 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 +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +42 -6
- 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 +311 -0
- package/dist/learning/unified-pipeline.d.ts.map +1 -0
- package/dist/learning/unified-pipeline.js +844 -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 +43 -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/efficacy-toolkit.d.ts +164 -0
- package/dist/workspace/efficacy-toolkit.d.ts.map +1 -0
- package/dist/workspace/efficacy-toolkit.js +281 -0
- package/dist/workspace/efficacy-toolkit.js.map +1 -0
- package/dist/workspace/index.d.ts +2 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +3 -1
- package/dist/workspace/index.js.map +1 -1
- 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/templates/index.d.ts +3 -0
- package/dist/workspace/templates/index.d.ts.map +1 -1
- package/dist/workspace/templates/index.js +6 -0
- package/dist/workspace/templates/index.js.map +1 -1
- package/dist/workspace/templates/playbook-decay-detection.d.ts +46 -0
- package/dist/workspace/templates/playbook-decay-detection.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-decay-detection.js +197 -0
- package/dist/workspace/templates/playbook-decay-detection.js.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts +46 -0
- package/dist/workspace/templates/playbook-efficacy-audit.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js +160 -0
- package/dist/workspace/templates/playbook-efficacy-audit.js.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts +51 -0
- package/dist/workspace/templates/playbook-lifecycle-review.d.ts.map +1 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js +187 -0
- package/dist/workspace/templates/playbook-lifecycle-review.js.map +1 -0
- 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 +12 -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 +136 -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 +66 -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 +1191 -0
- package/src/memory/candidate-retrieval.ts +72 -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/efficacy-toolkit.ts +496 -0
- package/src/workspace/index.ts +29 -0
- package/src/workspace/runner.ts +3 -3
- package/src/workspace/templates/index.ts +24 -0
- package/src/workspace/templates/playbook-decay-detection.ts +272 -0
- package/src/workspace/templates/playbook-efficacy-audit.ts +246 -0
- package/src/workspace/templates/playbook-lifecycle-review.ts +274 -0
- 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/fixtures/behavioral-trajectories.ts +210 -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/pipeline-data-correctness.test.ts +794 -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/meta-learner.test.ts +418 -0
- package/tests/learning/pipeline-memory-updates.test.ts +721 -0
- package/tests/learning/reflexion-generator.test.ts +411 -0
- package/tests/learning/trajectory-sources.test.ts +12 -4
- package/tests/learning/unified-pipeline-efficacy.test.ts +232 -0
- package/tests/learning/unified-pipeline.test.ts +322 -0
- package/tests/mcp/playbook-server.test.ts +6 -1
- package/tests/memory/candidate-retrieval.test.ts +167 -0
- 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/meta.test.ts +399 -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 +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/evaluator.test.ts +257 -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/verification-runner.test.ts +357 -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/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/error-classifier.test.ts +149 -0
- package/tests/utils/partitioned-store.test.ts +230 -0
- package/tests/utils/trajectory-helpers.test.ts +163 -0
- package/tests/workspace/efficacy-toolkit.test.ts +404 -0
- package/tests/workspace/full-flow.test.ts +10 -4
- package/tests/workspace/runner.test.ts +10 -4
- package/tests/workspace/templates/playbook-efficacy.test.ts +377 -0
- 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,588 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SqlitePersistence — Unified SQLite database for all system-internal state.
|
|
3
|
+
*
|
|
4
|
+
* Single database file at `{baseDir}/cognitive-core.db` (configurable).
|
|
5
|
+
* Replaces JsonStore/PartitionedStore for system-internal data.
|
|
6
|
+
*
|
|
7
|
+
* Agent-accessible data (knowledge notes, published skills) stays as files.
|
|
8
|
+
* This DB is the system's internal brain — experiences, playbooks, causal edges,
|
|
9
|
+
* meta state, routing weights, vector embeddings.
|
|
10
|
+
*/
|
|
11
|
+
import Database from 'better-sqlite3';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { mkdirSync, existsSync } from 'node:fs';
|
|
14
|
+
import { toISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, fromISO } from './serializers.js';
|
|
15
|
+
// Re-export serializers for use by consumers
|
|
16
|
+
export { toISO, toJSON, fromJSON, toInt, fromInt, embeddingToBlob, blobToEmbedding, fromISO };
|
|
17
|
+
const DEFAULT_CONFIG = {
|
|
18
|
+
baseDir: '.atlas',
|
|
19
|
+
dbName: 'cognitive-core.db',
|
|
20
|
+
enableWAL: true,
|
|
21
|
+
vectorDimension: 0,
|
|
22
|
+
};
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// SqlitePersistence class
|
|
25
|
+
// ============================================================================
|
|
26
|
+
export class SqlitePersistence {
|
|
27
|
+
db;
|
|
28
|
+
config;
|
|
29
|
+
initialized = false;
|
|
30
|
+
// Cached prepared statements (lazy-initialized)
|
|
31
|
+
stmts = {};
|
|
32
|
+
constructor(config) {
|
|
33
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Initialize: open DB, run schema DDL, run migration if needed.
|
|
37
|
+
*/
|
|
38
|
+
async init() {
|
|
39
|
+
if (this.initialized)
|
|
40
|
+
return;
|
|
41
|
+
const dir = this.config.baseDir;
|
|
42
|
+
if (!existsSync(dir)) {
|
|
43
|
+
mkdirSync(dir, { recursive: true });
|
|
44
|
+
}
|
|
45
|
+
const dbPath = join(dir, this.config.dbName);
|
|
46
|
+
this.db = new Database(dbPath);
|
|
47
|
+
// PRAGMAs
|
|
48
|
+
if (this.config.enableWAL) {
|
|
49
|
+
this.db.pragma('journal_mode = WAL');
|
|
50
|
+
}
|
|
51
|
+
this.db.pragma('foreign_keys = ON');
|
|
52
|
+
this.db.pragma('busy_timeout = 5000');
|
|
53
|
+
this.createSchema();
|
|
54
|
+
this.initialized = true;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get the raw database connection (for SqliteVectorStore sharing).
|
|
58
|
+
*/
|
|
59
|
+
getDatabase() {
|
|
60
|
+
if (!this.initialized)
|
|
61
|
+
throw new Error('SqlitePersistence not initialized');
|
|
62
|
+
return this.db;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Run a function inside a transaction.
|
|
66
|
+
*/
|
|
67
|
+
transaction(fn) {
|
|
68
|
+
const tx = this.db.transaction(fn);
|
|
69
|
+
return tx();
|
|
70
|
+
}
|
|
71
|
+
// ==========================================================================
|
|
72
|
+
// Schema DDL
|
|
73
|
+
// ==========================================================================
|
|
74
|
+
createSchema() {
|
|
75
|
+
this.db.exec(`
|
|
76
|
+
CREATE TABLE IF NOT EXISTS experiences (
|
|
77
|
+
id TEXT PRIMARY KEY,
|
|
78
|
+
task_input TEXT NOT NULL,
|
|
79
|
+
solution_output TEXT NOT NULL,
|
|
80
|
+
feedback TEXT NOT NULL,
|
|
81
|
+
success INTEGER NOT NULL,
|
|
82
|
+
domain TEXT NOT NULL,
|
|
83
|
+
embedding BLOB,
|
|
84
|
+
trajectory_id TEXT NOT NULL,
|
|
85
|
+
usage_count INTEGER NOT NULL DEFAULT 0,
|
|
86
|
+
access_score REAL NOT NULL DEFAULT 0,
|
|
87
|
+
retrieval_count INTEGER NOT NULL DEFAULT 0,
|
|
88
|
+
tier TEXT NOT NULL DEFAULT 'hot',
|
|
89
|
+
compressed TEXT,
|
|
90
|
+
metadata TEXT NOT NULL DEFAULT '{}',
|
|
91
|
+
created_at TEXT NOT NULL,
|
|
92
|
+
last_accessed_at TEXT
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_domain ON experiences(domain);
|
|
96
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_trajectory ON experiences(trajectory_id);
|
|
97
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_success ON experiences(success);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_tier ON experiences(tier);
|
|
99
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_access_score ON experiences(access_score);
|
|
100
|
+
CREATE INDEX IF NOT EXISTS idx_experiences_created_at ON experiences(created_at);
|
|
101
|
+
|
|
102
|
+
CREATE TABLE IF NOT EXISTS playbooks (
|
|
103
|
+
id TEXT PRIMARY KEY,
|
|
104
|
+
name TEXT NOT NULL,
|
|
105
|
+
confidence REAL NOT NULL DEFAULT 0.3,
|
|
106
|
+
complexity TEXT NOT NULL DEFAULT 'moderate',
|
|
107
|
+
estimated_effort INTEGER NOT NULL DEFAULT 3,
|
|
108
|
+
primary_domain TEXT,
|
|
109
|
+
success_count INTEGER NOT NULL DEFAULT 0,
|
|
110
|
+
failure_count INTEGER NOT NULL DEFAULT 0,
|
|
111
|
+
version TEXT NOT NULL DEFAULT '1.0.0',
|
|
112
|
+
origin TEXT,
|
|
113
|
+
applicability TEXT NOT NULL,
|
|
114
|
+
guidance TEXT NOT NULL,
|
|
115
|
+
verification TEXT NOT NULL DEFAULT '{}',
|
|
116
|
+
evolution TEXT NOT NULL DEFAULT '{}',
|
|
117
|
+
provenance TEXT,
|
|
118
|
+
embedding BLOB,
|
|
119
|
+
created_at TEXT NOT NULL,
|
|
120
|
+
updated_at TEXT NOT NULL
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
CREATE INDEX IF NOT EXISTS idx_playbooks_name ON playbooks(name);
|
|
124
|
+
CREATE INDEX IF NOT EXISTS idx_playbooks_confidence ON playbooks(confidence);
|
|
125
|
+
CREATE INDEX IF NOT EXISTS idx_playbooks_primary_domain ON playbooks(primary_domain);
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_playbooks_origin ON playbooks(origin);
|
|
127
|
+
|
|
128
|
+
CREATE TABLE IF NOT EXISTS playbook_versions (
|
|
129
|
+
playbook_id TEXT NOT NULL,
|
|
130
|
+
version TEXT NOT NULL,
|
|
131
|
+
playbook_snapshot TEXT NOT NULL,
|
|
132
|
+
changelog TEXT NOT NULL DEFAULT '',
|
|
133
|
+
created_at TEXT NOT NULL,
|
|
134
|
+
PRIMARY KEY (playbook_id, version)
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
CREATE TABLE IF NOT EXISTS reflexion_episodes (
|
|
138
|
+
id TEXT PRIMARY KEY,
|
|
139
|
+
trajectory_id TEXT NOT NULL,
|
|
140
|
+
task_summary TEXT NOT NULL,
|
|
141
|
+
outcome TEXT NOT NULL,
|
|
142
|
+
self_critique TEXT NOT NULL,
|
|
143
|
+
key_insights TEXT NOT NULL DEFAULT '[]',
|
|
144
|
+
strategy_assessment TEXT NOT NULL,
|
|
145
|
+
suggested_playbook_updates TEXT NOT NULL DEFAULT '[]',
|
|
146
|
+
domain TEXT NOT NULL,
|
|
147
|
+
created_at TEXT NOT NULL
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
CREATE INDEX IF NOT EXISTS idx_reflexion_trajectory ON reflexion_episodes(trajectory_id);
|
|
151
|
+
CREATE INDEX IF NOT EXISTS idx_reflexion_domain ON reflexion_episodes(domain);
|
|
152
|
+
CREATE INDEX IF NOT EXISTS idx_reflexion_outcome ON reflexion_episodes(outcome);
|
|
153
|
+
CREATE INDEX IF NOT EXISTS idx_reflexion_created_at ON reflexion_episodes(created_at);
|
|
154
|
+
|
|
155
|
+
CREATE TABLE IF NOT EXISTS causal_edges (
|
|
156
|
+
id TEXT PRIMARY KEY,
|
|
157
|
+
cause TEXT NOT NULL,
|
|
158
|
+
effect TEXT NOT NULL,
|
|
159
|
+
confidence REAL NOT NULL,
|
|
160
|
+
domain TEXT NOT NULL,
|
|
161
|
+
source_trajectory_ids TEXT NOT NULL DEFAULT '[]',
|
|
162
|
+
observed_count INTEGER NOT NULL DEFAULT 1,
|
|
163
|
+
created_at TEXT NOT NULL,
|
|
164
|
+
updated_at TEXT NOT NULL
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
CREATE INDEX IF NOT EXISTS idx_causal_domain ON causal_edges(domain);
|
|
168
|
+
CREATE INDEX IF NOT EXISTS idx_causal_confidence ON causal_edges(confidence);
|
|
169
|
+
|
|
170
|
+
CREATE TABLE IF NOT EXISTS meta_observations (
|
|
171
|
+
id TEXT PRIMARY KEY,
|
|
172
|
+
trajectory_id TEXT NOT NULL,
|
|
173
|
+
routing TEXT NOT NULL,
|
|
174
|
+
memory_usage TEXT NOT NULL,
|
|
175
|
+
execution TEXT NOT NULL,
|
|
176
|
+
outcome TEXT NOT NULL,
|
|
177
|
+
lessons TEXT NOT NULL,
|
|
178
|
+
routing_decision TEXT NOT NULL,
|
|
179
|
+
outcome_success INTEGER NOT NULL,
|
|
180
|
+
timestamp TEXT NOT NULL
|
|
181
|
+
);
|
|
182
|
+
|
|
183
|
+
CREATE INDEX IF NOT EXISTS idx_meta_obs_trajectory ON meta_observations(trajectory_id);
|
|
184
|
+
CREATE INDEX IF NOT EXISTS idx_meta_obs_routing ON meta_observations(routing_decision);
|
|
185
|
+
CREATE INDEX IF NOT EXISTS idx_meta_obs_outcome ON meta_observations(outcome_success);
|
|
186
|
+
CREATE INDEX IF NOT EXISTS idx_meta_obs_timestamp ON meta_observations(timestamp);
|
|
187
|
+
|
|
188
|
+
CREATE TABLE IF NOT EXISTS meta_strategies (
|
|
189
|
+
id TEXT PRIMARY KEY,
|
|
190
|
+
name TEXT NOT NULL UNIQUE,
|
|
191
|
+
condition TEXT NOT NULL,
|
|
192
|
+
adjustment TEXT NOT NULL,
|
|
193
|
+
application_count INTEGER NOT NULL DEFAULT 0,
|
|
194
|
+
success_rate REAL NOT NULL DEFAULT 0,
|
|
195
|
+
created_at TEXT NOT NULL,
|
|
196
|
+
updated_at TEXT NOT NULL
|
|
197
|
+
);
|
|
198
|
+
|
|
199
|
+
CREATE INDEX IF NOT EXISTS idx_meta_strategies_name ON meta_strategies(name);
|
|
200
|
+
|
|
201
|
+
CREATE TABLE IF NOT EXISTS system_state (
|
|
202
|
+
key TEXT PRIMARY KEY,
|
|
203
|
+
value TEXT NOT NULL,
|
|
204
|
+
updated_at TEXT NOT NULL
|
|
205
|
+
);
|
|
206
|
+
|
|
207
|
+
CREATE TABLE IF NOT EXISTS schema_version (
|
|
208
|
+
version INTEGER NOT NULL,
|
|
209
|
+
applied_at TEXT NOT NULL
|
|
210
|
+
);
|
|
211
|
+
`);
|
|
212
|
+
}
|
|
213
|
+
// ==========================================================================
|
|
214
|
+
// Prepared statement helpers
|
|
215
|
+
// ==========================================================================
|
|
216
|
+
stmt(name, sql) {
|
|
217
|
+
if (!this.stmts[name]) {
|
|
218
|
+
this.stmts[name] = this.db.prepare(sql);
|
|
219
|
+
}
|
|
220
|
+
return this.stmts[name];
|
|
221
|
+
}
|
|
222
|
+
// ==========================================================================
|
|
223
|
+
// Schema version
|
|
224
|
+
// ==========================================================================
|
|
225
|
+
getSchemaVersion() {
|
|
226
|
+
const row = this.db.prepare('SELECT MAX(version) as version FROM schema_version').get();
|
|
227
|
+
return row?.version ?? 0;
|
|
228
|
+
}
|
|
229
|
+
setSchemaVersion(version) {
|
|
230
|
+
this.stmt('set_schema_version', 'INSERT INTO schema_version (version, applied_at) VALUES (?, ?)').run(version, new Date().toISOString());
|
|
231
|
+
}
|
|
232
|
+
// ==========================================================================
|
|
233
|
+
// Experiences CRUD
|
|
234
|
+
// ==========================================================================
|
|
235
|
+
insertExperience(exp) {
|
|
236
|
+
this.stmt('insert_experience', `
|
|
237
|
+
INSERT OR REPLACE INTO experiences
|
|
238
|
+
(id, task_input, solution_output, feedback, success, domain, embedding,
|
|
239
|
+
trajectory_id, usage_count, access_score, retrieval_count, tier,
|
|
240
|
+
compressed, metadata, created_at, last_accessed_at)
|
|
241
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
242
|
+
`).run(exp.id, exp.taskInput, exp.solutionOutput, exp.feedback, toInt(exp.success), exp.domain, embeddingToBlob(exp.embedding), exp.trajectoryId, exp.usageCount, exp.accessScore, exp.retrievalCount, exp.tier ?? 'hot', toJSON(exp.compressed), toJSON(exp.metadata), toISO(exp.createdAt), toISO(exp.lastAccessedAt));
|
|
243
|
+
}
|
|
244
|
+
getExperience(id) {
|
|
245
|
+
return this.stmt('get_experience', 'SELECT * FROM experiences WHERE id = ?').get(id);
|
|
246
|
+
}
|
|
247
|
+
getAllExperiences() {
|
|
248
|
+
return this.stmt('get_all_experiences', 'SELECT * FROM experiences').all();
|
|
249
|
+
}
|
|
250
|
+
getExperiencesByDomain(domain) {
|
|
251
|
+
return this.stmt('get_experiences_by_domain', 'SELECT * FROM experiences WHERE domain = ?').all(domain);
|
|
252
|
+
}
|
|
253
|
+
getExperiencesByTrajectory(trajectoryId) {
|
|
254
|
+
return this.stmt('get_experiences_by_trajectory', 'SELECT * FROM experiences WHERE trajectory_id = ?').all(trajectoryId);
|
|
255
|
+
}
|
|
256
|
+
getExperienceIds() {
|
|
257
|
+
return this.stmt('get_experience_ids', 'SELECT id, task_input FROM experiences').all();
|
|
258
|
+
}
|
|
259
|
+
updateExperience(id, updates) {
|
|
260
|
+
// Build dynamic UPDATE — only set provided fields
|
|
261
|
+
const setClauses = [];
|
|
262
|
+
const values = [];
|
|
263
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
264
|
+
const col = camelToSnake(key);
|
|
265
|
+
setClauses.push(`${col} = ?`);
|
|
266
|
+
if (key === 'embedding') {
|
|
267
|
+
values.push(embeddingToBlob(value));
|
|
268
|
+
}
|
|
269
|
+
else if (key === 'success') {
|
|
270
|
+
values.push(toInt(value));
|
|
271
|
+
}
|
|
272
|
+
else if (value instanceof Date) {
|
|
273
|
+
values.push(toISO(value));
|
|
274
|
+
}
|
|
275
|
+
else if (typeof value === 'object' && value !== null) {
|
|
276
|
+
values.push(toJSON(value));
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
values.push(value);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
if (setClauses.length === 0)
|
|
283
|
+
return;
|
|
284
|
+
values.push(id);
|
|
285
|
+
this.db.prepare(`UPDATE experiences SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
|
|
286
|
+
}
|
|
287
|
+
deleteExperience(id) {
|
|
288
|
+
const result = this.stmt('delete_experience', 'DELETE FROM experiences WHERE id = ?').run(id);
|
|
289
|
+
return result.changes > 0;
|
|
290
|
+
}
|
|
291
|
+
deleteExperiencesWhere(whereClause, params = []) {
|
|
292
|
+
const result = this.db.prepare(`DELETE FROM experiences WHERE ${whereClause}`).run(...params);
|
|
293
|
+
return result.changes;
|
|
294
|
+
}
|
|
295
|
+
getExperienceCount() {
|
|
296
|
+
const row = this.stmt('count_experiences', 'SELECT COUNT(*) as count FROM experiences').get();
|
|
297
|
+
return row.count;
|
|
298
|
+
}
|
|
299
|
+
// ==========================================================================
|
|
300
|
+
// Playbooks CRUD
|
|
301
|
+
// ==========================================================================
|
|
302
|
+
insertPlaybook(pb) {
|
|
303
|
+
this.stmt('insert_playbook', `
|
|
304
|
+
INSERT OR REPLACE INTO playbooks
|
|
305
|
+
(id, name, confidence, complexity, estimated_effort, primary_domain,
|
|
306
|
+
success_count, failure_count, version, origin,
|
|
307
|
+
applicability, guidance, verification, evolution, provenance,
|
|
308
|
+
embedding, created_at, updated_at)
|
|
309
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
310
|
+
`).run(pb.id, pb.name, pb.confidence, pb.complexity, pb.estimatedEffort, pb.applicability.domains?.[0] ?? null, pb.evolution.successCount, pb.evolution.failureCount, pb.evolution.version, pb.provenance?.origin ?? null, toJSON(pb.applicability), toJSON(pb.guidance), toJSON(pb.verification), toJSON(pb.evolution), pb.provenance ? toJSON(pb.provenance) : null, embeddingToBlob(pb.embedding), toISO(pb.createdAt), toISO(pb.updatedAt));
|
|
311
|
+
}
|
|
312
|
+
getPlaybook(id) {
|
|
313
|
+
return this.stmt('get_playbook', 'SELECT * FROM playbooks WHERE id = ?').get(id);
|
|
314
|
+
}
|
|
315
|
+
getAllPlaybooks() {
|
|
316
|
+
return this.stmt('get_all_playbooks', 'SELECT * FROM playbooks').all();
|
|
317
|
+
}
|
|
318
|
+
getPlaybooksByDomain(domain) {
|
|
319
|
+
return this.stmt('get_playbooks_by_domain', 'SELECT * FROM playbooks WHERE primary_domain = ?').all(domain);
|
|
320
|
+
}
|
|
321
|
+
getPlaybookIds() {
|
|
322
|
+
return this.stmt('get_playbook_ids', 'SELECT id, applicability FROM playbooks').all();
|
|
323
|
+
}
|
|
324
|
+
updatePlaybook(id, updates) {
|
|
325
|
+
const setClauses = [];
|
|
326
|
+
const values = [];
|
|
327
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
328
|
+
const col = camelToSnake(key);
|
|
329
|
+
setClauses.push(`${col} = ?`);
|
|
330
|
+
if (key === 'embedding') {
|
|
331
|
+
values.push(embeddingToBlob(value));
|
|
332
|
+
}
|
|
333
|
+
else if (value instanceof Date) {
|
|
334
|
+
values.push(toISO(value));
|
|
335
|
+
}
|
|
336
|
+
else if (typeof value === 'object' && value !== null) {
|
|
337
|
+
values.push(toJSON(value));
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
values.push(value);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
if (setClauses.length === 0)
|
|
344
|
+
return;
|
|
345
|
+
values.push(id);
|
|
346
|
+
this.db.prepare(`UPDATE playbooks SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
|
|
347
|
+
}
|
|
348
|
+
deletePlaybook(id) {
|
|
349
|
+
const result = this.stmt('delete_playbook', 'DELETE FROM playbooks WHERE id = ?').run(id);
|
|
350
|
+
return result.changes > 0;
|
|
351
|
+
}
|
|
352
|
+
getPlaybookCount() {
|
|
353
|
+
const row = this.stmt('count_playbooks', 'SELECT COUNT(*) as count FROM playbooks').get();
|
|
354
|
+
return row.count;
|
|
355
|
+
}
|
|
356
|
+
/** Snapshot current playbook state for version history. */
|
|
357
|
+
snapshotPlaybookVersion(playbookId, version, changelog = '') {
|
|
358
|
+
const pb = this.getPlaybook(playbookId);
|
|
359
|
+
if (!pb)
|
|
360
|
+
return;
|
|
361
|
+
this.stmt('snapshot_playbook_version', `
|
|
362
|
+
INSERT OR IGNORE INTO playbook_versions
|
|
363
|
+
(playbook_id, version, playbook_snapshot, changelog, created_at)
|
|
364
|
+
VALUES (?, ?, ?, ?, ?)
|
|
365
|
+
`).run(playbookId, version, JSON.stringify(pb), changelog, new Date().toISOString());
|
|
366
|
+
}
|
|
367
|
+
getPlaybookVersions(playbookId) {
|
|
368
|
+
return this.stmt('get_playbook_versions', 'SELECT * FROM playbook_versions WHERE playbook_id = ? ORDER BY created_at ASC').all(playbookId);
|
|
369
|
+
}
|
|
370
|
+
// ==========================================================================
|
|
371
|
+
// Reflexion Episodes CRUD
|
|
372
|
+
// ==========================================================================
|
|
373
|
+
insertReflexionEpisode(ep) {
|
|
374
|
+
this.stmt('insert_reflexion', `
|
|
375
|
+
INSERT OR REPLACE INTO reflexion_episodes
|
|
376
|
+
(id, trajectory_id, task_summary, outcome, self_critique,
|
|
377
|
+
key_insights, strategy_assessment, suggested_playbook_updates,
|
|
378
|
+
domain, created_at)
|
|
379
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
380
|
+
`).run(ep.id, ep.trajectoryId, ep.taskSummary, ep.outcome, ep.selfCritique, toJSON(ep.keyInsights, '[]'), ep.strategyAssessment, toJSON(ep.suggestedPlaybookUpdates, '[]'), ep.domain, toISO(ep.createdAt));
|
|
381
|
+
}
|
|
382
|
+
getReflexionEpisode(id) {
|
|
383
|
+
return this.stmt('get_reflexion', 'SELECT * FROM reflexion_episodes WHERE id = ?').get(id);
|
|
384
|
+
}
|
|
385
|
+
getReflexionEpisodes(options) {
|
|
386
|
+
let query = 'SELECT * FROM reflexion_episodes WHERE 1=1';
|
|
387
|
+
const params = [];
|
|
388
|
+
if (options?.domain) {
|
|
389
|
+
query += ' AND domain = ?';
|
|
390
|
+
params.push(options.domain);
|
|
391
|
+
}
|
|
392
|
+
if (options?.outcome) {
|
|
393
|
+
query += ' AND outcome = ?';
|
|
394
|
+
params.push(options.outcome);
|
|
395
|
+
}
|
|
396
|
+
query += ' ORDER BY created_at DESC';
|
|
397
|
+
if (options?.limit) {
|
|
398
|
+
query += ' LIMIT ?';
|
|
399
|
+
params.push(options.limit);
|
|
400
|
+
}
|
|
401
|
+
return this.db.prepare(query).all(...params);
|
|
402
|
+
}
|
|
403
|
+
getReflexionByTrajectory(trajectoryId) {
|
|
404
|
+
return this.stmt('get_reflexion_by_trajectory', 'SELECT * FROM reflexion_episodes WHERE trajectory_id = ?').all(trajectoryId);
|
|
405
|
+
}
|
|
406
|
+
// ==========================================================================
|
|
407
|
+
// Causal Edges CRUD
|
|
408
|
+
// ==========================================================================
|
|
409
|
+
insertCausalEdge(edge) {
|
|
410
|
+
this.stmt('insert_causal', `
|
|
411
|
+
INSERT OR REPLACE INTO causal_edges
|
|
412
|
+
(id, cause, effect, confidence, domain, source_trajectory_ids,
|
|
413
|
+
observed_count, created_at, updated_at)
|
|
414
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
415
|
+
`).run(edge.id, edge.cause, edge.effect, edge.confidence, edge.domain, toJSON(edge.sourceTrajectoryIds, '[]'), edge.observedCount, toISO(edge.createdAt), toISO(edge.updatedAt));
|
|
416
|
+
}
|
|
417
|
+
getCausalEdge(id) {
|
|
418
|
+
return this.stmt('get_causal', 'SELECT * FROM causal_edges WHERE id = ?').get(id);
|
|
419
|
+
}
|
|
420
|
+
getAllCausalEdges() {
|
|
421
|
+
return this.stmt('get_all_causal', 'SELECT * FROM causal_edges').all();
|
|
422
|
+
}
|
|
423
|
+
getCausalEdgesByDomain(domain) {
|
|
424
|
+
return this.stmt('get_causal_by_domain', 'SELECT * FROM causal_edges WHERE domain = ?').all(domain);
|
|
425
|
+
}
|
|
426
|
+
getCausalEdgeIds() {
|
|
427
|
+
return this.stmt('get_causal_ids', 'SELECT id, cause, effect FROM causal_edges').all();
|
|
428
|
+
}
|
|
429
|
+
updateCausalEdge(id, updates) {
|
|
430
|
+
const setClauses = [];
|
|
431
|
+
const values = [];
|
|
432
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
433
|
+
const col = camelToSnake(key);
|
|
434
|
+
setClauses.push(`${col} = ?`);
|
|
435
|
+
if (value instanceof Date) {
|
|
436
|
+
values.push(toISO(value));
|
|
437
|
+
}
|
|
438
|
+
else if (typeof value === 'object' && value !== null) {
|
|
439
|
+
values.push(toJSON(value));
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
values.push(value);
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (setClauses.length === 0)
|
|
446
|
+
return;
|
|
447
|
+
values.push(id);
|
|
448
|
+
this.db.prepare(`UPDATE causal_edges SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
|
|
449
|
+
}
|
|
450
|
+
deleteCausalEdge(id) {
|
|
451
|
+
const result = this.stmt('delete_causal', 'DELETE FROM causal_edges WHERE id = ?').run(id);
|
|
452
|
+
return result.changes > 0;
|
|
453
|
+
}
|
|
454
|
+
// ==========================================================================
|
|
455
|
+
// Meta Observations CRUD
|
|
456
|
+
// ==========================================================================
|
|
457
|
+
insertMetaObservation(obs) {
|
|
458
|
+
this.stmt('insert_meta_obs', `
|
|
459
|
+
INSERT OR REPLACE INTO meta_observations
|
|
460
|
+
(id, trajectory_id, routing, memory_usage, execution, outcome,
|
|
461
|
+
lessons, routing_decision, outcome_success, timestamp)
|
|
462
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
463
|
+
`).run(obs.id, obs.trajectoryId, toJSON(obs.routing), toJSON(obs.memoryUsage), toJSON(obs.execution), toJSON(obs.outcome), toJSON(obs.lessons), obs.routing.decision, toInt(obs.outcome.success), toISO(obs.timestamp));
|
|
464
|
+
}
|
|
465
|
+
getMetaObservation(id) {
|
|
466
|
+
return this.stmt('get_meta_obs', 'SELECT * FROM meta_observations WHERE id = ?').get(id);
|
|
467
|
+
}
|
|
468
|
+
getAllMetaObservations() {
|
|
469
|
+
return this.stmt('get_all_meta_obs', 'SELECT * FROM meta_observations ORDER BY timestamp DESC').all();
|
|
470
|
+
}
|
|
471
|
+
getMetaObservationsByRouting(decision) {
|
|
472
|
+
return this.stmt('get_meta_obs_by_routing', 'SELECT * FROM meta_observations WHERE routing_decision = ? ORDER BY timestamp DESC').all(decision);
|
|
473
|
+
}
|
|
474
|
+
deleteMetaObservationsBefore(cutoffDate) {
|
|
475
|
+
const result = this.stmt('delete_meta_obs_before', 'DELETE FROM meta_observations WHERE timestamp < ?').run(toISO(cutoffDate));
|
|
476
|
+
return result.changes;
|
|
477
|
+
}
|
|
478
|
+
getMetaObservationCount() {
|
|
479
|
+
const row = this.stmt('count_meta_obs', 'SELECT COUNT(*) as count FROM meta_observations').get();
|
|
480
|
+
return row.count;
|
|
481
|
+
}
|
|
482
|
+
/** Aggregate routing effectiveness: { decision: { total, successful } } */
|
|
483
|
+
aggregateRoutingEffectiveness() {
|
|
484
|
+
const rows = this.db.prepare(`
|
|
485
|
+
SELECT routing_decision, COUNT(*) as total, SUM(outcome_success) as successful
|
|
486
|
+
FROM meta_observations
|
|
487
|
+
GROUP BY routing_decision
|
|
488
|
+
`).all();
|
|
489
|
+
const result = {};
|
|
490
|
+
for (const row of rows) {
|
|
491
|
+
result[row.routing_decision] = { total: row.total, successful: row.successful };
|
|
492
|
+
}
|
|
493
|
+
return result;
|
|
494
|
+
}
|
|
495
|
+
// ==========================================================================
|
|
496
|
+
// Meta Strategies CRUD
|
|
497
|
+
// ==========================================================================
|
|
498
|
+
insertMetaStrategy(strategy) {
|
|
499
|
+
this.stmt('insert_meta_strategy', `
|
|
500
|
+
INSERT OR REPLACE INTO meta_strategies
|
|
501
|
+
(id, name, condition, adjustment, application_count, success_rate,
|
|
502
|
+
created_at, updated_at)
|
|
503
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
504
|
+
`).run(strategy.id, strategy.name, toJSON(strategy.condition), toJSON(strategy.adjustment), strategy.applicationCount, strategy.successRate, toISO(strategy.createdAt), toISO(strategy.updatedAt));
|
|
505
|
+
}
|
|
506
|
+
getMetaStrategy(id) {
|
|
507
|
+
return this.stmt('get_meta_strategy', 'SELECT * FROM meta_strategies WHERE id = ?').get(id);
|
|
508
|
+
}
|
|
509
|
+
getMetaStrategyByName(name) {
|
|
510
|
+
return this.stmt('get_meta_strategy_by_name', 'SELECT * FROM meta_strategies WHERE name = ?').get(name);
|
|
511
|
+
}
|
|
512
|
+
getAllMetaStrategies() {
|
|
513
|
+
return this.stmt('get_all_meta_strategies', 'SELECT * FROM meta_strategies').all();
|
|
514
|
+
}
|
|
515
|
+
updateMetaStrategy(id, updates) {
|
|
516
|
+
const setClauses = [];
|
|
517
|
+
const values = [];
|
|
518
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
519
|
+
const col = camelToSnake(key);
|
|
520
|
+
setClauses.push(`${col} = ?`);
|
|
521
|
+
if (value instanceof Date) {
|
|
522
|
+
values.push(toISO(value));
|
|
523
|
+
}
|
|
524
|
+
else if (typeof value === 'object' && value !== null) {
|
|
525
|
+
values.push(toJSON(value));
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
values.push(value);
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
if (setClauses.length === 0)
|
|
532
|
+
return;
|
|
533
|
+
values.push(id);
|
|
534
|
+
this.db.prepare(`UPDATE meta_strategies SET ${setClauses.join(', ')} WHERE id = ?`).run(...values);
|
|
535
|
+
}
|
|
536
|
+
deleteMetaStrategy(id) {
|
|
537
|
+
const result = this.stmt('delete_meta_strategy', 'DELETE FROM meta_strategies WHERE id = ?').run(id);
|
|
538
|
+
return result.changes > 0;
|
|
539
|
+
}
|
|
540
|
+
// ==========================================================================
|
|
541
|
+
// System State (key-value store for singleton blobs)
|
|
542
|
+
// ==========================================================================
|
|
543
|
+
getSystemState(key) {
|
|
544
|
+
const row = this.stmt('get_system_state', 'SELECT value FROM system_state WHERE key = ?').get(key);
|
|
545
|
+
if (!row)
|
|
546
|
+
return undefined;
|
|
547
|
+
return fromJSON(row.value);
|
|
548
|
+
}
|
|
549
|
+
setSystemState(key, value) {
|
|
550
|
+
this.stmt('set_system_state', `
|
|
551
|
+
INSERT OR REPLACE INTO system_state (key, value, updated_at)
|
|
552
|
+
VALUES (?, ?, ?)
|
|
553
|
+
`).run(key, toJSON(value), new Date().toISOString());
|
|
554
|
+
}
|
|
555
|
+
deleteSystemState(key) {
|
|
556
|
+
const result = this.stmt('delete_system_state', 'DELETE FROM system_state WHERE key = ?').run(key);
|
|
557
|
+
return result.changes > 0;
|
|
558
|
+
}
|
|
559
|
+
// ==========================================================================
|
|
560
|
+
// Lifecycle
|
|
561
|
+
// ==========================================================================
|
|
562
|
+
close() {
|
|
563
|
+
if (this.db) {
|
|
564
|
+
this.db.close();
|
|
565
|
+
}
|
|
566
|
+
this.initialized = false;
|
|
567
|
+
this.stmts = {};
|
|
568
|
+
}
|
|
569
|
+
get isInitialized() {
|
|
570
|
+
return this.initialized;
|
|
571
|
+
}
|
|
572
|
+
get dbPath() {
|
|
573
|
+
return join(this.config.baseDir, this.config.dbName);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
// ============================================================================
|
|
577
|
+
// Factory function
|
|
578
|
+
// ============================================================================
|
|
579
|
+
export function createSqlitePersistence(config) {
|
|
580
|
+
return new SqlitePersistence(config);
|
|
581
|
+
}
|
|
582
|
+
// ============================================================================
|
|
583
|
+
// Utility: camelCase to snake_case
|
|
584
|
+
// ============================================================================
|
|
585
|
+
function camelToSnake(str) {
|
|
586
|
+
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
587
|
+
}
|
|
588
|
+
//# sourceMappingURL=sqlite-persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-persistence.js","sourceRoot":"","sources":["../../src/persistence/sqlite-persistence.ts"],"names":[],"mappings":"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"}
|