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.
Files changed (503) hide show
  1. package/README.md +196 -838
  2. package/dist/benchmarks/comprehensive-benchmark.js +664 -0
  3. package/dist/benchmarks/frontier-benchmark.js +419 -0
  4. package/dist/benchmarks/reflexion-benchmark.js +370 -0
  5. package/dist/cli/agentdb-cli.d.ts +117 -0
  6. package/dist/cli/agentdb-cli.d.ts.map +1 -0
  7. package/dist/cli/agentdb-cli.js +718 -0
  8. package/dist/cli/agentdb-cli.js.map +1 -0
  9. package/dist/controllers/CausalMemoryGraph.d.ts +125 -0
  10. package/dist/controllers/CausalMemoryGraph.d.ts.map +1 -0
  11. package/dist/controllers/CausalMemoryGraph.js +323 -0
  12. package/dist/controllers/CausalMemoryGraph.js.map +1 -0
  13. package/dist/controllers/CausalRecall.d.ts +111 -0
  14. package/dist/controllers/CausalRecall.d.ts.map +1 -0
  15. package/dist/controllers/CausalRecall.js +282 -0
  16. package/dist/controllers/CausalRecall.js.map +1 -0
  17. package/dist/controllers/EmbeddingService.d.ts +37 -0
  18. package/dist/controllers/EmbeddingService.d.ts.map +1 -0
  19. package/dist/controllers/EmbeddingService.js +119 -0
  20. package/dist/controllers/EmbeddingService.js.map +1 -0
  21. package/dist/controllers/ExplainableRecall.d.ts +138 -0
  22. package/dist/controllers/ExplainableRecall.d.ts.map +1 -0
  23. package/dist/controllers/ExplainableRecall.js +388 -0
  24. package/dist/controllers/ExplainableRecall.js.map +1 -0
  25. package/dist/controllers/NightlyLearner.d.ts +113 -0
  26. package/dist/controllers/NightlyLearner.d.ts.map +1 -0
  27. package/dist/controllers/NightlyLearner.js +383 -0
  28. package/dist/controllers/NightlyLearner.js.map +1 -0
  29. package/dist/controllers/ReflexionMemory.d.ts +84 -0
  30. package/dist/controllers/ReflexionMemory.d.ts.map +1 -0
  31. package/dist/controllers/ReflexionMemory.js +240 -0
  32. package/dist/controllers/ReflexionMemory.js.map +1 -0
  33. package/dist/controllers/SkillLibrary.d.ts +96 -0
  34. package/dist/controllers/SkillLibrary.d.ts.map +1 -0
  35. package/dist/controllers/SkillLibrary.js +277 -0
  36. package/dist/controllers/SkillLibrary.js.map +1 -0
  37. package/dist/controllers/frontier-index.d.ts +14 -0
  38. package/dist/controllers/frontier-index.d.ts.map +1 -0
  39. package/dist/controllers/frontier-index.js +10 -0
  40. package/dist/controllers/frontier-index.js.map +1 -0
  41. package/dist/controllers/index.d.ts +12 -0
  42. package/dist/controllers/index.d.ts.map +1 -0
  43. package/dist/controllers/index.js +9 -0
  44. package/dist/controllers/index.js.map +1 -0
  45. package/dist/optimizations/BatchOperations.d.ts +61 -0
  46. package/dist/optimizations/BatchOperations.d.ts.map +1 -0
  47. package/dist/optimizations/BatchOperations.js +199 -0
  48. package/dist/optimizations/BatchOperations.js.map +1 -0
  49. package/dist/optimizations/QueryOptimizer.d.ts +82 -0
  50. package/dist/optimizations/QueryOptimizer.d.ts.map +1 -0
  51. package/dist/optimizations/QueryOptimizer.js +226 -0
  52. package/dist/optimizations/QueryOptimizer.js.map +1 -0
  53. package/dist/optimizations/index.d.ts +10 -0
  54. package/dist/optimizations/index.d.ts.map +1 -0
  55. package/dist/optimizations/index.js +8 -0
  56. package/dist/optimizations/index.js.map +1 -0
  57. package/dist/schemas/frontier-schema.sql +341 -0
  58. package/dist/schemas/schema.sql +382 -0
  59. package/dist/tests/frontier-features.test.js +665 -0
  60. package/package.json +54 -117
  61. package/src/cli/agentdb-cli.ts +861 -0
  62. package/src/cli/examples.sh +83 -0
  63. package/src/controllers/CausalMemoryGraph.ts +504 -0
  64. package/src/controllers/CausalRecall.ts +395 -0
  65. package/src/controllers/EmbeddingService.ts +141 -0
  66. package/src/controllers/ExplainableRecall.ts +577 -0
  67. package/src/controllers/NightlyLearner.ts +475 -0
  68. package/src/controllers/ReflexionMemory.ts +349 -0
  69. package/src/controllers/SkillLibrary.ts +391 -0
  70. package/src/controllers/frontier-index.ts +35 -0
  71. package/src/controllers/index.ts +13 -0
  72. package/src/optimizations/BatchOperations.ts +292 -0
  73. package/src/optimizations/QueryOptimizer.ts +294 -0
  74. package/src/optimizations/index.ts +11 -0
  75. package/src/schemas/frontier-schema.sql +341 -0
  76. package/src/schemas/schema.sql +382 -0
  77. package/CHANGELOG.md +0 -166
  78. package/LICENSE +0 -38
  79. package/LICENSE-APACHE +0 -190
  80. package/LICENSE-MIT +0 -21
  81. package/bin/agentdb.js +0 -733
  82. package/bin/benchmark.js +0 -165
  83. package/bin/plugin-cli-wrapper.mjs +0 -21
  84. package/dist/agentdb.js +0 -5352
  85. package/dist/agentdb.js.map +0 -7
  86. package/dist/agentdb.min.js +0 -143
  87. package/dist/agentdb.min.js.map +0 -7
  88. package/dist/cache/query-cache.d.ts +0 -105
  89. package/dist/cache/query-cache.d.ts.map +0 -1
  90. package/dist/cache/query-cache.js +0 -224
  91. package/dist/cache/query-cache.js.map +0 -1
  92. package/dist/cache/query-cache.mjs +0 -219
  93. package/dist/cli/cache/query-cache.d.ts +0 -104
  94. package/dist/cli/cache/query-cache.js +0 -244
  95. package/dist/cli/cli/db-commands.d.ts +0 -48
  96. package/dist/cli/cli/db-commands.js +0 -613
  97. package/dist/cli/commands.d.ts +0 -7
  98. package/dist/cli/commands.d.ts.map +0 -1
  99. package/dist/cli/commands.js +0 -113
  100. package/dist/cli/commands.js.map +0 -1
  101. package/dist/cli/commands.mjs +0 -104
  102. package/dist/cli/core/backend-interface.d.ts +0 -70
  103. package/dist/cli/core/backend-interface.js +0 -15
  104. package/dist/cli/core/native-backend.d.ts +0 -140
  105. package/dist/cli/core/native-backend.js +0 -432
  106. package/dist/cli/core/vector-db.d.ts +0 -126
  107. package/dist/cli/core/vector-db.js +0 -338
  108. package/dist/cli/core/wasm-backend.d.ts +0 -95
  109. package/dist/cli/core/wasm-backend.js +0 -418
  110. package/dist/cli/db-commands.d.ts +0 -49
  111. package/dist/cli/db-commands.d.ts.map +0 -1
  112. package/dist/cli/db-commands.js +0 -533
  113. package/dist/cli/db-commands.js.map +0 -1
  114. package/dist/cli/db-commands.mjs +0 -522
  115. package/dist/cli/generator.d.ts +0 -11
  116. package/dist/cli/generator.d.ts.map +0 -1
  117. package/dist/cli/generator.js +0 -567
  118. package/dist/cli/generator.js.map +0 -1
  119. package/dist/cli/generator.mjs +0 -527
  120. package/dist/cli/help.d.ts +0 -18
  121. package/dist/cli/help.d.ts.map +0 -1
  122. package/dist/cli/help.js +0 -676
  123. package/dist/cli/help.js.map +0 -1
  124. package/dist/cli/help.mjs +0 -667
  125. package/dist/cli/index/hnsw.d.ts +0 -164
  126. package/dist/cli/index/hnsw.js +0 -558
  127. package/dist/cli/plugin-cli.d.ts +0 -7
  128. package/dist/cli/plugin-cli.d.ts.map +0 -1
  129. package/dist/cli/plugin-cli.js +0 -295
  130. package/dist/cli/plugin-cli.js.map +0 -1
  131. package/dist/cli/plugin-cli.mjs +0 -289
  132. package/dist/cli/quantization/product-quantization.d.ts +0 -108
  133. package/dist/cli/quantization/product-quantization.js +0 -350
  134. package/dist/cli/query/query-builder.d.ts +0 -322
  135. package/dist/cli/query/query-builder.js +0 -600
  136. package/dist/cli/templates.d.ts +0 -14
  137. package/dist/cli/templates.d.ts.map +0 -1
  138. package/dist/cli/templates.js +0 -182
  139. package/dist/cli/templates.js.map +0 -1
  140. package/dist/cli/templates.mjs +0 -176
  141. package/dist/cli/types/index.d.ts +0 -116
  142. package/dist/cli/types/index.js +0 -5
  143. package/dist/cli/types.d.ts +0 -91
  144. package/dist/cli/types.d.ts.map +0 -1
  145. package/dist/cli/types.js +0 -6
  146. package/dist/cli/types.js.map +0 -1
  147. package/dist/cli/types.mjs +0 -4
  148. package/dist/cli/wizard/index.d.ts +0 -6
  149. package/dist/cli/wizard/index.d.ts.map +0 -1
  150. package/dist/cli/wizard/index.js +0 -138
  151. package/dist/cli/wizard/index.js.map +0 -1
  152. package/dist/cli/wizard/index.mjs +0 -131
  153. package/dist/cli/wizard/prompts.d.ts +0 -11
  154. package/dist/cli/wizard/prompts.d.ts.map +0 -1
  155. package/dist/cli/wizard/prompts.js +0 -482
  156. package/dist/cli/wizard/prompts.js.map +0 -1
  157. package/dist/cli/wizard/prompts.mjs +0 -470
  158. package/dist/cli/wizard/validator.d.ts +0 -13
  159. package/dist/cli/wizard/validator.d.ts.map +0 -1
  160. package/dist/cli/wizard/validator.js +0 -234
  161. package/dist/cli/wizard/validator.js.map +0 -1
  162. package/dist/cli/wizard/validator.mjs +0 -224
  163. package/dist/core/backend-interface.d.ts +0 -71
  164. package/dist/core/backend-interface.d.ts.map +0 -1
  165. package/dist/core/backend-interface.js +0 -16
  166. package/dist/core/backend-interface.js.map +0 -1
  167. package/dist/core/backend-interface.mjs +0 -12
  168. package/dist/core/native-backend.d.ts +0 -141
  169. package/dist/core/native-backend.d.ts.map +0 -1
  170. package/dist/core/native-backend.js +0 -457
  171. package/dist/core/native-backend.js.map +0 -1
  172. package/dist/core/native-backend.mjs +0 -449
  173. package/dist/core/vector-db.d.ts +0 -127
  174. package/dist/core/vector-db.d.ts.map +0 -1
  175. package/dist/core/vector-db.js +0 -270
  176. package/dist/core/vector-db.js.map +0 -1
  177. package/dist/core/vector-db.mjs +0 -265
  178. package/dist/core/wasm-backend.d.ts +0 -96
  179. package/dist/core/wasm-backend.d.ts.map +0 -1
  180. package/dist/core/wasm-backend.js +0 -393
  181. package/dist/core/wasm-backend.js.map +0 -1
  182. package/dist/core/wasm-backend.mjs +0 -385
  183. package/dist/index/hnsw-optimized.d.ts +0 -75
  184. package/dist/index/hnsw-optimized.d.ts.map +0 -1
  185. package/dist/index/hnsw-optimized.js +0 -412
  186. package/dist/index/hnsw-optimized.js.map +0 -1
  187. package/dist/index/hnsw-optimized.mjs +0 -407
  188. package/dist/index/hnsw.d.ts +0 -165
  189. package/dist/index/hnsw.d.ts.map +0 -1
  190. package/dist/index/hnsw.js +0 -521
  191. package/dist/index/hnsw.js.map +0 -1
  192. package/dist/index/hnsw.mjs +0 -516
  193. package/dist/index.browser.d.ts +0 -47
  194. package/dist/index.browser.d.ts.map +0 -1
  195. package/dist/index.browser.js +0 -72
  196. package/dist/index.browser.js.map +0 -1
  197. package/dist/index.browser.mjs +0 -54
  198. package/dist/index.d.ts +0 -59
  199. package/dist/index.d.ts.map +0 -1
  200. package/dist/index.js +0 -84
  201. package/dist/index.js.map +0 -1
  202. package/dist/index.mjs +0 -65
  203. package/dist/mcp/learning/core/experience-buffer.d.ts +0 -61
  204. package/dist/mcp/learning/core/experience-buffer.d.ts.map +0 -1
  205. package/dist/mcp/learning/core/experience-buffer.js +0 -175
  206. package/dist/mcp/learning/core/experience-buffer.js.map +0 -1
  207. package/dist/mcp/learning/core/experience-buffer.mjs +0 -170
  208. package/dist/mcp/learning/core/experience-recorder.d.ts +0 -40
  209. package/dist/mcp/learning/core/experience-recorder.d.ts.map +0 -1
  210. package/dist/mcp/learning/core/experience-recorder.js +0 -200
  211. package/dist/mcp/learning/core/experience-recorder.js.map +0 -1
  212. package/dist/mcp/learning/core/experience-recorder.mjs +0 -195
  213. package/dist/mcp/learning/core/learning-manager.d.ts +0 -66
  214. package/dist/mcp/learning/core/learning-manager.d.ts.map +0 -1
  215. package/dist/mcp/learning/core/learning-manager.js +0 -252
  216. package/dist/mcp/learning/core/learning-manager.js.map +0 -1
  217. package/dist/mcp/learning/core/learning-manager.mjs +0 -247
  218. package/dist/mcp/learning/core/policy-optimizer.d.ts +0 -53
  219. package/dist/mcp/learning/core/policy-optimizer.d.ts.map +0 -1
  220. package/dist/mcp/learning/core/policy-optimizer.js +0 -251
  221. package/dist/mcp/learning/core/policy-optimizer.js.map +0 -1
  222. package/dist/mcp/learning/core/policy-optimizer.mjs +0 -246
  223. package/dist/mcp/learning/core/reward-estimator.d.ts +0 -44
  224. package/dist/mcp/learning/core/reward-estimator.d.ts.map +0 -1
  225. package/dist/mcp/learning/core/reward-estimator.js +0 -158
  226. package/dist/mcp/learning/core/reward-estimator.js.map +0 -1
  227. package/dist/mcp/learning/core/reward-estimator.mjs +0 -153
  228. package/dist/mcp/learning/core/session-manager.d.ts +0 -63
  229. package/dist/mcp/learning/core/session-manager.d.ts.map +0 -1
  230. package/dist/mcp/learning/core/session-manager.js +0 -202
  231. package/dist/mcp/learning/core/session-manager.js.map +0 -1
  232. package/dist/mcp/learning/core/session-manager.mjs +0 -197
  233. package/dist/mcp/learning/index.d.ts +0 -19
  234. package/dist/mcp/learning/index.d.ts.map +0 -1
  235. package/dist/mcp/learning/index.js +0 -30
  236. package/dist/mcp/learning/index.js.map +0 -1
  237. package/dist/mcp/learning/index.mjs +0 -19
  238. package/dist/mcp/learning/tools/mcp-learning-tools.d.ts +0 -369
  239. package/dist/mcp/learning/tools/mcp-learning-tools.d.ts.map +0 -1
  240. package/dist/mcp/learning/tools/mcp-learning-tools.js +0 -361
  241. package/dist/mcp/learning/tools/mcp-learning-tools.js.map +0 -1
  242. package/dist/mcp/learning/tools/mcp-learning-tools.mjs +0 -356
  243. package/dist/mcp/learning/types/index.d.ts +0 -138
  244. package/dist/mcp/learning/types/index.d.ts.map +0 -1
  245. package/dist/mcp/learning/types/index.js +0 -6
  246. package/dist/mcp/learning/types/index.js.map +0 -1
  247. package/dist/mcp/learning/types/index.mjs +0 -4
  248. package/dist/mcp-server.d.ts +0 -29
  249. package/dist/mcp-server.d.ts.map +0 -1
  250. package/dist/mcp-server.js +0 -862
  251. package/dist/mcp-server.js.map +0 -1
  252. package/dist/mcp-server.mjs +0 -857
  253. package/dist/plugins/base-plugin.d.ts +0 -114
  254. package/dist/plugins/base-plugin.d.ts.map +0 -1
  255. package/dist/plugins/base-plugin.js +0 -313
  256. package/dist/plugins/base-plugin.js.map +0 -1
  257. package/dist/plugins/base-plugin.mjs +0 -275
  258. package/dist/plugins/implementations/active-learning.d.ts +0 -135
  259. package/dist/plugins/implementations/active-learning.d.ts.map +0 -1
  260. package/dist/plugins/implementations/active-learning.js +0 -372
  261. package/dist/plugins/implementations/active-learning.js.map +0 -1
  262. package/dist/plugins/implementations/active-learning.mjs +0 -367
  263. package/dist/plugins/implementations/actor-critic.d.ts +0 -64
  264. package/dist/plugins/implementations/actor-critic.d.ts.map +0 -1
  265. package/dist/plugins/implementations/actor-critic.js +0 -363
  266. package/dist/plugins/implementations/actor-critic.js.map +0 -1
  267. package/dist/plugins/implementations/actor-critic.mjs +0 -358
  268. package/dist/plugins/implementations/adversarial-training.d.ts +0 -133
  269. package/dist/plugins/implementations/adversarial-training.d.ts.map +0 -1
  270. package/dist/plugins/implementations/adversarial-training.js +0 -409
  271. package/dist/plugins/implementations/adversarial-training.js.map +0 -1
  272. package/dist/plugins/implementations/adversarial-training.mjs +0 -404
  273. package/dist/plugins/implementations/curriculum-learning.d.ts +0 -132
  274. package/dist/plugins/implementations/curriculum-learning.d.ts.map +0 -1
  275. package/dist/plugins/implementations/curriculum-learning.js +0 -354
  276. package/dist/plugins/implementations/curriculum-learning.js.map +0 -1
  277. package/dist/plugins/implementations/curriculum-learning.mjs +0 -349
  278. package/dist/plugins/implementations/decision-transformer.d.ts +0 -77
  279. package/dist/plugins/implementations/decision-transformer.d.ts.map +0 -1
  280. package/dist/plugins/implementations/decision-transformer.js +0 -422
  281. package/dist/plugins/implementations/decision-transformer.js.map +0 -1
  282. package/dist/plugins/implementations/decision-transformer.mjs +0 -417
  283. package/dist/plugins/implementations/federated-learning.d.ts +0 -126
  284. package/dist/plugins/implementations/federated-learning.d.ts.map +0 -1
  285. package/dist/plugins/implementations/federated-learning.js +0 -436
  286. package/dist/plugins/implementations/federated-learning.js.map +0 -1
  287. package/dist/plugins/implementations/federated-learning.mjs +0 -431
  288. package/dist/plugins/implementations/index.d.ts +0 -30
  289. package/dist/plugins/implementations/index.d.ts.map +0 -1
  290. package/dist/plugins/implementations/index.js +0 -45
  291. package/dist/plugins/implementations/index.js.map +0 -1
  292. package/dist/plugins/implementations/index.mjs +0 -31
  293. package/dist/plugins/implementations/multi-task-learning.d.ts +0 -115
  294. package/dist/plugins/implementations/multi-task-learning.d.ts.map +0 -1
  295. package/dist/plugins/implementations/multi-task-learning.js +0 -369
  296. package/dist/plugins/implementations/multi-task-learning.js.map +0 -1
  297. package/dist/plugins/implementations/multi-task-learning.mjs +0 -364
  298. package/dist/plugins/implementations/neural-architecture-search.d.ts +0 -148
  299. package/dist/plugins/implementations/neural-architecture-search.d.ts.map +0 -1
  300. package/dist/plugins/implementations/neural-architecture-search.js +0 -379
  301. package/dist/plugins/implementations/neural-architecture-search.js.map +0 -1
  302. package/dist/plugins/implementations/neural-architecture-search.mjs +0 -374
  303. package/dist/plugins/implementations/q-learning.d.ts +0 -98
  304. package/dist/plugins/implementations/q-learning.d.ts.map +0 -1
  305. package/dist/plugins/implementations/q-learning.js +0 -435
  306. package/dist/plugins/implementations/q-learning.js.map +0 -1
  307. package/dist/plugins/implementations/q-learning.mjs +0 -430
  308. package/dist/plugins/implementations/sarsa.d.ts +0 -103
  309. package/dist/plugins/implementations/sarsa.d.ts.map +0 -1
  310. package/dist/plugins/implementations/sarsa.js +0 -347
  311. package/dist/plugins/implementations/sarsa.js.map +0 -1
  312. package/dist/plugins/implementations/sarsa.mjs +0 -342
  313. package/dist/plugins/index.d.ts +0 -107
  314. package/dist/plugins/index.d.ts.map +0 -1
  315. package/dist/plugins/index.js +0 -179
  316. package/dist/plugins/index.js.map +0 -1
  317. package/dist/plugins/index.mjs +0 -168
  318. package/dist/plugins/interface.d.ts +0 -439
  319. package/dist/plugins/interface.d.ts.map +0 -1
  320. package/dist/plugins/interface.js +0 -12
  321. package/dist/plugins/interface.js.map +0 -1
  322. package/dist/plugins/interface.mjs +0 -10
  323. package/dist/plugins/learning-plugin.interface.d.ts +0 -257
  324. package/dist/plugins/learning-plugin.interface.d.ts.map +0 -1
  325. package/dist/plugins/learning-plugin.interface.js +0 -7
  326. package/dist/plugins/learning-plugin.interface.js.map +0 -1
  327. package/dist/plugins/learning-plugin.interface.mjs +0 -5
  328. package/dist/plugins/plugin-exports.d.ts +0 -71
  329. package/dist/plugins/plugin-exports.d.ts.map +0 -1
  330. package/dist/plugins/plugin-exports.js +0 -78
  331. package/dist/plugins/plugin-exports.js.map +0 -1
  332. package/dist/plugins/plugin-exports.mjs +0 -69
  333. package/dist/plugins/registry.d.ts +0 -206
  334. package/dist/plugins/registry.d.ts.map +0 -1
  335. package/dist/plugins/registry.js +0 -365
  336. package/dist/plugins/registry.js.map +0 -1
  337. package/dist/plugins/registry.mjs +0 -356
  338. package/dist/plugins/validator.d.ts +0 -63
  339. package/dist/plugins/validator.d.ts.map +0 -1
  340. package/dist/plugins/validator.js +0 -464
  341. package/dist/plugins/validator.js.map +0 -1
  342. package/dist/plugins/validator.mjs +0 -458
  343. package/dist/presets.d.ts +0 -65
  344. package/dist/presets.d.ts.map +0 -1
  345. package/dist/presets.js +0 -145
  346. package/dist/presets.js.map +0 -1
  347. package/dist/presets.mjs +0 -140
  348. package/dist/quantization/binary-quantization.d.ts +0 -104
  349. package/dist/quantization/binary-quantization.d.ts.map +0 -1
  350. package/dist/quantization/binary-quantization.js +0 -246
  351. package/dist/quantization/binary-quantization.js.map +0 -1
  352. package/dist/quantization/binary-quantization.mjs +0 -240
  353. package/dist/quantization/optimized-pq.d.ts +0 -138
  354. package/dist/quantization/optimized-pq.d.ts.map +0 -1
  355. package/dist/quantization/optimized-pq.js +0 -320
  356. package/dist/quantization/optimized-pq.js.map +0 -1
  357. package/dist/quantization/optimized-pq.mjs +0 -313
  358. package/dist/quantization/product-quantization.d.ts +0 -109
  359. package/dist/quantization/product-quantization.d.ts.map +0 -1
  360. package/dist/quantization/product-quantization.js +0 -287
  361. package/dist/quantization/product-quantization.js.map +0 -1
  362. package/dist/quantization/product-quantization.mjs +0 -282
  363. package/dist/quantization/scalar-quantization.d.ts +0 -100
  364. package/dist/quantization/scalar-quantization.d.ts.map +0 -1
  365. package/dist/quantization/scalar-quantization.js +0 -324
  366. package/dist/quantization/scalar-quantization.js.map +0 -1
  367. package/dist/quantization/scalar-quantization.mjs +0 -319
  368. package/dist/query/index.d.ts +0 -6
  369. package/dist/query/index.d.ts.map +0 -1
  370. package/dist/query/index.js +0 -9
  371. package/dist/query/index.js.map +0 -1
  372. package/dist/query/index.mjs +0 -4
  373. package/dist/query/query-builder.d.ts +0 -323
  374. package/dist/query/query-builder.d.ts.map +0 -1
  375. package/dist/query/query-builder.js +0 -524
  376. package/dist/query/query-builder.js.map +0 -1
  377. package/dist/query/query-builder.mjs +0 -519
  378. package/dist/reasoning/context-synthesizer.d.ts +0 -57
  379. package/dist/reasoning/context-synthesizer.d.ts.map +0 -1
  380. package/dist/reasoning/context-synthesizer.js +0 -224
  381. package/dist/reasoning/context-synthesizer.js.map +0 -1
  382. package/dist/reasoning/context-synthesizer.mjs +0 -219
  383. package/dist/reasoning/experience-curator.d.ts +0 -66
  384. package/dist/reasoning/experience-curator.d.ts.map +0 -1
  385. package/dist/reasoning/experience-curator.js +0 -288
  386. package/dist/reasoning/experience-curator.js.map +0 -1
  387. package/dist/reasoning/experience-curator.mjs +0 -283
  388. package/dist/reasoning/memory-optimizer.d.ts +0 -69
  389. package/dist/reasoning/memory-optimizer.d.ts.map +0 -1
  390. package/dist/reasoning/memory-optimizer.js +0 -331
  391. package/dist/reasoning/memory-optimizer.js.map +0 -1
  392. package/dist/reasoning/memory-optimizer.mjs +0 -326
  393. package/dist/reasoning/pattern-matcher.d.ts +0 -59
  394. package/dist/reasoning/pattern-matcher.d.ts.map +0 -1
  395. package/dist/reasoning/pattern-matcher.js +0 -229
  396. package/dist/reasoning/pattern-matcher.js.map +0 -1
  397. package/dist/reasoning/pattern-matcher.mjs +0 -224
  398. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +0 -118
  399. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +0 -1
  400. package/dist/reasoningbank/adapter/agentdb-adapter.js +0 -477
  401. package/dist/reasoningbank/adapter/agentdb-adapter.js.map +0 -1
  402. package/dist/reasoningbank/adapter/types.d.ts +0 -113
  403. package/dist/reasoningbank/adapter/types.d.ts.map +0 -1
  404. package/dist/reasoningbank/adapter/types.js +0 -9
  405. package/dist/reasoningbank/adapter/types.js.map +0 -1
  406. package/dist/reasoningbank/cli/commands.d.ts +0 -16
  407. package/dist/reasoningbank/cli/commands.d.ts.map +0 -1
  408. package/dist/reasoningbank/cli/commands.js +0 -272
  409. package/dist/reasoningbank/cli/commands.js.map +0 -1
  410. package/dist/reasoningbank/mcp/agentdb-tools.d.ts +0 -319
  411. package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +0 -1
  412. package/dist/reasoningbank/mcp/agentdb-tools.js +0 -301
  413. package/dist/reasoningbank/mcp/agentdb-tools.js.map +0 -1
  414. package/dist/reasoningbank/migration/migrate.d.ts +0 -25
  415. package/dist/reasoningbank/migration/migrate.d.ts.map +0 -1
  416. package/dist/reasoningbank/migration/migrate.js +0 -178
  417. package/dist/reasoningbank/migration/migrate.js.map +0 -1
  418. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +0 -37
  419. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +0 -1
  420. package/dist/reasoningbank/reasoning/context-synthesizer.js +0 -114
  421. package/dist/reasoningbank/reasoning/context-synthesizer.js.map +0 -1
  422. package/dist/reasoningbank/reasoning/experience-curator.d.ts +0 -39
  423. package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +0 -1
  424. package/dist/reasoningbank/reasoning/experience-curator.js +0 -98
  425. package/dist/reasoningbank/reasoning/experience-curator.js.map +0 -1
  426. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +0 -44
  427. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +0 -1
  428. package/dist/reasoningbank/reasoning/memory-optimizer.js +0 -184
  429. package/dist/reasoningbank/reasoning/memory-optimizer.js.map +0 -1
  430. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +0 -40
  431. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +0 -1
  432. package/dist/reasoningbank/reasoning/pattern-matcher.js +0 -87
  433. package/dist/reasoningbank/reasoning/pattern-matcher.js.map +0 -1
  434. package/dist/reasoningbank/sync/quic-sync.d.ts +0 -77
  435. package/dist/reasoningbank/sync/quic-sync.d.ts.map +0 -1
  436. package/dist/reasoningbank/sync/quic-sync.js +0 -165
  437. package/dist/reasoningbank/sync/quic-sync.js.map +0 -1
  438. package/dist/sync/conflict.d.ts +0 -78
  439. package/dist/sync/conflict.d.ts.map +0 -1
  440. package/dist/sync/conflict.js +0 -202
  441. package/dist/sync/conflict.js.map +0 -1
  442. package/dist/sync/conflict.mjs +0 -196
  443. package/dist/sync/coordinator.d.ts +0 -111
  444. package/dist/sync/coordinator.d.ts.map +0 -1
  445. package/dist/sync/coordinator.js +0 -256
  446. package/dist/sync/coordinator.js.map +0 -1
  447. package/dist/sync/coordinator.mjs +0 -250
  448. package/dist/sync/delta.d.ts +0 -81
  449. package/dist/sync/delta.d.ts.map +0 -1
  450. package/dist/sync/delta.js +0 -245
  451. package/dist/sync/delta.js.map +0 -1
  452. package/dist/sync/delta.mjs +0 -238
  453. package/dist/sync/index.d.ts +0 -11
  454. package/dist/sync/index.d.ts.map +0 -1
  455. package/dist/sync/index.js +0 -22
  456. package/dist/sync/index.js.map +0 -1
  457. package/dist/sync/index.mjs +0 -9
  458. package/dist/sync/quic-sync.d.ts +0 -81
  459. package/dist/sync/quic-sync.d.ts.map +0 -1
  460. package/dist/sync/quic-sync.js +0 -329
  461. package/dist/sync/quic-sync.js.map +0 -1
  462. package/dist/sync/quic-sync.mjs +0 -323
  463. package/dist/sync/types.d.ts +0 -168
  464. package/dist/sync/types.d.ts.map +0 -1
  465. package/dist/sync/types.js +0 -8
  466. package/dist/sync/types.js.map +0 -1
  467. package/dist/sync/types.mjs +0 -6
  468. package/dist/types/index.d.ts +0 -117
  469. package/dist/types/index.d.ts.map +0 -1
  470. package/dist/types/index.js +0 -6
  471. package/dist/types/index.js.map +0 -1
  472. package/dist/types/index.mjs +0 -4
  473. package/dist/wasm/sql-wasm-debug.js +0 -6989
  474. package/dist/wasm/sql-wasm-debug.wasm +0 -0
  475. package/dist/wasm/sql-wasm.js +0 -188
  476. package/dist/wasm/sql-wasm.wasm +0 -0
  477. package/dist/wasm-loader.d.ts +0 -32
  478. package/dist/wasm-loader.d.ts.map +0 -1
  479. package/dist/wasm-loader.js +0 -78
  480. package/dist/wasm-loader.js.map +0 -1
  481. package/dist/wasm-loader.mjs +0 -67
  482. package/examples/adaptive-learning.ts +0 -284
  483. package/examples/browser/README.md +0 -732
  484. package/examples/browser/adaptive-recommendations/index.html +0 -427
  485. package/examples/browser/collaborative-filtering/index.html +0 -310
  486. package/examples/browser/continual-learning/index.html +0 -736
  487. package/examples/browser/experience-replay/index.html +0 -616
  488. package/examples/browser/index.html +0 -369
  489. package/examples/browser/meta-learning/index.html +0 -789
  490. package/examples/browser/neuro-symbolic/index.html +0 -692
  491. package/examples/browser/pattern-learning/index.html +0 -620
  492. package/examples/browser/quantum-inspired/index.html +0 -728
  493. package/examples/browser/rag/index.html +0 -624
  494. package/examples/browser/swarm-intelligence/index.html +0 -811
  495. package/examples/browser-basic.html +0 -170
  496. package/examples/browser-wasm-real.html +0 -231
  497. package/examples/hnsw-example.ts +0 -148
  498. package/examples/mcp-learning-example.ts +0 -220
  499. package/examples/node-basic.js +0 -70
  500. package/examples/quic-sync-example.ts +0 -310
  501. package/examples/quick-start.js +0 -68
  502. package/examples/test-v1.0.7-cdn.html +0 -190
  503. 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
+ }