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
package/src/memory/meta.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Meta Memory - Learning about learning
|
|
3
3
|
* Tracks routing decisions, memory effectiveness, and execution patterns
|
|
4
4
|
* to improve future learning and routing decisions
|
|
5
|
+
*
|
|
6
|
+
* Backed by SqlitePersistence for unified database storage.
|
|
5
7
|
*/
|
|
6
8
|
|
|
7
9
|
import type {
|
|
@@ -14,7 +16,8 @@ import type {
|
|
|
14
16
|
RoutingDecisionType,
|
|
15
17
|
} from '../types/index.js';
|
|
16
18
|
import { createMetaStrategy } from '../types/index.js';
|
|
17
|
-
import {
|
|
19
|
+
import type { SqlitePersistence, MetaObservationRow, MetaStrategyRow } from '../persistence/index.js';
|
|
20
|
+
import { fromJSON, fromISO } from '../persistence/index.js';
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Filter options for querying observations
|
|
@@ -27,32 +30,51 @@ export interface ObservationFilter {
|
|
|
27
30
|
limit?: number;
|
|
28
31
|
}
|
|
29
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Convert a MetaObservationRow to a MetaObservation.
|
|
35
|
+
*/
|
|
36
|
+
function rowToObservation(row: MetaObservationRow): MetaObservation {
|
|
37
|
+
return {
|
|
38
|
+
id: row.id,
|
|
39
|
+
trajectoryId: row.trajectory_id,
|
|
40
|
+
routing: fromJSON(row.routing, { decision: 'direct' as RoutingDecisionType, confidence: 0, reasoning: '' }),
|
|
41
|
+
memoryUsage: fromJSON(row.memory_usage, { experiencesRetrieved: 0, playbooksApplied: [], retrievalQuality: 'neutral' as const }),
|
|
42
|
+
execution: fromJSON(row.execution, { decompositionUsed: false, refinementIterations: 0, backtrackingOccurred: false, toolsUsed: [] }),
|
|
43
|
+
outcome: fromJSON(row.outcome, { success: false, quality: 'poor' as const, effortActual: 0, effortEstimate: 0 }),
|
|
44
|
+
lessons: fromJSON(row.lessons, { whatWorked: [], whatFailed: [], suggestions: [] }),
|
|
45
|
+
timestamp: fromISO(row.timestamp) ?? new Date(),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Convert a MetaStrategyRow to a MetaStrategy.
|
|
51
|
+
*/
|
|
52
|
+
function rowToStrategy(row: MetaStrategyRow): MetaStrategy {
|
|
53
|
+
return {
|
|
54
|
+
id: row.id,
|
|
55
|
+
name: row.name,
|
|
56
|
+
condition: fromJSON(row.condition, { taskCharacteristics: [], memoryState: [] }),
|
|
57
|
+
adjustment: fromJSON(row.adjustment, { routingBias: {}, retrievalModification: '', executionHint: '' }),
|
|
58
|
+
applicationCount: row.application_count,
|
|
59
|
+
successRate: row.success_rate,
|
|
60
|
+
createdAt: fromISO(row.created_at) ?? new Date(),
|
|
61
|
+
updatedAt: fromISO(row.updated_at) ?? new Date(),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
30
65
|
/**
|
|
31
66
|
* Meta Memory - Store for meta-learning observations and strategies
|
|
32
67
|
*/
|
|
33
68
|
export class MetaMemory {
|
|
34
|
-
private
|
|
35
|
-
private strategies: JsonStore<MetaStrategy>;
|
|
69
|
+
private persistence: SqlitePersistence;
|
|
36
70
|
private initialized = false;
|
|
37
71
|
|
|
38
|
-
constructor(
|
|
39
|
-
this.
|
|
40
|
-
baseDir,
|
|
41
|
-
'meta-observations',
|
|
42
|
-
{
|
|
43
|
-
autoSaveInterval: 60000,
|
|
44
|
-
pretty: true,
|
|
45
|
-
}
|
|
46
|
-
);
|
|
47
|
-
this.strategies = new JsonStore<MetaStrategy>(baseDir, 'meta-strategies', {
|
|
48
|
-
autoSaveInterval: 60000,
|
|
49
|
-
pretty: true,
|
|
50
|
-
});
|
|
72
|
+
constructor(persistence: SqlitePersistence) {
|
|
73
|
+
this.persistence = persistence;
|
|
51
74
|
}
|
|
52
75
|
|
|
53
76
|
async init(): Promise<void> {
|
|
54
77
|
if (this.initialized) return;
|
|
55
|
-
await Promise.all([this.observations.init(), this.strategies.init()]);
|
|
56
78
|
this.initialized = true;
|
|
57
79
|
}
|
|
58
80
|
|
|
@@ -63,8 +85,7 @@ export class MetaMemory {
|
|
|
63
85
|
*/
|
|
64
86
|
async recordObservation(observation: MetaObservation): Promise<void> {
|
|
65
87
|
await this.init();
|
|
66
|
-
this.
|
|
67
|
-
await this.observations.save(observation.id);
|
|
88
|
+
this.persistence.insertMetaObservation(observation);
|
|
68
89
|
}
|
|
69
90
|
|
|
70
91
|
/**
|
|
@@ -73,7 +94,7 @@ export class MetaMemory {
|
|
|
73
94
|
async getObservations(filter?: ObservationFilter): Promise<MetaObservation[]> {
|
|
74
95
|
await this.init();
|
|
75
96
|
|
|
76
|
-
let observations = this.
|
|
97
|
+
let observations = this.persistence.getAllMetaObservations().map(rowToObservation);
|
|
77
98
|
|
|
78
99
|
if (filter?.routingDecision) {
|
|
79
100
|
observations = observations.filter(
|
|
@@ -98,11 +119,6 @@ export class MetaMemory {
|
|
|
98
119
|
);
|
|
99
120
|
}
|
|
100
121
|
|
|
101
|
-
// Sort by timestamp descending (most recent first)
|
|
102
|
-
observations.sort(
|
|
103
|
-
(a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
|
|
104
|
-
);
|
|
105
|
-
|
|
106
122
|
if (filter?.limit) {
|
|
107
123
|
observations = observations.slice(0, filter.limit);
|
|
108
124
|
}
|
|
@@ -117,8 +133,8 @@ export class MetaMemory {
|
|
|
117
133
|
trajectoryId: string
|
|
118
134
|
): Promise<MetaObservation | undefined> {
|
|
119
135
|
await this.init();
|
|
120
|
-
return this.
|
|
121
|
-
.
|
|
136
|
+
return this.persistence.getAllMetaObservations()
|
|
137
|
+
.map(rowToObservation)
|
|
122
138
|
.find((o) => o.trajectoryId === trajectoryId);
|
|
123
139
|
}
|
|
124
140
|
|
|
@@ -126,29 +142,23 @@ export class MetaMemory {
|
|
|
126
142
|
|
|
127
143
|
/**
|
|
128
144
|
* Analyze routing effectiveness
|
|
129
|
-
* Returns: which routing decisions lead to success in which contexts
|
|
130
145
|
*/
|
|
131
146
|
async analyzeRoutingEffectiveness(): Promise<RoutingAnalysis> {
|
|
132
147
|
await this.init();
|
|
133
148
|
|
|
149
|
+
// Use SQL aggregation for efficiency
|
|
150
|
+
const raw = this.persistence.aggregateRoutingEffectiveness();
|
|
151
|
+
|
|
134
152
|
const byDecision: Record<string, { total: number; successful: number }> = {
|
|
135
153
|
adapt: { total: 0, successful: 0 },
|
|
136
154
|
direct: { total: 0, successful: 0 },
|
|
137
155
|
explore: { total: 0, successful: 0 },
|
|
138
156
|
fallback: { total: 0, successful: 0 },
|
|
157
|
+
...raw,
|
|
139
158
|
};
|
|
140
159
|
|
|
141
|
-
for (const observation of this.observations.values()) {
|
|
142
|
-
const decision = observation.routing.decision;
|
|
143
|
-
byDecision[decision].total++;
|
|
144
|
-
if (observation.outcome.success) {
|
|
145
|
-
byDecision[decision].successful++;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
160
|
const recommendations: string[] = [];
|
|
150
161
|
|
|
151
|
-
// Generate recommendations based on analysis
|
|
152
162
|
for (const [decision, stats] of Object.entries(byDecision)) {
|
|
153
163
|
if (stats.total >= 5) {
|
|
154
164
|
const successRate = stats.successful / stats.total;
|
|
@@ -169,7 +179,6 @@ export class MetaMemory {
|
|
|
169
179
|
|
|
170
180
|
/**
|
|
171
181
|
* Analyze memory retrieval quality
|
|
172
|
-
* Returns: which retrieval patterns help vs mislead
|
|
173
182
|
*/
|
|
174
183
|
async analyzeRetrievalQuality(): Promise<RetrievalAnalysis> {
|
|
175
184
|
await this.init();
|
|
@@ -177,9 +186,10 @@ export class MetaMemory {
|
|
|
177
186
|
const helpfulPatterns: Map<string, number> = new Map();
|
|
178
187
|
const misleadingPatterns: Map<string, number> = new Map();
|
|
179
188
|
|
|
180
|
-
for (const
|
|
181
|
-
const
|
|
182
|
-
const
|
|
189
|
+
for (const row of this.persistence.getAllMetaObservations()) {
|
|
190
|
+
const obs = rowToObservation(row);
|
|
191
|
+
const quality = obs.memoryUsage.retrievalQuality;
|
|
192
|
+
const playbooks = obs.memoryUsage.playbooksApplied;
|
|
183
193
|
|
|
184
194
|
for (const playbookId of playbooks) {
|
|
185
195
|
if (quality === 'helpful') {
|
|
@@ -198,7 +208,6 @@ export class MetaMemory {
|
|
|
198
208
|
|
|
199
209
|
const recommendations: string[] = [];
|
|
200
210
|
|
|
201
|
-
// Find consistently misleading playbooks
|
|
202
211
|
for (const [playbookId, count] of misleadingPatterns) {
|
|
203
212
|
const helpfulCount = helpfulPatterns.get(playbookId) ?? 0;
|
|
204
213
|
if (count > helpfulCount && count >= 3) {
|
|
@@ -217,13 +226,13 @@ export class MetaMemory {
|
|
|
217
226
|
|
|
218
227
|
/**
|
|
219
228
|
* Generate meta-strategies from observations
|
|
220
|
-
* Called periodically to distill learning patterns
|
|
221
229
|
*/
|
|
222
230
|
async generateMetaStrategies(): Promise<MetaStrategy[]> {
|
|
223
231
|
await this.init();
|
|
224
232
|
|
|
225
233
|
const newStrategies: MetaStrategy[] = [];
|
|
226
|
-
const observations = this.
|
|
234
|
+
const observations = this.persistence.getAllMetaObservations().map(rowToObservation);
|
|
235
|
+
const existingStrategies = this.persistence.getAllMetaStrategies().map(rowToStrategy);
|
|
227
236
|
|
|
228
237
|
// Pattern 1: Low-confidence routing tends to need exploration
|
|
229
238
|
const lowConfidenceObs = observations.filter(
|
|
@@ -234,9 +243,7 @@ export class MetaMemory {
|
|
|
234
243
|
(lowConfidenceObs.length || 1);
|
|
235
244
|
|
|
236
245
|
if (lowConfidenceObs.length >= 5 && lowConfidenceSuccessRate < 0.4) {
|
|
237
|
-
const existing =
|
|
238
|
-
.values()
|
|
239
|
-
.find((s) => s.name === 'low-confidence-explore');
|
|
246
|
+
const existing = existingStrategies.find((s) => s.name === 'low-confidence-explore');
|
|
240
247
|
if (!existing) {
|
|
241
248
|
newStrategies.push(
|
|
242
249
|
createMetaStrategy({
|
|
@@ -264,9 +271,7 @@ export class MetaMemory {
|
|
|
264
271
|
(multiFileObs.length || 1);
|
|
265
272
|
|
|
266
273
|
if (multiFileObs.length >= 5 && multiFileSuccessRate > 0.7) {
|
|
267
|
-
const existing =
|
|
268
|
-
.values()
|
|
269
|
-
.find((s) => s.name === 'decomposition-effective');
|
|
274
|
+
const existing = existingStrategies.find((s) => s.name === 'decomposition-effective');
|
|
270
275
|
if (!existing) {
|
|
271
276
|
newStrategies.push(
|
|
272
277
|
createMetaStrategy({
|
|
@@ -294,9 +299,7 @@ export class MetaMemory {
|
|
|
294
299
|
(refinedObs.length || 1);
|
|
295
300
|
|
|
296
301
|
if (refinedObs.length >= 5 && refinedSuccessRate > 0.6) {
|
|
297
|
-
const existing =
|
|
298
|
-
.values()
|
|
299
|
-
.find((s) => s.name === 'refinement-beneficial');
|
|
302
|
+
const existing = existingStrategies.find((s) => s.name === 'refinement-beneficial');
|
|
300
303
|
if (!existing) {
|
|
301
304
|
newStrategies.push(
|
|
302
305
|
createMetaStrategy({
|
|
@@ -317,8 +320,7 @@ export class MetaMemory {
|
|
|
317
320
|
|
|
318
321
|
// Save new strategies
|
|
319
322
|
for (const strategy of newStrategies) {
|
|
320
|
-
this.
|
|
321
|
-
await this.strategies.save(strategy.id);
|
|
323
|
+
this.persistence.insertMetaStrategy(strategy);
|
|
322
324
|
}
|
|
323
325
|
|
|
324
326
|
return newStrategies;
|
|
@@ -334,8 +336,9 @@ export class MetaMemory {
|
|
|
334
336
|
|
|
335
337
|
const applicable: MetaStrategy[] = [];
|
|
336
338
|
|
|
337
|
-
for (const
|
|
338
|
-
|
|
339
|
+
for (const row of this.persistence.getAllMetaStrategies()) {
|
|
340
|
+
const strategy = rowToStrategy(row);
|
|
341
|
+
|
|
339
342
|
const taskMatch =
|
|
340
343
|
strategy.condition.taskCharacteristics.length === 0 ||
|
|
341
344
|
strategy.condition.taskCharacteristics.some((tc) =>
|
|
@@ -344,7 +347,6 @@ export class MetaMemory {
|
|
|
344
347
|
)
|
|
345
348
|
);
|
|
346
349
|
|
|
347
|
-
// Check if memory state matches
|
|
348
350
|
const memoryMatch =
|
|
349
351
|
strategy.condition.memoryState.length === 0 ||
|
|
350
352
|
strategy.condition.memoryState.some((ms) =>
|
|
@@ -369,17 +371,17 @@ export class MetaMemory {
|
|
|
369
371
|
success: boolean
|
|
370
372
|
): Promise<void> {
|
|
371
373
|
await this.init();
|
|
372
|
-
const
|
|
373
|
-
if (!
|
|
374
|
+
const row = this.persistence.getMetaStrategy(strategyId);
|
|
375
|
+
if (!row) return;
|
|
374
376
|
|
|
377
|
+
const strategy = rowToStrategy(row);
|
|
375
378
|
strategy.applicationCount++;
|
|
376
379
|
const alpha = 0.1;
|
|
377
380
|
strategy.successRate =
|
|
378
381
|
strategy.successRate * (1 - alpha) + (success ? 1 : 0) * alpha;
|
|
379
382
|
strategy.updatedAt = new Date();
|
|
380
383
|
|
|
381
|
-
this.
|
|
382
|
-
await this.strategies.save(strategyId);
|
|
384
|
+
this.persistence.insertMetaStrategy(strategy); // Write-through
|
|
383
385
|
}
|
|
384
386
|
|
|
385
387
|
// === LIFECYCLE ===
|
|
@@ -389,8 +391,7 @@ export class MetaMemory {
|
|
|
389
391
|
*/
|
|
390
392
|
async addStrategy(strategy: MetaStrategy): Promise<void> {
|
|
391
393
|
await this.init();
|
|
392
|
-
this.
|
|
393
|
-
await this.strategies.save(strategy.id);
|
|
394
|
+
this.persistence.insertMetaStrategy(strategy);
|
|
394
395
|
}
|
|
395
396
|
|
|
396
397
|
/**
|
|
@@ -398,7 +399,8 @@ export class MetaMemory {
|
|
|
398
399
|
*/
|
|
399
400
|
async getStrategy(id: string): Promise<MetaStrategy | undefined> {
|
|
400
401
|
await this.init();
|
|
401
|
-
|
|
402
|
+
const row = this.persistence.getMetaStrategy(id);
|
|
403
|
+
return row ? rowToStrategy(row) : undefined;
|
|
402
404
|
}
|
|
403
405
|
|
|
404
406
|
/**
|
|
@@ -406,7 +408,7 @@ export class MetaMemory {
|
|
|
406
408
|
*/
|
|
407
409
|
async getAllStrategies(): Promise<MetaStrategy[]> {
|
|
408
410
|
await this.init();
|
|
409
|
-
return this.
|
|
411
|
+
return this.persistence.getAllMetaStrategies().map(rowToStrategy);
|
|
410
412
|
}
|
|
411
413
|
|
|
412
414
|
/**
|
|
@@ -415,9 +417,9 @@ export class MetaMemory {
|
|
|
415
417
|
async getStats(): Promise<MetaStats> {
|
|
416
418
|
await this.init();
|
|
417
419
|
|
|
418
|
-
const observations = this.
|
|
420
|
+
const observations = this.persistence.getAllMetaObservations().map(rowToObservation);
|
|
419
421
|
const totalObservations = observations.length;
|
|
420
|
-
const totalStrategies = this.
|
|
422
|
+
const totalStrategies = this.persistence.getAllMetaStrategies().length;
|
|
421
423
|
|
|
422
424
|
const observationsByRouting: Record<RoutingDecisionType, number> = {
|
|
423
425
|
adapt: 0,
|
|
@@ -435,19 +437,9 @@ export class MetaMemory {
|
|
|
435
437
|
const averageSuccessRate =
|
|
436
438
|
totalObservations > 0 ? successCount / totalObservations : 0;
|
|
437
439
|
|
|
438
|
-
// Determine trend from recent observations
|
|
439
|
-
const recent = observations
|
|
440
|
-
|
|
441
|
-
(a, b) =>
|
|
442
|
-
new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
|
|
443
|
-
)
|
|
444
|
-
.slice(0, 10);
|
|
445
|
-
const older = observations
|
|
446
|
-
.sort(
|
|
447
|
-
(a, b) =>
|
|
448
|
-
new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
|
|
449
|
-
)
|
|
450
|
-
.slice(10, 20);
|
|
440
|
+
// Determine trend from recent observations (already sorted by timestamp DESC from SQL)
|
|
441
|
+
const recent = observations.slice(0, 10);
|
|
442
|
+
const older = observations.slice(10, 20);
|
|
451
443
|
|
|
452
444
|
let recentTrend: 'improving' | 'stable' | 'declining' = 'stable';
|
|
453
445
|
if (recent.length >= 5 && older.length >= 5) {
|
|
@@ -476,31 +468,21 @@ export class MetaMemory {
|
|
|
476
468
|
*/
|
|
477
469
|
async pruneOldObservations(maxAge: number = 30 * 24 * 60 * 60 * 1000): Promise<number> {
|
|
478
470
|
await this.init();
|
|
479
|
-
|
|
480
471
|
const cutoff = new Date(Date.now() - maxAge);
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
for (const observation of this.observations.values()) {
|
|
484
|
-
if (new Date(observation.timestamp) < cutoff) {
|
|
485
|
-
this.observations.delete(observation.id);
|
|
486
|
-
pruned++;
|
|
487
|
-
}
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
return pruned;
|
|
472
|
+
return this.persistence.deleteMetaObservationsBefore(cutoff);
|
|
491
473
|
}
|
|
492
474
|
|
|
493
475
|
/**
|
|
494
|
-
* Close the stores
|
|
476
|
+
* Close the stores (no-op — SqlitePersistence lifecycle is managed externally)
|
|
495
477
|
*/
|
|
496
478
|
async close(): Promise<void> {
|
|
497
|
-
|
|
479
|
+
// SqlitePersistence lifecycle is managed by MemorySystem/Atlas
|
|
498
480
|
}
|
|
499
481
|
}
|
|
500
482
|
|
|
501
483
|
/**
|
|
502
484
|
* Create a meta memory store
|
|
503
485
|
*/
|
|
504
|
-
export function createMetaMemory(
|
|
505
|
-
return new MetaMemory(
|
|
486
|
+
export function createMetaMemory(persistence: SqlitePersistence): MetaMemory {
|
|
487
|
+
return new MetaMemory(persistence);
|
|
506
488
|
}
|