agentdb 1.0.12 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +196 -838
- package/dist/benchmarks/comprehensive-benchmark.js +664 -0
- package/dist/benchmarks/frontier-benchmark.js +419 -0
- package/dist/benchmarks/reflexion-benchmark.js +370 -0
- package/dist/cli/agentdb-cli.d.ts +117 -0
- package/dist/cli/agentdb-cli.d.ts.map +1 -0
- package/dist/cli/agentdb-cli.js +718 -0
- package/dist/cli/agentdb-cli.js.map +1 -0
- package/dist/controllers/CausalMemoryGraph.d.ts +125 -0
- package/dist/controllers/CausalMemoryGraph.d.ts.map +1 -0
- package/dist/controllers/CausalMemoryGraph.js +323 -0
- package/dist/controllers/CausalMemoryGraph.js.map +1 -0
- package/dist/controllers/CausalRecall.d.ts +111 -0
- package/dist/controllers/CausalRecall.d.ts.map +1 -0
- package/dist/controllers/CausalRecall.js +282 -0
- package/dist/controllers/CausalRecall.js.map +1 -0
- package/dist/controllers/EmbeddingService.d.ts +37 -0
- package/dist/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/controllers/EmbeddingService.js +119 -0
- package/dist/controllers/EmbeddingService.js.map +1 -0
- package/dist/controllers/ExplainableRecall.d.ts +138 -0
- package/dist/controllers/ExplainableRecall.d.ts.map +1 -0
- package/dist/controllers/ExplainableRecall.js +388 -0
- package/dist/controllers/ExplainableRecall.js.map +1 -0
- package/dist/controllers/NightlyLearner.d.ts +113 -0
- package/dist/controllers/NightlyLearner.d.ts.map +1 -0
- package/dist/controllers/NightlyLearner.js +383 -0
- package/dist/controllers/NightlyLearner.js.map +1 -0
- package/dist/controllers/ReflexionMemory.d.ts +84 -0
- package/dist/controllers/ReflexionMemory.d.ts.map +1 -0
- package/dist/controllers/ReflexionMemory.js +240 -0
- package/dist/controllers/ReflexionMemory.js.map +1 -0
- package/dist/controllers/SkillLibrary.d.ts +96 -0
- package/dist/controllers/SkillLibrary.d.ts.map +1 -0
- package/dist/controllers/SkillLibrary.js +277 -0
- package/dist/controllers/SkillLibrary.js.map +1 -0
- package/dist/controllers/frontier-index.d.ts +14 -0
- package/dist/controllers/frontier-index.d.ts.map +1 -0
- package/dist/controllers/frontier-index.js +10 -0
- package/dist/controllers/frontier-index.js.map +1 -0
- package/dist/controllers/index.d.ts +12 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +9 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/optimizations/BatchOperations.d.ts +61 -0
- package/dist/optimizations/BatchOperations.d.ts.map +1 -0
- package/dist/optimizations/BatchOperations.js +199 -0
- package/dist/optimizations/BatchOperations.js.map +1 -0
- package/dist/optimizations/QueryOptimizer.d.ts +82 -0
- package/dist/optimizations/QueryOptimizer.d.ts.map +1 -0
- package/dist/optimizations/QueryOptimizer.js +226 -0
- package/dist/optimizations/QueryOptimizer.js.map +1 -0
- package/dist/optimizations/index.d.ts +10 -0
- package/dist/optimizations/index.d.ts.map +1 -0
- package/dist/optimizations/index.js +8 -0
- package/dist/optimizations/index.js.map +1 -0
- package/dist/schemas/frontier-schema.sql +341 -0
- package/dist/schemas/schema.sql +382 -0
- package/dist/tests/frontier-features.test.js +665 -0
- package/package.json +54 -117
- package/src/cli/agentdb-cli.ts +861 -0
- package/src/cli/examples.sh +83 -0
- package/src/controllers/CausalMemoryGraph.ts +504 -0
- package/src/controllers/CausalRecall.ts +395 -0
- package/src/controllers/EmbeddingService.ts +141 -0
- package/src/controllers/ExplainableRecall.ts +577 -0
- package/src/controllers/NightlyLearner.ts +475 -0
- package/src/controllers/ReflexionMemory.ts +349 -0
- package/src/controllers/SkillLibrary.ts +391 -0
- package/src/controllers/frontier-index.ts +35 -0
- package/src/controllers/index.ts +13 -0
- package/src/optimizations/BatchOperations.ts +292 -0
- package/src/optimizations/QueryOptimizer.ts +294 -0
- package/src/optimizations/index.ts +11 -0
- package/src/schemas/frontier-schema.sql +341 -0
- package/src/schemas/schema.sql +382 -0
- package/CHANGELOG.md +0 -166
- package/LICENSE +0 -38
- package/LICENSE-APACHE +0 -190
- package/LICENSE-MIT +0 -21
- package/bin/agentdb.js +0 -733
- package/bin/benchmark.js +0 -165
- package/bin/plugin-cli-wrapper.mjs +0 -21
- package/dist/agentdb.js +0 -5352
- package/dist/agentdb.js.map +0 -7
- package/dist/agentdb.min.js +0 -143
- package/dist/agentdb.min.js.map +0 -7
- package/dist/cache/query-cache.d.ts +0 -105
- package/dist/cache/query-cache.d.ts.map +0 -1
- package/dist/cache/query-cache.js +0 -224
- package/dist/cache/query-cache.js.map +0 -1
- package/dist/cache/query-cache.mjs +0 -219
- package/dist/cli/cache/query-cache.d.ts +0 -104
- package/dist/cli/cache/query-cache.js +0 -244
- package/dist/cli/cli/db-commands.d.ts +0 -48
- package/dist/cli/cli/db-commands.js +0 -613
- package/dist/cli/commands.d.ts +0 -7
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -113
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/commands.mjs +0 -104
- package/dist/cli/core/backend-interface.d.ts +0 -70
- package/dist/cli/core/backend-interface.js +0 -15
- package/dist/cli/core/native-backend.d.ts +0 -140
- package/dist/cli/core/native-backend.js +0 -432
- package/dist/cli/core/vector-db.d.ts +0 -126
- package/dist/cli/core/vector-db.js +0 -338
- package/dist/cli/core/wasm-backend.d.ts +0 -95
- package/dist/cli/core/wasm-backend.js +0 -418
- package/dist/cli/db-commands.d.ts +0 -49
- package/dist/cli/db-commands.d.ts.map +0 -1
- package/dist/cli/db-commands.js +0 -533
- package/dist/cli/db-commands.js.map +0 -1
- package/dist/cli/db-commands.mjs +0 -522
- package/dist/cli/generator.d.ts +0 -11
- package/dist/cli/generator.d.ts.map +0 -1
- package/dist/cli/generator.js +0 -567
- package/dist/cli/generator.js.map +0 -1
- package/dist/cli/generator.mjs +0 -527
- package/dist/cli/help.d.ts +0 -18
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.js +0 -676
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/help.mjs +0 -667
- package/dist/cli/index/hnsw.d.ts +0 -164
- package/dist/cli/index/hnsw.js +0 -558
- package/dist/cli/plugin-cli.d.ts +0 -7
- package/dist/cli/plugin-cli.d.ts.map +0 -1
- package/dist/cli/plugin-cli.js +0 -295
- package/dist/cli/plugin-cli.js.map +0 -1
- package/dist/cli/plugin-cli.mjs +0 -289
- package/dist/cli/quantization/product-quantization.d.ts +0 -108
- package/dist/cli/quantization/product-quantization.js +0 -350
- package/dist/cli/query/query-builder.d.ts +0 -322
- package/dist/cli/query/query-builder.js +0 -600
- package/dist/cli/templates.d.ts +0 -14
- package/dist/cli/templates.d.ts.map +0 -1
- package/dist/cli/templates.js +0 -182
- package/dist/cli/templates.js.map +0 -1
- package/dist/cli/templates.mjs +0 -176
- package/dist/cli/types/index.d.ts +0 -116
- package/dist/cli/types/index.js +0 -5
- package/dist/cli/types.d.ts +0 -91
- package/dist/cli/types.d.ts.map +0 -1
- package/dist/cli/types.js +0 -6
- package/dist/cli/types.js.map +0 -1
- package/dist/cli/types.mjs +0 -4
- package/dist/cli/wizard/index.d.ts +0 -6
- package/dist/cli/wizard/index.d.ts.map +0 -1
- package/dist/cli/wizard/index.js +0 -138
- package/dist/cli/wizard/index.js.map +0 -1
- package/dist/cli/wizard/index.mjs +0 -131
- package/dist/cli/wizard/prompts.d.ts +0 -11
- package/dist/cli/wizard/prompts.d.ts.map +0 -1
- package/dist/cli/wizard/prompts.js +0 -482
- package/dist/cli/wizard/prompts.js.map +0 -1
- package/dist/cli/wizard/prompts.mjs +0 -470
- package/dist/cli/wizard/validator.d.ts +0 -13
- package/dist/cli/wizard/validator.d.ts.map +0 -1
- package/dist/cli/wizard/validator.js +0 -234
- package/dist/cli/wizard/validator.js.map +0 -1
- package/dist/cli/wizard/validator.mjs +0 -224
- package/dist/core/backend-interface.d.ts +0 -71
- package/dist/core/backend-interface.d.ts.map +0 -1
- package/dist/core/backend-interface.js +0 -16
- package/dist/core/backend-interface.js.map +0 -1
- package/dist/core/backend-interface.mjs +0 -12
- package/dist/core/native-backend.d.ts +0 -141
- package/dist/core/native-backend.d.ts.map +0 -1
- package/dist/core/native-backend.js +0 -457
- package/dist/core/native-backend.js.map +0 -1
- package/dist/core/native-backend.mjs +0 -449
- package/dist/core/vector-db.d.ts +0 -127
- package/dist/core/vector-db.d.ts.map +0 -1
- package/dist/core/vector-db.js +0 -270
- package/dist/core/vector-db.js.map +0 -1
- package/dist/core/vector-db.mjs +0 -265
- package/dist/core/wasm-backend.d.ts +0 -96
- package/dist/core/wasm-backend.d.ts.map +0 -1
- package/dist/core/wasm-backend.js +0 -393
- package/dist/core/wasm-backend.js.map +0 -1
- package/dist/core/wasm-backend.mjs +0 -385
- package/dist/index/hnsw-optimized.d.ts +0 -75
- package/dist/index/hnsw-optimized.d.ts.map +0 -1
- package/dist/index/hnsw-optimized.js +0 -412
- package/dist/index/hnsw-optimized.js.map +0 -1
- package/dist/index/hnsw-optimized.mjs +0 -407
- package/dist/index/hnsw.d.ts +0 -165
- package/dist/index/hnsw.d.ts.map +0 -1
- package/dist/index/hnsw.js +0 -521
- package/dist/index/hnsw.js.map +0 -1
- package/dist/index/hnsw.mjs +0 -516
- package/dist/index.browser.d.ts +0 -47
- package/dist/index.browser.d.ts.map +0 -1
- package/dist/index.browser.js +0 -72
- package/dist/index.browser.js.map +0 -1
- package/dist/index.browser.mjs +0 -54
- package/dist/index.d.ts +0 -59
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -84
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -65
- package/dist/mcp/learning/core/experience-buffer.d.ts +0 -61
- package/dist/mcp/learning/core/experience-buffer.d.ts.map +0 -1
- package/dist/mcp/learning/core/experience-buffer.js +0 -175
- package/dist/mcp/learning/core/experience-buffer.js.map +0 -1
- package/dist/mcp/learning/core/experience-buffer.mjs +0 -170
- package/dist/mcp/learning/core/experience-recorder.d.ts +0 -40
- package/dist/mcp/learning/core/experience-recorder.d.ts.map +0 -1
- package/dist/mcp/learning/core/experience-recorder.js +0 -200
- package/dist/mcp/learning/core/experience-recorder.js.map +0 -1
- package/dist/mcp/learning/core/experience-recorder.mjs +0 -195
- package/dist/mcp/learning/core/learning-manager.d.ts +0 -66
- package/dist/mcp/learning/core/learning-manager.d.ts.map +0 -1
- package/dist/mcp/learning/core/learning-manager.js +0 -252
- package/dist/mcp/learning/core/learning-manager.js.map +0 -1
- package/dist/mcp/learning/core/learning-manager.mjs +0 -247
- package/dist/mcp/learning/core/policy-optimizer.d.ts +0 -53
- package/dist/mcp/learning/core/policy-optimizer.d.ts.map +0 -1
- package/dist/mcp/learning/core/policy-optimizer.js +0 -251
- package/dist/mcp/learning/core/policy-optimizer.js.map +0 -1
- package/dist/mcp/learning/core/policy-optimizer.mjs +0 -246
- package/dist/mcp/learning/core/reward-estimator.d.ts +0 -44
- package/dist/mcp/learning/core/reward-estimator.d.ts.map +0 -1
- package/dist/mcp/learning/core/reward-estimator.js +0 -158
- package/dist/mcp/learning/core/reward-estimator.js.map +0 -1
- package/dist/mcp/learning/core/reward-estimator.mjs +0 -153
- package/dist/mcp/learning/core/session-manager.d.ts +0 -63
- package/dist/mcp/learning/core/session-manager.d.ts.map +0 -1
- package/dist/mcp/learning/core/session-manager.js +0 -202
- package/dist/mcp/learning/core/session-manager.js.map +0 -1
- package/dist/mcp/learning/core/session-manager.mjs +0 -197
- package/dist/mcp/learning/index.d.ts +0 -19
- package/dist/mcp/learning/index.d.ts.map +0 -1
- package/dist/mcp/learning/index.js +0 -30
- package/dist/mcp/learning/index.js.map +0 -1
- package/dist/mcp/learning/index.mjs +0 -19
- package/dist/mcp/learning/tools/mcp-learning-tools.d.ts +0 -369
- package/dist/mcp/learning/tools/mcp-learning-tools.d.ts.map +0 -1
- package/dist/mcp/learning/tools/mcp-learning-tools.js +0 -361
- package/dist/mcp/learning/tools/mcp-learning-tools.js.map +0 -1
- package/dist/mcp/learning/tools/mcp-learning-tools.mjs +0 -356
- package/dist/mcp/learning/types/index.d.ts +0 -138
- package/dist/mcp/learning/types/index.d.ts.map +0 -1
- package/dist/mcp/learning/types/index.js +0 -6
- package/dist/mcp/learning/types/index.js.map +0 -1
- package/dist/mcp/learning/types/index.mjs +0 -4
- package/dist/mcp-server.d.ts +0 -29
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -862
- package/dist/mcp-server.js.map +0 -1
- package/dist/mcp-server.mjs +0 -857
- package/dist/plugins/base-plugin.d.ts +0 -114
- package/dist/plugins/base-plugin.d.ts.map +0 -1
- package/dist/plugins/base-plugin.js +0 -313
- package/dist/plugins/base-plugin.js.map +0 -1
- package/dist/plugins/base-plugin.mjs +0 -275
- package/dist/plugins/implementations/active-learning.d.ts +0 -135
- package/dist/plugins/implementations/active-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/active-learning.js +0 -372
- package/dist/plugins/implementations/active-learning.js.map +0 -1
- package/dist/plugins/implementations/active-learning.mjs +0 -367
- package/dist/plugins/implementations/actor-critic.d.ts +0 -64
- package/dist/plugins/implementations/actor-critic.d.ts.map +0 -1
- package/dist/plugins/implementations/actor-critic.js +0 -363
- package/dist/plugins/implementations/actor-critic.js.map +0 -1
- package/dist/plugins/implementations/actor-critic.mjs +0 -358
- package/dist/plugins/implementations/adversarial-training.d.ts +0 -133
- package/dist/plugins/implementations/adversarial-training.d.ts.map +0 -1
- package/dist/plugins/implementations/adversarial-training.js +0 -409
- package/dist/plugins/implementations/adversarial-training.js.map +0 -1
- package/dist/plugins/implementations/adversarial-training.mjs +0 -404
- package/dist/plugins/implementations/curriculum-learning.d.ts +0 -132
- package/dist/plugins/implementations/curriculum-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/curriculum-learning.js +0 -354
- package/dist/plugins/implementations/curriculum-learning.js.map +0 -1
- package/dist/plugins/implementations/curriculum-learning.mjs +0 -349
- package/dist/plugins/implementations/decision-transformer.d.ts +0 -77
- package/dist/plugins/implementations/decision-transformer.d.ts.map +0 -1
- package/dist/plugins/implementations/decision-transformer.js +0 -422
- package/dist/plugins/implementations/decision-transformer.js.map +0 -1
- package/dist/plugins/implementations/decision-transformer.mjs +0 -417
- package/dist/plugins/implementations/federated-learning.d.ts +0 -126
- package/dist/plugins/implementations/federated-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/federated-learning.js +0 -436
- package/dist/plugins/implementations/federated-learning.js.map +0 -1
- package/dist/plugins/implementations/federated-learning.mjs +0 -431
- package/dist/plugins/implementations/index.d.ts +0 -30
- package/dist/plugins/implementations/index.d.ts.map +0 -1
- package/dist/plugins/implementations/index.js +0 -45
- package/dist/plugins/implementations/index.js.map +0 -1
- package/dist/plugins/implementations/index.mjs +0 -31
- package/dist/plugins/implementations/multi-task-learning.d.ts +0 -115
- package/dist/plugins/implementations/multi-task-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/multi-task-learning.js +0 -369
- package/dist/plugins/implementations/multi-task-learning.js.map +0 -1
- package/dist/plugins/implementations/multi-task-learning.mjs +0 -364
- package/dist/plugins/implementations/neural-architecture-search.d.ts +0 -148
- package/dist/plugins/implementations/neural-architecture-search.d.ts.map +0 -1
- package/dist/plugins/implementations/neural-architecture-search.js +0 -379
- package/dist/plugins/implementations/neural-architecture-search.js.map +0 -1
- package/dist/plugins/implementations/neural-architecture-search.mjs +0 -374
- package/dist/plugins/implementations/q-learning.d.ts +0 -98
- package/dist/plugins/implementations/q-learning.d.ts.map +0 -1
- package/dist/plugins/implementations/q-learning.js +0 -435
- package/dist/plugins/implementations/q-learning.js.map +0 -1
- package/dist/plugins/implementations/q-learning.mjs +0 -430
- package/dist/plugins/implementations/sarsa.d.ts +0 -103
- package/dist/plugins/implementations/sarsa.d.ts.map +0 -1
- package/dist/plugins/implementations/sarsa.js +0 -347
- package/dist/plugins/implementations/sarsa.js.map +0 -1
- package/dist/plugins/implementations/sarsa.mjs +0 -342
- package/dist/plugins/index.d.ts +0 -107
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -179
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/index.mjs +0 -168
- package/dist/plugins/interface.d.ts +0 -439
- package/dist/plugins/interface.d.ts.map +0 -1
- package/dist/plugins/interface.js +0 -12
- package/dist/plugins/interface.js.map +0 -1
- package/dist/plugins/interface.mjs +0 -10
- package/dist/plugins/learning-plugin.interface.d.ts +0 -257
- package/dist/plugins/learning-plugin.interface.d.ts.map +0 -1
- package/dist/plugins/learning-plugin.interface.js +0 -7
- package/dist/plugins/learning-plugin.interface.js.map +0 -1
- package/dist/plugins/learning-plugin.interface.mjs +0 -5
- package/dist/plugins/plugin-exports.d.ts +0 -71
- package/dist/plugins/plugin-exports.d.ts.map +0 -1
- package/dist/plugins/plugin-exports.js +0 -78
- package/dist/plugins/plugin-exports.js.map +0 -1
- package/dist/plugins/plugin-exports.mjs +0 -69
- package/dist/plugins/registry.d.ts +0 -206
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -365
- package/dist/plugins/registry.js.map +0 -1
- package/dist/plugins/registry.mjs +0 -356
- package/dist/plugins/validator.d.ts +0 -63
- package/dist/plugins/validator.d.ts.map +0 -1
- package/dist/plugins/validator.js +0 -464
- package/dist/plugins/validator.js.map +0 -1
- package/dist/plugins/validator.mjs +0 -458
- package/dist/presets.d.ts +0 -65
- package/dist/presets.d.ts.map +0 -1
- package/dist/presets.js +0 -145
- package/dist/presets.js.map +0 -1
- package/dist/presets.mjs +0 -140
- package/dist/quantization/binary-quantization.d.ts +0 -104
- package/dist/quantization/binary-quantization.d.ts.map +0 -1
- package/dist/quantization/binary-quantization.js +0 -246
- package/dist/quantization/binary-quantization.js.map +0 -1
- package/dist/quantization/binary-quantization.mjs +0 -240
- package/dist/quantization/optimized-pq.d.ts +0 -138
- package/dist/quantization/optimized-pq.d.ts.map +0 -1
- package/dist/quantization/optimized-pq.js +0 -320
- package/dist/quantization/optimized-pq.js.map +0 -1
- package/dist/quantization/optimized-pq.mjs +0 -313
- package/dist/quantization/product-quantization.d.ts +0 -109
- package/dist/quantization/product-quantization.d.ts.map +0 -1
- package/dist/quantization/product-quantization.js +0 -287
- package/dist/quantization/product-quantization.js.map +0 -1
- package/dist/quantization/product-quantization.mjs +0 -282
- package/dist/quantization/scalar-quantization.d.ts +0 -100
- package/dist/quantization/scalar-quantization.d.ts.map +0 -1
- package/dist/quantization/scalar-quantization.js +0 -324
- package/dist/quantization/scalar-quantization.js.map +0 -1
- package/dist/quantization/scalar-quantization.mjs +0 -319
- package/dist/query/index.d.ts +0 -6
- package/dist/query/index.d.ts.map +0 -1
- package/dist/query/index.js +0 -9
- package/dist/query/index.js.map +0 -1
- package/dist/query/index.mjs +0 -4
- package/dist/query/query-builder.d.ts +0 -323
- package/dist/query/query-builder.d.ts.map +0 -1
- package/dist/query/query-builder.js +0 -524
- package/dist/query/query-builder.js.map +0 -1
- package/dist/query/query-builder.mjs +0 -519
- package/dist/reasoning/context-synthesizer.d.ts +0 -57
- package/dist/reasoning/context-synthesizer.d.ts.map +0 -1
- package/dist/reasoning/context-synthesizer.js +0 -224
- package/dist/reasoning/context-synthesizer.js.map +0 -1
- package/dist/reasoning/context-synthesizer.mjs +0 -219
- package/dist/reasoning/experience-curator.d.ts +0 -66
- package/dist/reasoning/experience-curator.d.ts.map +0 -1
- package/dist/reasoning/experience-curator.js +0 -288
- package/dist/reasoning/experience-curator.js.map +0 -1
- package/dist/reasoning/experience-curator.mjs +0 -283
- package/dist/reasoning/memory-optimizer.d.ts +0 -69
- package/dist/reasoning/memory-optimizer.d.ts.map +0 -1
- package/dist/reasoning/memory-optimizer.js +0 -331
- package/dist/reasoning/memory-optimizer.js.map +0 -1
- package/dist/reasoning/memory-optimizer.mjs +0 -326
- package/dist/reasoning/pattern-matcher.d.ts +0 -59
- package/dist/reasoning/pattern-matcher.d.ts.map +0 -1
- package/dist/reasoning/pattern-matcher.js +0 -229
- package/dist/reasoning/pattern-matcher.js.map +0 -1
- package/dist/reasoning/pattern-matcher.mjs +0 -224
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +0 -118
- package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +0 -1
- package/dist/reasoningbank/adapter/agentdb-adapter.js +0 -477
- package/dist/reasoningbank/adapter/agentdb-adapter.js.map +0 -1
- package/dist/reasoningbank/adapter/types.d.ts +0 -113
- package/dist/reasoningbank/adapter/types.d.ts.map +0 -1
- package/dist/reasoningbank/adapter/types.js +0 -9
- package/dist/reasoningbank/adapter/types.js.map +0 -1
- package/dist/reasoningbank/cli/commands.d.ts +0 -16
- package/dist/reasoningbank/cli/commands.d.ts.map +0 -1
- package/dist/reasoningbank/cli/commands.js +0 -272
- package/dist/reasoningbank/cli/commands.js.map +0 -1
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts +0 -319
- package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +0 -1
- package/dist/reasoningbank/mcp/agentdb-tools.js +0 -301
- package/dist/reasoningbank/mcp/agentdb-tools.js.map +0 -1
- package/dist/reasoningbank/migration/migrate.d.ts +0 -25
- package/dist/reasoningbank/migration/migrate.d.ts.map +0 -1
- package/dist/reasoningbank/migration/migrate.js +0 -178
- package/dist/reasoningbank/migration/migrate.js.map +0 -1
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +0 -37
- package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/context-synthesizer.js +0 -114
- package/dist/reasoningbank/reasoning/context-synthesizer.js.map +0 -1
- package/dist/reasoningbank/reasoning/experience-curator.d.ts +0 -39
- package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/experience-curator.js +0 -98
- package/dist/reasoningbank/reasoning/experience-curator.js.map +0 -1
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +0 -44
- package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/memory-optimizer.js +0 -184
- package/dist/reasoningbank/reasoning/memory-optimizer.js.map +0 -1
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +0 -40
- package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +0 -1
- package/dist/reasoningbank/reasoning/pattern-matcher.js +0 -87
- package/dist/reasoningbank/reasoning/pattern-matcher.js.map +0 -1
- package/dist/reasoningbank/sync/quic-sync.d.ts +0 -77
- package/dist/reasoningbank/sync/quic-sync.d.ts.map +0 -1
- package/dist/reasoningbank/sync/quic-sync.js +0 -165
- package/dist/reasoningbank/sync/quic-sync.js.map +0 -1
- package/dist/sync/conflict.d.ts +0 -78
- package/dist/sync/conflict.d.ts.map +0 -1
- package/dist/sync/conflict.js +0 -202
- package/dist/sync/conflict.js.map +0 -1
- package/dist/sync/conflict.mjs +0 -196
- package/dist/sync/coordinator.d.ts +0 -111
- package/dist/sync/coordinator.d.ts.map +0 -1
- package/dist/sync/coordinator.js +0 -256
- package/dist/sync/coordinator.js.map +0 -1
- package/dist/sync/coordinator.mjs +0 -250
- package/dist/sync/delta.d.ts +0 -81
- package/dist/sync/delta.d.ts.map +0 -1
- package/dist/sync/delta.js +0 -245
- package/dist/sync/delta.js.map +0 -1
- package/dist/sync/delta.mjs +0 -238
- package/dist/sync/index.d.ts +0 -11
- package/dist/sync/index.d.ts.map +0 -1
- package/dist/sync/index.js +0 -22
- package/dist/sync/index.js.map +0 -1
- package/dist/sync/index.mjs +0 -9
- package/dist/sync/quic-sync.d.ts +0 -81
- package/dist/sync/quic-sync.d.ts.map +0 -1
- package/dist/sync/quic-sync.js +0 -329
- package/dist/sync/quic-sync.js.map +0 -1
- package/dist/sync/quic-sync.mjs +0 -323
- package/dist/sync/types.d.ts +0 -168
- package/dist/sync/types.d.ts.map +0 -1
- package/dist/sync/types.js +0 -8
- package/dist/sync/types.js.map +0 -1
- package/dist/sync/types.mjs +0 -6
- package/dist/types/index.d.ts +0 -117
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/index.mjs +0 -4
- package/dist/wasm/sql-wasm-debug.js +0 -6989
- package/dist/wasm/sql-wasm-debug.wasm +0 -0
- package/dist/wasm/sql-wasm.js +0 -188
- package/dist/wasm/sql-wasm.wasm +0 -0
- package/dist/wasm-loader.d.ts +0 -32
- package/dist/wasm-loader.d.ts.map +0 -1
- package/dist/wasm-loader.js +0 -78
- package/dist/wasm-loader.js.map +0 -1
- package/dist/wasm-loader.mjs +0 -67
- package/examples/adaptive-learning.ts +0 -284
- package/examples/browser/README.md +0 -732
- package/examples/browser/adaptive-recommendations/index.html +0 -427
- package/examples/browser/collaborative-filtering/index.html +0 -310
- package/examples/browser/continual-learning/index.html +0 -736
- package/examples/browser/experience-replay/index.html +0 -616
- package/examples/browser/index.html +0 -369
- package/examples/browser/meta-learning/index.html +0 -789
- package/examples/browser/neuro-symbolic/index.html +0 -692
- package/examples/browser/pattern-learning/index.html +0 -620
- package/examples/browser/quantum-inspired/index.html +0 -728
- package/examples/browser/rag/index.html +0 -624
- package/examples/browser/swarm-intelligence/index.html +0 -811
- package/examples/browser-basic.html +0 -170
- package/examples/browser-wasm-real.html +0 -231
- package/examples/hnsw-example.ts +0 -148
- package/examples/mcp-learning-example.ts +0 -220
- package/examples/node-basic.js +0 -70
- package/examples/quic-sync-example.ts +0 -310
- package/examples/quick-start.js +0 -68
- package/examples/test-v1.0.7-cdn.html +0 -190
- package/examples/wasm-example.ts +0 -222
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# AgentDB CLI Examples - Frontier Features
|
|
3
|
+
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
echo "🚀 AgentDB CLI Examples - Frontier Features"
|
|
7
|
+
echo "==========================================="
|
|
8
|
+
echo ""
|
|
9
|
+
|
|
10
|
+
# Colors
|
|
11
|
+
GREEN='\033[0;32m'
|
|
12
|
+
BLUE='\033[0;34m'
|
|
13
|
+
YELLOW='\033[1;33m'
|
|
14
|
+
NC='\033[0m' # No Color
|
|
15
|
+
|
|
16
|
+
# Set database path
|
|
17
|
+
export AGENTDB_PATH="./agentdb-example.db"
|
|
18
|
+
|
|
19
|
+
echo -e "${BLUE}📊 Example 1: Manual Causal Edge${NC}"
|
|
20
|
+
echo "Adding causal relationship: add_tests → code_quality"
|
|
21
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal add-edge \
|
|
22
|
+
"add_tests" "code_quality" 0.25 0.95 100
|
|
23
|
+
echo ""
|
|
24
|
+
|
|
25
|
+
echo -e "${BLUE}🧪 Example 2: A/B Experiment${NC}"
|
|
26
|
+
echo "Testing hypothesis: Higher test coverage reduces bug rate"
|
|
27
|
+
echo ""
|
|
28
|
+
|
|
29
|
+
# Create experiment
|
|
30
|
+
echo "Creating experiment..."
|
|
31
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal experiment create \
|
|
32
|
+
"test-coverage-experiment" "test_coverage_high" "bug_rate"
|
|
33
|
+
echo ""
|
|
34
|
+
|
|
35
|
+
# Add treatment group observations (high coverage → lower bugs)
|
|
36
|
+
echo "Adding treatment observations (high coverage)..."
|
|
37
|
+
for i in {1..10}; do
|
|
38
|
+
OUTCOME=$(awk -v min=0.05 -v max=0.20 'BEGIN{srand(); print min+rand()*(max-min)}')
|
|
39
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal experiment add-observation \
|
|
40
|
+
1 true $OUTCOME '{"coverage": 0.85}'
|
|
41
|
+
done
|
|
42
|
+
echo ""
|
|
43
|
+
|
|
44
|
+
# Add control group observations (low coverage → higher bugs)
|
|
45
|
+
echo "Adding control observations (low coverage)..."
|
|
46
|
+
for i in {1..10}; do
|
|
47
|
+
OUTCOME=$(awk -v min=0.25 -v max=0.45 'BEGIN{srand(); print min+rand()*(max-min)}')
|
|
48
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal experiment add-observation \
|
|
49
|
+
1 false $OUTCOME '{"coverage": 0.45}'
|
|
50
|
+
done
|
|
51
|
+
echo ""
|
|
52
|
+
|
|
53
|
+
# Calculate uplift
|
|
54
|
+
echo "Calculating uplift and significance..."
|
|
55
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal experiment calculate 1
|
|
56
|
+
echo ""
|
|
57
|
+
|
|
58
|
+
echo -e "${BLUE}🔍 Example 3: Causal Query${NC}"
|
|
59
|
+
echo "Finding all high-confidence causal edges..."
|
|
60
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts causal query \
|
|
61
|
+
"" "" 0.7 0.1 10
|
|
62
|
+
echo ""
|
|
63
|
+
|
|
64
|
+
echo -e "${BLUE}📈 Example 4: Database Statistics${NC}"
|
|
65
|
+
npx tsx src/agentdb/cli/agentdb-cli.ts db stats
|
|
66
|
+
echo ""
|
|
67
|
+
|
|
68
|
+
echo -e "${GREEN}✅ Examples Complete!${NC}"
|
|
69
|
+
echo ""
|
|
70
|
+
echo "Try these commands yourself:"
|
|
71
|
+
echo ""
|
|
72
|
+
echo -e "${YELLOW}# Query causal edges for specific effect${NC}"
|
|
73
|
+
echo "npx agentdb causal query '' 'code_quality' 0.8"
|
|
74
|
+
echo ""
|
|
75
|
+
echo -e "${YELLOW}# Retrieve with causal utility${NC}"
|
|
76
|
+
echo "npx agentdb recall with-certificate 'implement authentication' 10"
|
|
77
|
+
echo ""
|
|
78
|
+
echo -e "${YELLOW}# Run nightly learner${NC}"
|
|
79
|
+
echo "npx agentdb learner run 3 0.6 0.7"
|
|
80
|
+
echo ""
|
|
81
|
+
echo -e "${YELLOW}# Prune low-quality edges${NC}"
|
|
82
|
+
echo "npx agentdb learner prune 0.5 0.05 90"
|
|
83
|
+
echo ""
|
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CausalMemoryGraph - Causal Reasoning over Agent Memories
|
|
3
|
+
*
|
|
4
|
+
* Implements intervention-based reasoning rather than correlation.
|
|
5
|
+
* Stores p(y|do(x)) estimates and tracks causal uplift across episodes.
|
|
6
|
+
*
|
|
7
|
+
* Based on:
|
|
8
|
+
* - Pearl's do-calculus and causal inference
|
|
9
|
+
* - Uplift modeling from A/B testing
|
|
10
|
+
* - Instrumental variable methods
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { Database } from 'better-sqlite3';
|
|
14
|
+
|
|
15
|
+
export interface CausalEdge {
|
|
16
|
+
id?: number;
|
|
17
|
+
fromMemoryId: number;
|
|
18
|
+
fromMemoryType: 'episode' | 'skill' | 'note' | 'fact';
|
|
19
|
+
toMemoryId: number;
|
|
20
|
+
toMemoryType: 'episode' | 'skill' | 'note' | 'fact';
|
|
21
|
+
|
|
22
|
+
// Metrics
|
|
23
|
+
similarity: number;
|
|
24
|
+
uplift?: number; // E[y|do(x)] - E[y]
|
|
25
|
+
confidence: number;
|
|
26
|
+
sampleSize?: number;
|
|
27
|
+
|
|
28
|
+
// Evidence
|
|
29
|
+
evidenceIds?: string[];
|
|
30
|
+
experimentIds?: string[];
|
|
31
|
+
confounderScore?: number;
|
|
32
|
+
|
|
33
|
+
// Explanation
|
|
34
|
+
mechanism?: string;
|
|
35
|
+
metadata?: Record<string, any>;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface CausalExperiment {
|
|
39
|
+
id?: number;
|
|
40
|
+
name: string;
|
|
41
|
+
hypothesis: string;
|
|
42
|
+
treatmentId: number;
|
|
43
|
+
treatmentType: string;
|
|
44
|
+
controlId?: number;
|
|
45
|
+
|
|
46
|
+
// Design
|
|
47
|
+
startTime: number;
|
|
48
|
+
endTime?: number;
|
|
49
|
+
sampleSize: number;
|
|
50
|
+
|
|
51
|
+
// Results
|
|
52
|
+
treatmentMean?: number;
|
|
53
|
+
controlMean?: number;
|
|
54
|
+
uplift?: number;
|
|
55
|
+
pValue?: number;
|
|
56
|
+
confidenceIntervalLow?: number;
|
|
57
|
+
confidenceIntervalHigh?: number;
|
|
58
|
+
|
|
59
|
+
status: 'running' | 'completed' | 'failed';
|
|
60
|
+
metadata?: Record<string, any>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface CausalObservation {
|
|
64
|
+
experimentId: number;
|
|
65
|
+
episodeId: number;
|
|
66
|
+
isTreatment: boolean;
|
|
67
|
+
outcomeValue: number;
|
|
68
|
+
outcomeType: 'reward' | 'success' | 'latency';
|
|
69
|
+
context?: Record<string, any>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface CausalQuery {
|
|
73
|
+
interventionMemoryId: number;
|
|
74
|
+
interventionMemoryType: string;
|
|
75
|
+
outcomeMemoryId?: number;
|
|
76
|
+
minConfidence?: number;
|
|
77
|
+
minUplift?: number;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export class CausalMemoryGraph {
|
|
81
|
+
private db: Database;
|
|
82
|
+
|
|
83
|
+
constructor(db: Database) {
|
|
84
|
+
this.db = db;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Add a causal edge between memories
|
|
89
|
+
*/
|
|
90
|
+
addCausalEdge(edge: CausalEdge): number {
|
|
91
|
+
const stmt = this.db.prepare(`
|
|
92
|
+
INSERT INTO causal_edges (
|
|
93
|
+
from_memory_id, from_memory_type, to_memory_id, to_memory_type,
|
|
94
|
+
similarity, uplift, confidence, sample_size,
|
|
95
|
+
evidence_ids, experiment_ids, confounder_score,
|
|
96
|
+
mechanism, metadata
|
|
97
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
98
|
+
`);
|
|
99
|
+
|
|
100
|
+
const result = stmt.run(
|
|
101
|
+
edge.fromMemoryId,
|
|
102
|
+
edge.fromMemoryType,
|
|
103
|
+
edge.toMemoryId,
|
|
104
|
+
edge.toMemoryType,
|
|
105
|
+
edge.similarity,
|
|
106
|
+
edge.uplift || null,
|
|
107
|
+
edge.confidence,
|
|
108
|
+
edge.sampleSize || null,
|
|
109
|
+
edge.evidenceIds ? JSON.stringify(edge.evidenceIds) : null,
|
|
110
|
+
edge.experimentIds ? JSON.stringify(edge.experimentIds) : null,
|
|
111
|
+
edge.confounderScore || null,
|
|
112
|
+
edge.mechanism || null,
|
|
113
|
+
edge.metadata ? JSON.stringify(edge.metadata) : null
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
return result.lastInsertRowid as number;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Create a causal experiment (A/B test)
|
|
121
|
+
*/
|
|
122
|
+
createExperiment(experiment: CausalExperiment): number {
|
|
123
|
+
const stmt = this.db.prepare(`
|
|
124
|
+
INSERT INTO causal_experiments (
|
|
125
|
+
name, hypothesis, treatment_id, treatment_type, control_id,
|
|
126
|
+
start_time, sample_size, status, metadata
|
|
127
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
128
|
+
`);
|
|
129
|
+
|
|
130
|
+
const result = stmt.run(
|
|
131
|
+
experiment.name,
|
|
132
|
+
experiment.hypothesis,
|
|
133
|
+
experiment.treatmentId,
|
|
134
|
+
experiment.treatmentType,
|
|
135
|
+
experiment.controlId || null,
|
|
136
|
+
experiment.startTime,
|
|
137
|
+
experiment.sampleSize,
|
|
138
|
+
experiment.status,
|
|
139
|
+
experiment.metadata ? JSON.stringify(experiment.metadata) : null
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
return result.lastInsertRowid as number;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Record an observation in an experiment
|
|
147
|
+
*/
|
|
148
|
+
recordObservation(observation: CausalObservation): void {
|
|
149
|
+
const stmt = this.db.prepare(`
|
|
150
|
+
INSERT INTO causal_observations (
|
|
151
|
+
experiment_id, episode_id, is_treatment, outcome_value, outcome_type, context
|
|
152
|
+
) VALUES (?, ?, ?, ?, ?, ?)
|
|
153
|
+
`);
|
|
154
|
+
|
|
155
|
+
stmt.run(
|
|
156
|
+
observation.experimentId,
|
|
157
|
+
observation.episodeId,
|
|
158
|
+
observation.isTreatment ? 1 : 0,
|
|
159
|
+
observation.outcomeValue,
|
|
160
|
+
observation.outcomeType,
|
|
161
|
+
observation.context ? JSON.stringify(observation.context) : null
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
// Update sample size
|
|
165
|
+
this.db.prepare(`
|
|
166
|
+
UPDATE causal_experiments
|
|
167
|
+
SET sample_size = sample_size + 1
|
|
168
|
+
WHERE id = ?
|
|
169
|
+
`).run(observation.experimentId);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Calculate uplift for an experiment
|
|
174
|
+
*/
|
|
175
|
+
calculateUplift(experimentId: number): {
|
|
176
|
+
uplift: number;
|
|
177
|
+
pValue: number;
|
|
178
|
+
confidenceInterval: [number, number];
|
|
179
|
+
} {
|
|
180
|
+
// Get treatment and control observations
|
|
181
|
+
const observations = this.db.prepare(`
|
|
182
|
+
SELECT is_treatment, outcome_value
|
|
183
|
+
FROM causal_observations
|
|
184
|
+
WHERE experiment_id = ?
|
|
185
|
+
`).all(experimentId) as any[];
|
|
186
|
+
|
|
187
|
+
const treatmentValues = observations
|
|
188
|
+
.filter(o => o.is_treatment === 1)
|
|
189
|
+
.map(o => o.outcome_value);
|
|
190
|
+
|
|
191
|
+
const controlValues = observations
|
|
192
|
+
.filter(o => o.is_treatment === 0)
|
|
193
|
+
.map(o => o.outcome_value);
|
|
194
|
+
|
|
195
|
+
if (treatmentValues.length === 0 || controlValues.length === 0) {
|
|
196
|
+
return { uplift: 0, pValue: 1.0, confidenceInterval: [0, 0] };
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Calculate means
|
|
200
|
+
const treatmentMean = this.mean(treatmentValues);
|
|
201
|
+
const controlMean = this.mean(controlValues);
|
|
202
|
+
const uplift = treatmentMean - controlMean;
|
|
203
|
+
|
|
204
|
+
// Calculate standard errors
|
|
205
|
+
const treatmentSE = this.standardError(treatmentValues);
|
|
206
|
+
const controlSE = this.standardError(controlValues);
|
|
207
|
+
const pooledSE = Math.sqrt(treatmentSE ** 2 + controlSE ** 2);
|
|
208
|
+
|
|
209
|
+
// t-statistic and p-value (two-tailed)
|
|
210
|
+
const tStat = uplift / pooledSE;
|
|
211
|
+
const df = treatmentValues.length + controlValues.length - 2;
|
|
212
|
+
const pValue = 2 * (1 - this.tCDF(Math.abs(tStat), df));
|
|
213
|
+
|
|
214
|
+
// 95% confidence interval
|
|
215
|
+
const tCritical = this.tInverse(0.025, df);
|
|
216
|
+
const marginOfError = tCritical * pooledSE;
|
|
217
|
+
const confidenceInterval: [number, number] = [
|
|
218
|
+
uplift - marginOfError,
|
|
219
|
+
uplift + marginOfError
|
|
220
|
+
];
|
|
221
|
+
|
|
222
|
+
// Update experiment with results
|
|
223
|
+
this.db.prepare(`
|
|
224
|
+
UPDATE causal_experiments
|
|
225
|
+
SET treatment_mean = ?,
|
|
226
|
+
control_mean = ?,
|
|
227
|
+
uplift = ?,
|
|
228
|
+
p_value = ?,
|
|
229
|
+
confidence_interval_low = ?,
|
|
230
|
+
confidence_interval_high = ?,
|
|
231
|
+
status = 'completed'
|
|
232
|
+
WHERE id = ?
|
|
233
|
+
`).run(
|
|
234
|
+
treatmentMean,
|
|
235
|
+
controlMean,
|
|
236
|
+
uplift,
|
|
237
|
+
pValue,
|
|
238
|
+
confidenceInterval[0],
|
|
239
|
+
confidenceInterval[1],
|
|
240
|
+
experimentId
|
|
241
|
+
);
|
|
242
|
+
|
|
243
|
+
return { uplift, pValue, confidenceInterval };
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/**
|
|
247
|
+
* Query causal effects
|
|
248
|
+
*/
|
|
249
|
+
queryCausalEffects(query: CausalQuery): CausalEdge[] {
|
|
250
|
+
const {
|
|
251
|
+
interventionMemoryId,
|
|
252
|
+
interventionMemoryType,
|
|
253
|
+
outcomeMemoryId,
|
|
254
|
+
minConfidence = 0.5,
|
|
255
|
+
minUplift = 0.0
|
|
256
|
+
} = query;
|
|
257
|
+
|
|
258
|
+
let sql = `
|
|
259
|
+
SELECT * FROM causal_edges
|
|
260
|
+
WHERE from_memory_id = ?
|
|
261
|
+
AND from_memory_type = ?
|
|
262
|
+
AND confidence >= ?
|
|
263
|
+
AND ABS(uplift) >= ?
|
|
264
|
+
`;
|
|
265
|
+
|
|
266
|
+
const params: any[] = [
|
|
267
|
+
interventionMemoryId,
|
|
268
|
+
interventionMemoryType,
|
|
269
|
+
minConfidence,
|
|
270
|
+
minUplift
|
|
271
|
+
];
|
|
272
|
+
|
|
273
|
+
if (outcomeMemoryId) {
|
|
274
|
+
sql += ' AND to_memory_id = ?';
|
|
275
|
+
params.push(outcomeMemoryId);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
sql += ' ORDER BY ABS(uplift) * confidence DESC';
|
|
279
|
+
|
|
280
|
+
const rows = this.db.prepare(sql).all(...params) as any[];
|
|
281
|
+
|
|
282
|
+
return rows.map(row => this.rowToCausalEdge(row));
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Get causal chain (multi-hop reasoning)
|
|
287
|
+
*/
|
|
288
|
+
getCausalChain(fromMemoryId: number, toMemoryId: number, maxDepth: number = 5): {
|
|
289
|
+
path: number[];
|
|
290
|
+
totalUplift: number;
|
|
291
|
+
confidence: number;
|
|
292
|
+
}[] {
|
|
293
|
+
// Use recursive CTE from view
|
|
294
|
+
const chains = this.db.prepare(`
|
|
295
|
+
WITH RECURSIVE chain(from_id, to_id, depth, path, total_uplift, min_confidence) AS (
|
|
296
|
+
SELECT
|
|
297
|
+
from_memory_id,
|
|
298
|
+
to_memory_id,
|
|
299
|
+
1,
|
|
300
|
+
from_memory_id || '->' || to_memory_id,
|
|
301
|
+
uplift,
|
|
302
|
+
confidence
|
|
303
|
+
FROM causal_edges
|
|
304
|
+
WHERE from_memory_id = ? AND confidence >= 0.5
|
|
305
|
+
|
|
306
|
+
UNION ALL
|
|
307
|
+
|
|
308
|
+
SELECT
|
|
309
|
+
chain.from_id,
|
|
310
|
+
ce.to_memory_id,
|
|
311
|
+
chain.depth + 1,
|
|
312
|
+
chain.path || '->' || ce.to_memory_id,
|
|
313
|
+
chain.total_uplift + ce.uplift,
|
|
314
|
+
MIN(chain.min_confidence, ce.confidence)
|
|
315
|
+
FROM chain
|
|
316
|
+
JOIN causal_edges ce ON chain.to_id = ce.from_memory_id
|
|
317
|
+
WHERE chain.depth < ?
|
|
318
|
+
AND ce.confidence >= 0.5
|
|
319
|
+
AND chain.path NOT LIKE '%' || ce.to_memory_id || '%'
|
|
320
|
+
)
|
|
321
|
+
SELECT path, total_uplift, min_confidence
|
|
322
|
+
FROM chain
|
|
323
|
+
WHERE to_id = ?
|
|
324
|
+
ORDER BY total_uplift DESC
|
|
325
|
+
LIMIT 10
|
|
326
|
+
`).all(fromMemoryId, maxDepth, toMemoryId) as any[];
|
|
327
|
+
|
|
328
|
+
return chains.map(row => ({
|
|
329
|
+
path: row.path.split('->').map(Number),
|
|
330
|
+
totalUplift: row.total_uplift,
|
|
331
|
+
confidence: row.min_confidence
|
|
332
|
+
}));
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Calculate causal gain: E[outcome|do(treatment)] - E[outcome]
|
|
337
|
+
*/
|
|
338
|
+
calculateCausalGain(treatmentId: number, outcomeType: 'reward' | 'success' | 'latency'): {
|
|
339
|
+
causalGain: number;
|
|
340
|
+
confidence: number;
|
|
341
|
+
mechanism: string;
|
|
342
|
+
} {
|
|
343
|
+
// Get episodes where treatment was applied
|
|
344
|
+
const withTreatment = this.db.prepare(`
|
|
345
|
+
SELECT AVG(CASE WHEN ? = 'reward' THEN reward
|
|
346
|
+
WHEN ? = 'success' THEN success
|
|
347
|
+
WHEN ? = 'latency' THEN latency_ms
|
|
348
|
+
END) as avg_outcome
|
|
349
|
+
FROM episodes
|
|
350
|
+
WHERE id IN (
|
|
351
|
+
SELECT to_memory_id FROM causal_edges
|
|
352
|
+
WHERE from_memory_id = ? AND confidence >= 0.6
|
|
353
|
+
)
|
|
354
|
+
`).get(outcomeType, outcomeType, outcomeType, treatmentId) as any;
|
|
355
|
+
|
|
356
|
+
// Get baseline (no treatment)
|
|
357
|
+
const baseline = this.db.prepare(`
|
|
358
|
+
SELECT AVG(CASE WHEN ? = 'reward' THEN reward
|
|
359
|
+
WHEN ? = 'success' THEN success
|
|
360
|
+
WHEN ? = 'latency' THEN latency_ms
|
|
361
|
+
END) as avg_outcome
|
|
362
|
+
FROM episodes
|
|
363
|
+
WHERE id NOT IN (
|
|
364
|
+
SELECT to_memory_id FROM causal_edges
|
|
365
|
+
WHERE from_memory_id = ?
|
|
366
|
+
)
|
|
367
|
+
`).get(outcomeType, outcomeType, outcomeType, treatmentId) as any;
|
|
368
|
+
|
|
369
|
+
const causalGain = (withTreatment?.avg_outcome || 0) - (baseline?.avg_outcome || 0);
|
|
370
|
+
|
|
371
|
+
// Get most confident edge for mechanism
|
|
372
|
+
const edge = this.db.prepare(`
|
|
373
|
+
SELECT mechanism, confidence
|
|
374
|
+
FROM causal_edges
|
|
375
|
+
WHERE from_memory_id = ?
|
|
376
|
+
ORDER BY confidence DESC
|
|
377
|
+
LIMIT 1
|
|
378
|
+
`).get(treatmentId) as any;
|
|
379
|
+
|
|
380
|
+
return {
|
|
381
|
+
causalGain,
|
|
382
|
+
confidence: edge?.confidence || 0,
|
|
383
|
+
mechanism: edge?.mechanism || 'unknown'
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/**
|
|
388
|
+
* Detect confounders using correlation analysis
|
|
389
|
+
*/
|
|
390
|
+
detectConfounders(edgeId: number): {
|
|
391
|
+
confounders: Array<{
|
|
392
|
+
memoryId: number;
|
|
393
|
+
correlationWithTreatment: number;
|
|
394
|
+
correlationWithOutcome: number;
|
|
395
|
+
confounderScore: number;
|
|
396
|
+
}>;
|
|
397
|
+
} {
|
|
398
|
+
const edge = this.db.prepare('SELECT * FROM causal_edges WHERE id = ?').get(edgeId) as any;
|
|
399
|
+
|
|
400
|
+
if (!edge) {
|
|
401
|
+
return { confounders: [] };
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// Find memories correlated with both treatment and outcome
|
|
405
|
+
// This is a simplified version - production would use proper statistical tests
|
|
406
|
+
const potentialConfounders = this.db.prepare(`
|
|
407
|
+
SELECT DISTINCT e.id, e.task
|
|
408
|
+
FROM episodes e
|
|
409
|
+
WHERE e.id != ? AND e.id != ?
|
|
410
|
+
AND e.session_id IN (
|
|
411
|
+
SELECT session_id FROM episodes WHERE id = ?
|
|
412
|
+
UNION
|
|
413
|
+
SELECT session_id FROM episodes WHERE id = ?
|
|
414
|
+
)
|
|
415
|
+
`).all(edge.from_memory_id, edge.to_memory_id, edge.from_memory_id, edge.to_memory_id) as any[];
|
|
416
|
+
|
|
417
|
+
const confounders = potentialConfounders.map((conf: any) => {
|
|
418
|
+
// Calculate correlation scores (simplified)
|
|
419
|
+
const treatmentCorr = this.calculateCorrelation(conf.id, edge.from_memory_id);
|
|
420
|
+
const outcomeCorr = this.calculateCorrelation(conf.id, edge.to_memory_id);
|
|
421
|
+
const confounderScore = Math.sqrt(treatmentCorr ** 2 * outcomeCorr ** 2);
|
|
422
|
+
|
|
423
|
+
return {
|
|
424
|
+
memoryId: conf.id,
|
|
425
|
+
correlationWithTreatment: treatmentCorr,
|
|
426
|
+
correlationWithOutcome: outcomeCorr,
|
|
427
|
+
confounderScore
|
|
428
|
+
};
|
|
429
|
+
}).filter(c => c.confounderScore > 0.3);
|
|
430
|
+
|
|
431
|
+
// Update edge with confounder score
|
|
432
|
+
if (confounders.length > 0) {
|
|
433
|
+
const maxConfounderScore = Math.max(...confounders.map(c => c.confounderScore));
|
|
434
|
+
this.db.prepare(`
|
|
435
|
+
UPDATE causal_edges
|
|
436
|
+
SET confounder_score = ?
|
|
437
|
+
WHERE id = ?
|
|
438
|
+
`).run(maxConfounderScore, edgeId);
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
return { confounders };
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
// ========================================================================
|
|
445
|
+
// Private Helper Methods
|
|
446
|
+
// ========================================================================
|
|
447
|
+
|
|
448
|
+
private rowToCausalEdge(row: any): CausalEdge {
|
|
449
|
+
return {
|
|
450
|
+
id: row.id,
|
|
451
|
+
fromMemoryId: row.from_memory_id,
|
|
452
|
+
fromMemoryType: row.from_memory_type,
|
|
453
|
+
toMemoryId: row.to_memory_id,
|
|
454
|
+
toMemoryType: row.to_memory_type,
|
|
455
|
+
similarity: row.similarity,
|
|
456
|
+
uplift: row.uplift,
|
|
457
|
+
confidence: row.confidence,
|
|
458
|
+
sampleSize: row.sample_size,
|
|
459
|
+
evidenceIds: row.evidence_ids ? JSON.parse(row.evidence_ids) : undefined,
|
|
460
|
+
experimentIds: row.experiment_ids ? JSON.parse(row.experiment_ids) : undefined,
|
|
461
|
+
confounderScore: row.confounder_score,
|
|
462
|
+
mechanism: row.mechanism,
|
|
463
|
+
metadata: row.metadata ? JSON.parse(row.metadata) : undefined
|
|
464
|
+
};
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
private mean(values: number[]): number {
|
|
468
|
+
return values.reduce((a, b) => a + b, 0) / values.length;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
private variance(values: number[]): number {
|
|
472
|
+
const avg = this.mean(values);
|
|
473
|
+
return values.reduce((sum, val) => sum + (val - avg) ** 2, 0) / values.length;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
private standardError(values: number[]): number {
|
|
477
|
+
return Math.sqrt(this.variance(values) / values.length);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
private tCDF(t: number, df: number): number {
|
|
481
|
+
// Simplified t-distribution CDF (use proper stats library in production)
|
|
482
|
+
// This is an approximation
|
|
483
|
+
return 0.5 + 0.5 * Math.sign(t) * (1 - Math.pow(1 + t * t / df, -df / 2));
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
private tInverse(p: number, df: number): number {
|
|
487
|
+
// Simplified inverse t-distribution (use proper stats library)
|
|
488
|
+
// Approximation for 95% CI
|
|
489
|
+
return 1.96; // Standard normal approximation
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
private calculateCorrelation(id1: number, id2: number): number {
|
|
493
|
+
// Simplified correlation calculation
|
|
494
|
+
// In production, use proper correlation metrics
|
|
495
|
+
const sharedSessions = this.db.prepare(`
|
|
496
|
+
SELECT COUNT(DISTINCT e1.session_id) as shared
|
|
497
|
+
FROM episodes e1
|
|
498
|
+
JOIN episodes e2 ON e1.session_id = e2.session_id
|
|
499
|
+
WHERE e1.id = ? AND e2.id = ?
|
|
500
|
+
`).get(id1, id2) as any;
|
|
501
|
+
|
|
502
|
+
return Math.min(sharedSessions?.shared || 0, 1.0);
|
|
503
|
+
}
|
|
504
|
+
}
|