agentdb 1.0.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 (361) hide show
  1. package/LICENSE +38 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +953 -0
  5. package/bin/agentdb.js +485 -0
  6. package/bin/plugin-cli-wrapper.mjs +21 -0
  7. package/dist/cache/query-cache.d.ts +105 -0
  8. package/dist/cache/query-cache.d.ts.map +1 -0
  9. package/dist/cache/query-cache.js +224 -0
  10. package/dist/cache/query-cache.js.map +1 -0
  11. package/dist/cache/query-cache.mjs +219 -0
  12. package/dist/cli/cache/query-cache.d.ts +104 -0
  13. package/dist/cli/cache/query-cache.js +244 -0
  14. package/dist/cli/cli/db-commands.d.ts +48 -0
  15. package/dist/cli/cli/db-commands.js +613 -0
  16. package/dist/cli/commands.d.ts +7 -0
  17. package/dist/cli/commands.d.ts.map +1 -0
  18. package/dist/cli/commands.js +113 -0
  19. package/dist/cli/commands.js.map +1 -0
  20. package/dist/cli/commands.mjs +104 -0
  21. package/dist/cli/core/backend-interface.d.ts +70 -0
  22. package/dist/cli/core/backend-interface.js +15 -0
  23. package/dist/cli/core/native-backend.d.ts +140 -0
  24. package/dist/cli/core/native-backend.js +432 -0
  25. package/dist/cli/core/vector-db.d.ts +126 -0
  26. package/dist/cli/core/vector-db.js +338 -0
  27. package/dist/cli/core/wasm-backend.d.ts +95 -0
  28. package/dist/cli/core/wasm-backend.js +418 -0
  29. package/dist/cli/db-commands.d.ts +49 -0
  30. package/dist/cli/db-commands.d.ts.map +1 -0
  31. package/dist/cli/db-commands.js +533 -0
  32. package/dist/cli/db-commands.js.map +1 -0
  33. package/dist/cli/db-commands.mjs +522 -0
  34. package/dist/cli/generator.d.ts +11 -0
  35. package/dist/cli/generator.d.ts.map +1 -0
  36. package/dist/cli/generator.js +567 -0
  37. package/dist/cli/generator.js.map +1 -0
  38. package/dist/cli/generator.mjs +527 -0
  39. package/dist/cli/help.d.ts +18 -0
  40. package/dist/cli/help.d.ts.map +1 -0
  41. package/dist/cli/help.js +676 -0
  42. package/dist/cli/help.js.map +1 -0
  43. package/dist/cli/help.mjs +667 -0
  44. package/dist/cli/index/hnsw.d.ts +164 -0
  45. package/dist/cli/index/hnsw.js +558 -0
  46. package/dist/cli/plugin-cli.d.ts +7 -0
  47. package/dist/cli/plugin-cli.d.ts.map +1 -0
  48. package/dist/cli/plugin-cli.js +295 -0
  49. package/dist/cli/plugin-cli.js.map +1 -0
  50. package/dist/cli/plugin-cli.mjs +289 -0
  51. package/dist/cli/quantization/product-quantization.d.ts +108 -0
  52. package/dist/cli/quantization/product-quantization.js +350 -0
  53. package/dist/cli/query/query-builder.d.ts +322 -0
  54. package/dist/cli/query/query-builder.js +600 -0
  55. package/dist/cli/templates.d.ts +14 -0
  56. package/dist/cli/templates.d.ts.map +1 -0
  57. package/dist/cli/templates.js +182 -0
  58. package/dist/cli/templates.js.map +1 -0
  59. package/dist/cli/templates.mjs +176 -0
  60. package/dist/cli/types/index.d.ts +116 -0
  61. package/dist/cli/types/index.js +5 -0
  62. package/dist/cli/types.d.ts +91 -0
  63. package/dist/cli/types.d.ts.map +1 -0
  64. package/dist/cli/types.js +6 -0
  65. package/dist/cli/types.js.map +1 -0
  66. package/dist/cli/types.mjs +4 -0
  67. package/dist/cli/wizard/index.d.ts +6 -0
  68. package/dist/cli/wizard/index.d.ts.map +1 -0
  69. package/dist/cli/wizard/index.js +138 -0
  70. package/dist/cli/wizard/index.js.map +1 -0
  71. package/dist/cli/wizard/index.mjs +131 -0
  72. package/dist/cli/wizard/prompts.d.ts +11 -0
  73. package/dist/cli/wizard/prompts.d.ts.map +1 -0
  74. package/dist/cli/wizard/prompts.js +482 -0
  75. package/dist/cli/wizard/prompts.js.map +1 -0
  76. package/dist/cli/wizard/prompts.mjs +470 -0
  77. package/dist/cli/wizard/validator.d.ts +13 -0
  78. package/dist/cli/wizard/validator.d.ts.map +1 -0
  79. package/dist/cli/wizard/validator.js +234 -0
  80. package/dist/cli/wizard/validator.js.map +1 -0
  81. package/dist/cli/wizard/validator.mjs +224 -0
  82. package/dist/core/backend-interface.d.ts +71 -0
  83. package/dist/core/backend-interface.d.ts.map +1 -0
  84. package/dist/core/backend-interface.js +16 -0
  85. package/dist/core/backend-interface.js.map +1 -0
  86. package/dist/core/backend-interface.mjs +12 -0
  87. package/dist/core/native-backend.d.ts +141 -0
  88. package/dist/core/native-backend.d.ts.map +1 -0
  89. package/dist/core/native-backend.js +457 -0
  90. package/dist/core/native-backend.js.map +1 -0
  91. package/dist/core/native-backend.mjs +449 -0
  92. package/dist/core/vector-db.d.ts +127 -0
  93. package/dist/core/vector-db.d.ts.map +1 -0
  94. package/dist/core/vector-db.js +266 -0
  95. package/dist/core/vector-db.js.map +1 -0
  96. package/dist/core/vector-db.mjs +261 -0
  97. package/dist/core/wasm-backend.d.ts +96 -0
  98. package/dist/core/wasm-backend.d.ts.map +1 -0
  99. package/dist/core/wasm-backend.js +393 -0
  100. package/dist/core/wasm-backend.js.map +1 -0
  101. package/dist/core/wasm-backend.mjs +385 -0
  102. package/dist/index/hnsw-optimized.d.ts +75 -0
  103. package/dist/index/hnsw-optimized.d.ts.map +1 -0
  104. package/dist/index/hnsw-optimized.js +412 -0
  105. package/dist/index/hnsw-optimized.js.map +1 -0
  106. package/dist/index/hnsw-optimized.mjs +407 -0
  107. package/dist/index/hnsw.d.ts +165 -0
  108. package/dist/index/hnsw.d.ts.map +1 -0
  109. package/dist/index/hnsw.js +521 -0
  110. package/dist/index/hnsw.js.map +1 -0
  111. package/dist/index/hnsw.mjs +516 -0
  112. package/dist/index.d.ts +57 -0
  113. package/dist/index.d.ts.map +1 -0
  114. package/dist/index.js +82 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/index.mjs +63 -0
  117. package/dist/mcp-server.d.ts +27 -0
  118. package/dist/mcp-server.d.ts.map +1 -0
  119. package/dist/mcp-server.js +789 -0
  120. package/dist/mcp-server.js.map +1 -0
  121. package/dist/mcp-server.mjs +784 -0
  122. package/dist/plugins/base-plugin.d.ts +114 -0
  123. package/dist/plugins/base-plugin.d.ts.map +1 -0
  124. package/dist/plugins/base-plugin.js +313 -0
  125. package/dist/plugins/base-plugin.js.map +1 -0
  126. package/dist/plugins/base-plugin.mjs +275 -0
  127. package/dist/plugins/implementations/active-learning.d.ts +135 -0
  128. package/dist/plugins/implementations/active-learning.d.ts.map +1 -0
  129. package/dist/plugins/implementations/active-learning.js +372 -0
  130. package/dist/plugins/implementations/active-learning.js.map +1 -0
  131. package/dist/plugins/implementations/active-learning.mjs +367 -0
  132. package/dist/plugins/implementations/actor-critic.d.ts +64 -0
  133. package/dist/plugins/implementations/actor-critic.d.ts.map +1 -0
  134. package/dist/plugins/implementations/actor-critic.js +363 -0
  135. package/dist/plugins/implementations/actor-critic.js.map +1 -0
  136. package/dist/plugins/implementations/actor-critic.mjs +358 -0
  137. package/dist/plugins/implementations/adversarial-training.d.ts +133 -0
  138. package/dist/plugins/implementations/adversarial-training.d.ts.map +1 -0
  139. package/dist/plugins/implementations/adversarial-training.js +409 -0
  140. package/dist/plugins/implementations/adversarial-training.js.map +1 -0
  141. package/dist/plugins/implementations/adversarial-training.mjs +404 -0
  142. package/dist/plugins/implementations/curriculum-learning.d.ts +132 -0
  143. package/dist/plugins/implementations/curriculum-learning.d.ts.map +1 -0
  144. package/dist/plugins/implementations/curriculum-learning.js +354 -0
  145. package/dist/plugins/implementations/curriculum-learning.js.map +1 -0
  146. package/dist/plugins/implementations/curriculum-learning.mjs +349 -0
  147. package/dist/plugins/implementations/decision-transformer.d.ts +77 -0
  148. package/dist/plugins/implementations/decision-transformer.d.ts.map +1 -0
  149. package/dist/plugins/implementations/decision-transformer.js +422 -0
  150. package/dist/plugins/implementations/decision-transformer.js.map +1 -0
  151. package/dist/plugins/implementations/decision-transformer.mjs +417 -0
  152. package/dist/plugins/implementations/federated-learning.d.ts +126 -0
  153. package/dist/plugins/implementations/federated-learning.d.ts.map +1 -0
  154. package/dist/plugins/implementations/federated-learning.js +436 -0
  155. package/dist/plugins/implementations/federated-learning.js.map +1 -0
  156. package/dist/plugins/implementations/federated-learning.mjs +431 -0
  157. package/dist/plugins/implementations/index.d.ts +30 -0
  158. package/dist/plugins/implementations/index.d.ts.map +1 -0
  159. package/dist/plugins/implementations/index.js +45 -0
  160. package/dist/plugins/implementations/index.js.map +1 -0
  161. package/dist/plugins/implementations/index.mjs +31 -0
  162. package/dist/plugins/implementations/multi-task-learning.d.ts +115 -0
  163. package/dist/plugins/implementations/multi-task-learning.d.ts.map +1 -0
  164. package/dist/plugins/implementations/multi-task-learning.js +369 -0
  165. package/dist/plugins/implementations/multi-task-learning.js.map +1 -0
  166. package/dist/plugins/implementations/multi-task-learning.mjs +364 -0
  167. package/dist/plugins/implementations/neural-architecture-search.d.ts +148 -0
  168. package/dist/plugins/implementations/neural-architecture-search.d.ts.map +1 -0
  169. package/dist/plugins/implementations/neural-architecture-search.js +379 -0
  170. package/dist/plugins/implementations/neural-architecture-search.js.map +1 -0
  171. package/dist/plugins/implementations/neural-architecture-search.mjs +374 -0
  172. package/dist/plugins/implementations/q-learning.d.ts +98 -0
  173. package/dist/plugins/implementations/q-learning.d.ts.map +1 -0
  174. package/dist/plugins/implementations/q-learning.js +435 -0
  175. package/dist/plugins/implementations/q-learning.js.map +1 -0
  176. package/dist/plugins/implementations/q-learning.mjs +430 -0
  177. package/dist/plugins/implementations/sarsa.d.ts +103 -0
  178. package/dist/plugins/implementations/sarsa.d.ts.map +1 -0
  179. package/dist/plugins/implementations/sarsa.js +347 -0
  180. package/dist/plugins/implementations/sarsa.js.map +1 -0
  181. package/dist/plugins/implementations/sarsa.mjs +342 -0
  182. package/dist/plugins/index.d.ts +107 -0
  183. package/dist/plugins/index.d.ts.map +1 -0
  184. package/dist/plugins/index.js +179 -0
  185. package/dist/plugins/index.js.map +1 -0
  186. package/dist/plugins/index.mjs +168 -0
  187. package/dist/plugins/interface.d.ts +439 -0
  188. package/dist/plugins/interface.d.ts.map +1 -0
  189. package/dist/plugins/interface.js +12 -0
  190. package/dist/plugins/interface.js.map +1 -0
  191. package/dist/plugins/interface.mjs +10 -0
  192. package/dist/plugins/learning-plugin.interface.d.ts +257 -0
  193. package/dist/plugins/learning-plugin.interface.d.ts.map +1 -0
  194. package/dist/plugins/learning-plugin.interface.js +7 -0
  195. package/dist/plugins/learning-plugin.interface.js.map +1 -0
  196. package/dist/plugins/learning-plugin.interface.mjs +5 -0
  197. package/dist/plugins/plugin-exports.d.ts +71 -0
  198. package/dist/plugins/plugin-exports.d.ts.map +1 -0
  199. package/dist/plugins/plugin-exports.js +78 -0
  200. package/dist/plugins/plugin-exports.js.map +1 -0
  201. package/dist/plugins/plugin-exports.mjs +69 -0
  202. package/dist/plugins/registry.d.ts +206 -0
  203. package/dist/plugins/registry.d.ts.map +1 -0
  204. package/dist/plugins/registry.js +365 -0
  205. package/dist/plugins/registry.js.map +1 -0
  206. package/dist/plugins/registry.mjs +356 -0
  207. package/dist/plugins/validator.d.ts +63 -0
  208. package/dist/plugins/validator.d.ts.map +1 -0
  209. package/dist/plugins/validator.js +464 -0
  210. package/dist/plugins/validator.js.map +1 -0
  211. package/dist/plugins/validator.mjs +458 -0
  212. package/dist/quantization/binary-quantization.d.ts +104 -0
  213. package/dist/quantization/binary-quantization.d.ts.map +1 -0
  214. package/dist/quantization/binary-quantization.js +246 -0
  215. package/dist/quantization/binary-quantization.js.map +1 -0
  216. package/dist/quantization/binary-quantization.mjs +240 -0
  217. package/dist/quantization/optimized-pq.d.ts +138 -0
  218. package/dist/quantization/optimized-pq.d.ts.map +1 -0
  219. package/dist/quantization/optimized-pq.js +320 -0
  220. package/dist/quantization/optimized-pq.js.map +1 -0
  221. package/dist/quantization/optimized-pq.mjs +313 -0
  222. package/dist/quantization/product-quantization.d.ts +109 -0
  223. package/dist/quantization/product-quantization.d.ts.map +1 -0
  224. package/dist/quantization/product-quantization.js +287 -0
  225. package/dist/quantization/product-quantization.js.map +1 -0
  226. package/dist/quantization/product-quantization.mjs +282 -0
  227. package/dist/quantization/scalar-quantization.d.ts +100 -0
  228. package/dist/quantization/scalar-quantization.d.ts.map +1 -0
  229. package/dist/quantization/scalar-quantization.js +324 -0
  230. package/dist/quantization/scalar-quantization.js.map +1 -0
  231. package/dist/quantization/scalar-quantization.mjs +319 -0
  232. package/dist/query/index.d.ts +6 -0
  233. package/dist/query/index.d.ts.map +1 -0
  234. package/dist/query/index.js +9 -0
  235. package/dist/query/index.js.map +1 -0
  236. package/dist/query/index.mjs +4 -0
  237. package/dist/query/query-builder.d.ts +323 -0
  238. package/dist/query/query-builder.d.ts.map +1 -0
  239. package/dist/query/query-builder.js +524 -0
  240. package/dist/query/query-builder.js.map +1 -0
  241. package/dist/query/query-builder.mjs +519 -0
  242. package/dist/reasoning/context-synthesizer.d.ts +57 -0
  243. package/dist/reasoning/context-synthesizer.d.ts.map +1 -0
  244. package/dist/reasoning/context-synthesizer.js +224 -0
  245. package/dist/reasoning/context-synthesizer.js.map +1 -0
  246. package/dist/reasoning/context-synthesizer.mjs +219 -0
  247. package/dist/reasoning/experience-curator.d.ts +66 -0
  248. package/dist/reasoning/experience-curator.d.ts.map +1 -0
  249. package/dist/reasoning/experience-curator.js +288 -0
  250. package/dist/reasoning/experience-curator.js.map +1 -0
  251. package/dist/reasoning/experience-curator.mjs +283 -0
  252. package/dist/reasoning/memory-optimizer.d.ts +69 -0
  253. package/dist/reasoning/memory-optimizer.d.ts.map +1 -0
  254. package/dist/reasoning/memory-optimizer.js +331 -0
  255. package/dist/reasoning/memory-optimizer.js.map +1 -0
  256. package/dist/reasoning/memory-optimizer.mjs +326 -0
  257. package/dist/reasoning/pattern-matcher.d.ts +59 -0
  258. package/dist/reasoning/pattern-matcher.d.ts.map +1 -0
  259. package/dist/reasoning/pattern-matcher.js +229 -0
  260. package/dist/reasoning/pattern-matcher.js.map +1 -0
  261. package/dist/reasoning/pattern-matcher.mjs +224 -0
  262. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts +118 -0
  263. package/dist/reasoningbank/adapter/agentdb-adapter.d.ts.map +1 -0
  264. package/dist/reasoningbank/adapter/agentdb-adapter.js +477 -0
  265. package/dist/reasoningbank/adapter/agentdb-adapter.js.map +1 -0
  266. package/dist/reasoningbank/adapter/types.d.ts +113 -0
  267. package/dist/reasoningbank/adapter/types.d.ts.map +1 -0
  268. package/dist/reasoningbank/adapter/types.js +9 -0
  269. package/dist/reasoningbank/adapter/types.js.map +1 -0
  270. package/dist/reasoningbank/cli/commands.d.ts +16 -0
  271. package/dist/reasoningbank/cli/commands.d.ts.map +1 -0
  272. package/dist/reasoningbank/cli/commands.js +272 -0
  273. package/dist/reasoningbank/cli/commands.js.map +1 -0
  274. package/dist/reasoningbank/mcp/agentdb-tools.d.ts +319 -0
  275. package/dist/reasoningbank/mcp/agentdb-tools.d.ts.map +1 -0
  276. package/dist/reasoningbank/mcp/agentdb-tools.js +301 -0
  277. package/dist/reasoningbank/mcp/agentdb-tools.js.map +1 -0
  278. package/dist/reasoningbank/migration/migrate.d.ts +25 -0
  279. package/dist/reasoningbank/migration/migrate.d.ts.map +1 -0
  280. package/dist/reasoningbank/migration/migrate.js +178 -0
  281. package/dist/reasoningbank/migration/migrate.js.map +1 -0
  282. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts +37 -0
  283. package/dist/reasoningbank/reasoning/context-synthesizer.d.ts.map +1 -0
  284. package/dist/reasoningbank/reasoning/context-synthesizer.js +114 -0
  285. package/dist/reasoningbank/reasoning/context-synthesizer.js.map +1 -0
  286. package/dist/reasoningbank/reasoning/experience-curator.d.ts +39 -0
  287. package/dist/reasoningbank/reasoning/experience-curator.d.ts.map +1 -0
  288. package/dist/reasoningbank/reasoning/experience-curator.js +98 -0
  289. package/dist/reasoningbank/reasoning/experience-curator.js.map +1 -0
  290. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts +44 -0
  291. package/dist/reasoningbank/reasoning/memory-optimizer.d.ts.map +1 -0
  292. package/dist/reasoningbank/reasoning/memory-optimizer.js +184 -0
  293. package/dist/reasoningbank/reasoning/memory-optimizer.js.map +1 -0
  294. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts +40 -0
  295. package/dist/reasoningbank/reasoning/pattern-matcher.d.ts.map +1 -0
  296. package/dist/reasoningbank/reasoning/pattern-matcher.js +87 -0
  297. package/dist/reasoningbank/reasoning/pattern-matcher.js.map +1 -0
  298. package/dist/reasoningbank/sync/quic-sync.d.ts +77 -0
  299. package/dist/reasoningbank/sync/quic-sync.d.ts.map +1 -0
  300. package/dist/reasoningbank/sync/quic-sync.js +165 -0
  301. package/dist/reasoningbank/sync/quic-sync.js.map +1 -0
  302. package/dist/sync/conflict.d.ts +78 -0
  303. package/dist/sync/conflict.d.ts.map +1 -0
  304. package/dist/sync/conflict.js +202 -0
  305. package/dist/sync/conflict.js.map +1 -0
  306. package/dist/sync/conflict.mjs +196 -0
  307. package/dist/sync/coordinator.d.ts +111 -0
  308. package/dist/sync/coordinator.d.ts.map +1 -0
  309. package/dist/sync/coordinator.js +256 -0
  310. package/dist/sync/coordinator.js.map +1 -0
  311. package/dist/sync/coordinator.mjs +250 -0
  312. package/dist/sync/delta.d.ts +81 -0
  313. package/dist/sync/delta.d.ts.map +1 -0
  314. package/dist/sync/delta.js +245 -0
  315. package/dist/sync/delta.js.map +1 -0
  316. package/dist/sync/delta.mjs +238 -0
  317. package/dist/sync/index.d.ts +11 -0
  318. package/dist/sync/index.d.ts.map +1 -0
  319. package/dist/sync/index.js +22 -0
  320. package/dist/sync/index.js.map +1 -0
  321. package/dist/sync/index.mjs +9 -0
  322. package/dist/sync/quic-sync.d.ts +81 -0
  323. package/dist/sync/quic-sync.d.ts.map +1 -0
  324. package/dist/sync/quic-sync.js +329 -0
  325. package/dist/sync/quic-sync.js.map +1 -0
  326. package/dist/sync/quic-sync.mjs +323 -0
  327. package/dist/sync/types.d.ts +168 -0
  328. package/dist/sync/types.d.ts.map +1 -0
  329. package/dist/sync/types.js +8 -0
  330. package/dist/sync/types.js.map +1 -0
  331. package/dist/sync/types.mjs +6 -0
  332. package/dist/types/index.d.ts +117 -0
  333. package/dist/types/index.d.ts.map +1 -0
  334. package/dist/types/index.js +6 -0
  335. package/dist/types/index.js.map +1 -0
  336. package/dist/types/index.mjs +4 -0
  337. package/dist/wasm-loader.d.ts +32 -0
  338. package/dist/wasm-loader.d.ts.map +1 -0
  339. package/dist/wasm-loader.js +75 -0
  340. package/dist/wasm-loader.js.map +1 -0
  341. package/dist/wasm-loader.mjs +64 -0
  342. package/examples/adaptive-learning.ts +284 -0
  343. package/examples/browser/README.md +732 -0
  344. package/examples/browser/adaptive-recommendations/index.html +427 -0
  345. package/examples/browser/collaborative-filtering/index.html +310 -0
  346. package/examples/browser/continual-learning/index.html +736 -0
  347. package/examples/browser/experience-replay/index.html +616 -0
  348. package/examples/browser/index.html +369 -0
  349. package/examples/browser/meta-learning/index.html +789 -0
  350. package/examples/browser/neuro-symbolic/index.html +692 -0
  351. package/examples/browser/pattern-learning/index.html +620 -0
  352. package/examples/browser/quantum-inspired/index.html +728 -0
  353. package/examples/browser/rag/index.html +624 -0
  354. package/examples/browser/swarm-intelligence/index.html +811 -0
  355. package/examples/browser-basic.html +170 -0
  356. package/examples/hnsw-example.ts +148 -0
  357. package/examples/node-basic.js +70 -0
  358. package/examples/quic-sync-example.ts +310 -0
  359. package/examples/quick-start.js +68 -0
  360. package/examples/wasm-example.ts +222 -0
  361. package/package.json +118 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ /**
3
+ * ContextSynthesizer - Combine multiple memory sources into coherent context
4
+ *
5
+ * Synthesizes context from patterns, experiences, and session history
6
+ * to provide comprehensive context for task execution.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ContextSynthesizer = void 0;
10
+ class ContextSynthesizer {
11
+ constructor(db, patternMatcher, experienceCurator) {
12
+ this.sessionTable = 'context_sessions';
13
+ this.db = db;
14
+ this.patternMatcher = patternMatcher;
15
+ this.experienceCurator = experienceCurator;
16
+ this.initializeSessionStorage();
17
+ }
18
+ initializeSessionStorage() {
19
+ const rawDb = this.db.getDatabase();
20
+ rawDb.exec(`
21
+ CREATE TABLE IF NOT EXISTS ${this.sessionTable} (
22
+ id TEXT PRIMARY KEY,
23
+ session_id TEXT NOT NULL,
24
+ task_description TEXT NOT NULL,
25
+ context_data TEXT NOT NULL,
26
+ timestamp INTEGER NOT NULL
27
+ );
28
+
29
+ CREATE INDEX IF NOT EXISTS idx_session_id ON ${this.sessionTable}(session_id);
30
+ CREATE INDEX IF NOT EXISTS idx_session_timestamp ON ${this.sessionTable}(timestamp);
31
+ `);
32
+ }
33
+ /**
34
+ * Synthesize context from multiple memory sources
35
+ *
36
+ * @param taskEmbedding - Vector embedding of current task
37
+ * @param sources - Memory sources to combine
38
+ * @returns Synthesized context with patterns, experiences, and metadata
39
+ */
40
+ async synthesizeContext(taskEmbedding, sources = [
41
+ { type: 'patterns', k: 3 },
42
+ { type: 'experiences', k: 5 },
43
+ { type: 'recent', k: 5 }
44
+ ]) {
45
+ const startTime = Date.now();
46
+ const patterns = [];
47
+ const experiences = [];
48
+ const sessionHistory = [];
49
+ // Gather data from each source
50
+ for (const source of sources) {
51
+ switch (source.type) {
52
+ case 'patterns':
53
+ const patternResults = await this.patternMatcher.findSimilar(taskEmbedding, source.k || 3, 0.7, source.filters);
54
+ patterns.push(...patternResults);
55
+ break;
56
+ case 'experiences':
57
+ const expResults = await this.experienceCurator.queryExperiences(taskEmbedding, source.k || 5, source.filters);
58
+ experiences.push(...expResults);
59
+ break;
60
+ case 'recent':
61
+ const recentExps = await this.experienceCurator.queryExperiences(taskEmbedding, source.k || 5, { maxAge: 24 * 60 * 60 * 1000 } // Last 24 hours
62
+ );
63
+ experiences.push(...recentExps);
64
+ break;
65
+ case 'session':
66
+ if (source.filters?.sessionId) {
67
+ sessionHistory.push(...this.getSessionHistory(source.filters.sessionId));
68
+ }
69
+ break;
70
+ }
71
+ }
72
+ // Remove duplicates
73
+ const uniquePatterns = this.deduplicatePatterns(patterns);
74
+ const uniqueExperiences = this.deduplicateExperiences(experiences);
75
+ // Synthesize text context
76
+ const synthesizedContext = this.buildTextContext(uniquePatterns, uniqueExperiences);
77
+ // Calculate confidence based on data quality
78
+ const confidence = this.calculateConfidence(uniquePatterns, uniqueExperiences);
79
+ const duration = Date.now() - startTime;
80
+ console.log(`[ContextSynthesizer] Synthesized context in ${duration}ms (${uniquePatterns.length} patterns, ${uniqueExperiences.length} experiences)`);
81
+ return {
82
+ taskEmbedding,
83
+ patterns: uniquePatterns,
84
+ experiences: uniqueExperiences,
85
+ sessionHistory,
86
+ synthesizedContext,
87
+ confidence
88
+ };
89
+ }
90
+ /**
91
+ * Build human-readable text context from patterns and experiences
92
+ */
93
+ buildTextContext(patterns, experiences) {
94
+ const sections = [];
95
+ if (patterns.length > 0) {
96
+ sections.push('## Relevant Patterns\n');
97
+ patterns.slice(0, 3).forEach((pattern, i) => {
98
+ sections.push(`${i + 1}. **${pattern.taskType}** (Success: ${(pattern.successRate * 100).toFixed(1)}%)`);
99
+ sections.push(` Approach: ${pattern.approach}`);
100
+ sections.push(` Domain: ${pattern.metadata.domain} | Complexity: ${pattern.metadata.complexity}`);
101
+ sections.push('');
102
+ });
103
+ }
104
+ if (experiences.length > 0) {
105
+ const successfulExps = experiences.filter(e => e.success);
106
+ const failedExps = experiences.filter(e => !e.success);
107
+ if (successfulExps.length > 0) {
108
+ sections.push('## Successful Experiences\n');
109
+ successfulExps.slice(0, 3).forEach((exp, i) => {
110
+ sections.push(`${i + 1}. ${exp.taskDescription}`);
111
+ sections.push(` Approach: ${exp.approach}`);
112
+ sections.push(` Quality: ${(exp.quality * 100).toFixed(1)}% | Duration: ${(exp.duration / 1000).toFixed(1)}s`);
113
+ sections.push('');
114
+ });
115
+ }
116
+ if (failedExps.length > 0) {
117
+ sections.push('## Lessons from Failures\n');
118
+ failedExps.slice(0, 2).forEach((exp, i) => {
119
+ sections.push(`${i + 1}. ${exp.taskDescription}`);
120
+ sections.push(` What went wrong: ${exp.outcome}`);
121
+ if (exp.metadata.errorType) {
122
+ sections.push(` Error type: ${exp.metadata.errorType}`);
123
+ }
124
+ sections.push('');
125
+ });
126
+ }
127
+ }
128
+ if (sections.length === 0) {
129
+ return 'No relevant context found. This is a novel task.';
130
+ }
131
+ return sections.join('\n');
132
+ }
133
+ /**
134
+ * Calculate confidence score for synthesized context
135
+ */
136
+ calculateConfidence(patterns, experiences) {
137
+ let confidence = 0;
138
+ // Pattern confidence (40% weight)
139
+ if (patterns.length > 0) {
140
+ const avgPatternSuccess = patterns.reduce((sum, p) => sum + p.successRate, 0) / patterns.length;
141
+ const patternConfidence = avgPatternSuccess * Math.min(1, patterns.length / 3);
142
+ confidence += patternConfidence * 0.4;
143
+ }
144
+ // Experience confidence (40% weight)
145
+ if (experiences.length > 0) {
146
+ const successfulExps = experiences.filter(e => e.success).length;
147
+ const expConfidence = (successfulExps / experiences.length) * Math.min(1, experiences.length / 5);
148
+ confidence += expConfidence * 0.4;
149
+ }
150
+ // Recency confidence (20% weight)
151
+ const recentExps = experiences.filter(e => {
152
+ const age = Date.now() - (e.timestamp || 0);
153
+ return age < 7 * 24 * 60 * 60 * 1000; // Within 7 days
154
+ });
155
+ if (experiences.length > 0) {
156
+ const recencyConfidence = recentExps.length / experiences.length;
157
+ confidence += recencyConfidence * 0.2;
158
+ }
159
+ return confidence;
160
+ }
161
+ /**
162
+ * Store context for a task execution
163
+ */
164
+ async storeContextExecution(sessionId, taskDescription, context) {
165
+ const rawDb = this.db.getDatabase();
166
+ const id = this.generateContextId();
167
+ const stmt = rawDb.prepare(`
168
+ INSERT INTO ${this.sessionTable}
169
+ (id, session_id, task_description, context_data, timestamp)
170
+ VALUES (?, ?, ?, ?, ?)
171
+ `);
172
+ stmt.run(id, sessionId, taskDescription, JSON.stringify({
173
+ patterns: context.patterns.map(p => p.id),
174
+ experiences: context.experiences.map(e => e.id),
175
+ confidence: context.confidence
176
+ }), Date.now());
177
+ }
178
+ /**
179
+ * Get session history
180
+ */
181
+ getSessionHistory(sessionId) {
182
+ const rawDb = this.db.getDatabase();
183
+ const stmt = rawDb.prepare(`
184
+ SELECT * FROM ${this.sessionTable}
185
+ WHERE session_id = ?
186
+ ORDER BY timestamp DESC
187
+ LIMIT 10
188
+ `);
189
+ return stmt.all(sessionId);
190
+ }
191
+ /**
192
+ * Remove duplicate patterns (keep highest similarity)
193
+ */
194
+ deduplicatePatterns(patterns) {
195
+ const seen = new Map();
196
+ for (const pattern of patterns) {
197
+ const existing = seen.get(pattern.id);
198
+ if (!existing || pattern.similarity > existing.similarity) {
199
+ seen.set(pattern.id, pattern);
200
+ }
201
+ }
202
+ return Array.from(seen.values());
203
+ }
204
+ /**
205
+ * Remove duplicate experiences (keep highest relevance)
206
+ */
207
+ deduplicateExperiences(experiences) {
208
+ const seen = new Map();
209
+ for (const exp of experiences) {
210
+ if (!exp.id)
211
+ continue;
212
+ const existing = seen.get(exp.id);
213
+ if (!existing || exp.relevance > existing.relevance) {
214
+ seen.set(exp.id, exp);
215
+ }
216
+ }
217
+ return Array.from(seen.values());
218
+ }
219
+ generateContextId() {
220
+ return `ctx_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
221
+ }
222
+ }
223
+ exports.ContextSynthesizer = ContextSynthesizer;
224
+ //# sourceMappingURL=context-synthesizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-synthesizer.js","sourceRoot":"","sources":["../../src/reasoning/context-synthesizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * ContextSynthesizer - Combine multiple memory sources into coherent context
3
+ *
4
+ * Synthesizes context from patterns, experiences, and session history
5
+ * to provide comprehensive context for task execution.
6
+ */
7
+ export class ContextSynthesizer {
8
+ constructor(db, patternMatcher, experienceCurator) {
9
+ this.sessionTable = 'context_sessions';
10
+ this.db = db;
11
+ this.patternMatcher = patternMatcher;
12
+ this.experienceCurator = experienceCurator;
13
+ this.initializeSessionStorage();
14
+ }
15
+ initializeSessionStorage() {
16
+ const rawDb = this.db.getDatabase();
17
+ rawDb.exec(`
18
+ CREATE TABLE IF NOT EXISTS ${this.sessionTable} (
19
+ id TEXT PRIMARY KEY,
20
+ session_id TEXT NOT NULL,
21
+ task_description TEXT NOT NULL,
22
+ context_data TEXT NOT NULL,
23
+ timestamp INTEGER NOT NULL
24
+ );
25
+
26
+ CREATE INDEX IF NOT EXISTS idx_session_id ON ${this.sessionTable}(session_id);
27
+ CREATE INDEX IF NOT EXISTS idx_session_timestamp ON ${this.sessionTable}(timestamp);
28
+ `);
29
+ }
30
+ /**
31
+ * Synthesize context from multiple memory sources
32
+ *
33
+ * @param taskEmbedding - Vector embedding of current task
34
+ * @param sources - Memory sources to combine
35
+ * @returns Synthesized context with patterns, experiences, and metadata
36
+ */
37
+ async synthesizeContext(taskEmbedding, sources = [
38
+ { type: 'patterns', k: 3 },
39
+ { type: 'experiences', k: 5 },
40
+ { type: 'recent', k: 5 }
41
+ ]) {
42
+ const startTime = Date.now();
43
+ const patterns = [];
44
+ const experiences = [];
45
+ const sessionHistory = [];
46
+ // Gather data from each source
47
+ for (const source of sources) {
48
+ switch (source.type) {
49
+ case 'patterns':
50
+ const patternResults = await this.patternMatcher.findSimilar(taskEmbedding, source.k || 3, 0.7, source.filters);
51
+ patterns.push(...patternResults);
52
+ break;
53
+ case 'experiences':
54
+ const expResults = await this.experienceCurator.queryExperiences(taskEmbedding, source.k || 5, source.filters);
55
+ experiences.push(...expResults);
56
+ break;
57
+ case 'recent':
58
+ const recentExps = await this.experienceCurator.queryExperiences(taskEmbedding, source.k || 5, { maxAge: 24 * 60 * 60 * 1000 } // Last 24 hours
59
+ );
60
+ experiences.push(...recentExps);
61
+ break;
62
+ case 'session':
63
+ if (source.filters?.sessionId) {
64
+ sessionHistory.push(...this.getSessionHistory(source.filters.sessionId));
65
+ }
66
+ break;
67
+ }
68
+ }
69
+ // Remove duplicates
70
+ const uniquePatterns = this.deduplicatePatterns(patterns);
71
+ const uniqueExperiences = this.deduplicateExperiences(experiences);
72
+ // Synthesize text context
73
+ const synthesizedContext = this.buildTextContext(uniquePatterns, uniqueExperiences);
74
+ // Calculate confidence based on data quality
75
+ const confidence = this.calculateConfidence(uniquePatterns, uniqueExperiences);
76
+ const duration = Date.now() - startTime;
77
+ console.log(`[ContextSynthesizer] Synthesized context in ${duration}ms (${uniquePatterns.length} patterns, ${uniqueExperiences.length} experiences)`);
78
+ return {
79
+ taskEmbedding,
80
+ patterns: uniquePatterns,
81
+ experiences: uniqueExperiences,
82
+ sessionHistory,
83
+ synthesizedContext,
84
+ confidence
85
+ };
86
+ }
87
+ /**
88
+ * Build human-readable text context from patterns and experiences
89
+ */
90
+ buildTextContext(patterns, experiences) {
91
+ const sections = [];
92
+ if (patterns.length > 0) {
93
+ sections.push('## Relevant Patterns\n');
94
+ patterns.slice(0, 3).forEach((pattern, i) => {
95
+ sections.push(`${i + 1}. **${pattern.taskType}** (Success: ${(pattern.successRate * 100).toFixed(1)}%)`);
96
+ sections.push(` Approach: ${pattern.approach}`);
97
+ sections.push(` Domain: ${pattern.metadata.domain} | Complexity: ${pattern.metadata.complexity}`);
98
+ sections.push('');
99
+ });
100
+ }
101
+ if (experiences.length > 0) {
102
+ const successfulExps = experiences.filter(e => e.success);
103
+ const failedExps = experiences.filter(e => !e.success);
104
+ if (successfulExps.length > 0) {
105
+ sections.push('## Successful Experiences\n');
106
+ successfulExps.slice(0, 3).forEach((exp, i) => {
107
+ sections.push(`${i + 1}. ${exp.taskDescription}`);
108
+ sections.push(` Approach: ${exp.approach}`);
109
+ sections.push(` Quality: ${(exp.quality * 100).toFixed(1)}% | Duration: ${(exp.duration / 1000).toFixed(1)}s`);
110
+ sections.push('');
111
+ });
112
+ }
113
+ if (failedExps.length > 0) {
114
+ sections.push('## Lessons from Failures\n');
115
+ failedExps.slice(0, 2).forEach((exp, i) => {
116
+ sections.push(`${i + 1}. ${exp.taskDescription}`);
117
+ sections.push(` What went wrong: ${exp.outcome}`);
118
+ if (exp.metadata.errorType) {
119
+ sections.push(` Error type: ${exp.metadata.errorType}`);
120
+ }
121
+ sections.push('');
122
+ });
123
+ }
124
+ }
125
+ if (sections.length === 0) {
126
+ return 'No relevant context found. This is a novel task.';
127
+ }
128
+ return sections.join('\n');
129
+ }
130
+ /**
131
+ * Calculate confidence score for synthesized context
132
+ */
133
+ calculateConfidence(patterns, experiences) {
134
+ let confidence = 0;
135
+ // Pattern confidence (40% weight)
136
+ if (patterns.length > 0) {
137
+ const avgPatternSuccess = patterns.reduce((sum, p) => sum + p.successRate, 0) / patterns.length;
138
+ const patternConfidence = avgPatternSuccess * Math.min(1, patterns.length / 3);
139
+ confidence += patternConfidence * 0.4;
140
+ }
141
+ // Experience confidence (40% weight)
142
+ if (experiences.length > 0) {
143
+ const successfulExps = experiences.filter(e => e.success).length;
144
+ const expConfidence = (successfulExps / experiences.length) * Math.min(1, experiences.length / 5);
145
+ confidence += expConfidence * 0.4;
146
+ }
147
+ // Recency confidence (20% weight)
148
+ const recentExps = experiences.filter(e => {
149
+ const age = Date.now() - (e.timestamp || 0);
150
+ return age < 7 * 24 * 60 * 60 * 1000; // Within 7 days
151
+ });
152
+ if (experiences.length > 0) {
153
+ const recencyConfidence = recentExps.length / experiences.length;
154
+ confidence += recencyConfidence * 0.2;
155
+ }
156
+ return confidence;
157
+ }
158
+ /**
159
+ * Store context for a task execution
160
+ */
161
+ async storeContextExecution(sessionId, taskDescription, context) {
162
+ const rawDb = this.db.getDatabase();
163
+ const id = this.generateContextId();
164
+ const stmt = rawDb.prepare(`
165
+ INSERT INTO ${this.sessionTable}
166
+ (id, session_id, task_description, context_data, timestamp)
167
+ VALUES (?, ?, ?, ?, ?)
168
+ `);
169
+ stmt.run(id, sessionId, taskDescription, JSON.stringify({
170
+ patterns: context.patterns.map(p => p.id),
171
+ experiences: context.experiences.map(e => e.id),
172
+ confidence: context.confidence
173
+ }), Date.now());
174
+ }
175
+ /**
176
+ * Get session history
177
+ */
178
+ getSessionHistory(sessionId) {
179
+ const rawDb = this.db.getDatabase();
180
+ const stmt = rawDb.prepare(`
181
+ SELECT * FROM ${this.sessionTable}
182
+ WHERE session_id = ?
183
+ ORDER BY timestamp DESC
184
+ LIMIT 10
185
+ `);
186
+ return stmt.all(sessionId);
187
+ }
188
+ /**
189
+ * Remove duplicate patterns (keep highest similarity)
190
+ */
191
+ deduplicatePatterns(patterns) {
192
+ const seen = new Map();
193
+ for (const pattern of patterns) {
194
+ const existing = seen.get(pattern.id);
195
+ if (!existing || pattern.similarity > existing.similarity) {
196
+ seen.set(pattern.id, pattern);
197
+ }
198
+ }
199
+ return Array.from(seen.values());
200
+ }
201
+ /**
202
+ * Remove duplicate experiences (keep highest relevance)
203
+ */
204
+ deduplicateExperiences(experiences) {
205
+ const seen = new Map();
206
+ for (const exp of experiences) {
207
+ if (!exp.id)
208
+ continue;
209
+ const existing = seen.get(exp.id);
210
+ if (!existing || exp.relevance > existing.relevance) {
211
+ seen.set(exp.id, exp);
212
+ }
213
+ }
214
+ return Array.from(seen.values());
215
+ }
216
+ generateContextId() {
217
+ return `ctx_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
218
+ }
219
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * ExperienceCurator - Store and retrieve successful task execution experiences
3
+ *
4
+ * Curates high-quality experiences for learning and adaptation.
5
+ * Scores experiences based on quality metrics and retrieves relevant ones.
6
+ */
7
+ import { SQLiteVectorDB } from '../core/vector-db';
8
+ import { Experience } from '../types';
9
+ export declare class ExperienceCurator {
10
+ private db;
11
+ private experienceTable;
12
+ constructor(db: SQLiteVectorDB);
13
+ private initializeExperienceStorage;
14
+ /**
15
+ * Store a task execution experience
16
+ */
17
+ storeExperience(experience: Omit<Experience, 'id' | 'timestamp'>): Promise<string>;
18
+ /**
19
+ * Calculate quality score for an experience
20
+ * Factors: success, duration, token efficiency, iteration count
21
+ */
22
+ private calculateQualityScore;
23
+ /**
24
+ * Query experiences similar to a task
25
+ *
26
+ * @param taskEmbedding - Vector embedding of current task
27
+ * @param k - Number of experiences to return
28
+ * @param filters - Optional filters
29
+ * @returns Array of relevant experiences sorted by relevance
30
+ */
31
+ queryExperiences(taskEmbedding: number[], k?: number, filters?: {
32
+ successOnly?: boolean;
33
+ domain?: string;
34
+ minQuality?: number;
35
+ maxAge?: number;
36
+ }): Promise<Array<Experience & {
37
+ relevance: number;
38
+ }>>;
39
+ /**
40
+ * Get best experiences for a domain
41
+ */
42
+ getBestExperiences(domain: string, limit?: number): Promise<Experience[]>;
43
+ /**
44
+ * Get learning statistics
45
+ */
46
+ getStats(): {
47
+ totalExperiences: number;
48
+ successRate: number;
49
+ avgQuality: number;
50
+ avgDuration: number;
51
+ domainBreakdown: Map<string, {
52
+ count: number;
53
+ successRate: number;
54
+ }>;
55
+ };
56
+ /**
57
+ * Prune low-quality old experiences
58
+ */
59
+ pruneExperiences(options: {
60
+ minQuality?: number;
61
+ maxAge?: number;
62
+ keepMinimum?: number;
63
+ }): Promise<number>;
64
+ private generateExperienceId;
65
+ }
66
+ //# sourceMappingURL=experience-curator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experience-curator.d.ts","sourceRoot":"","sources":["../../src/reasoning/experience-curator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAsB,MAAM,UAAU,CAAC;AAE1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,eAAe,CAA2B;gBAEtC,EAAE,EAAE,cAAc;IAK9B,OAAO,CAAC,2BAA2B;IA4BnC;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAkDxF;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA8B7B;;;;;;;OAOG;IACG,gBAAgB,CACpB,aAAa,EAAE,MAAM,EAAE,EACvB,CAAC,GAAE,MAAW,EACd,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA8ErD;;OAEG;IACG,kBAAkB,CACtB,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,UAAU,EAAE,CAAC;IAsCxB;;OAEG;IACH,QAAQ,IAAI;QACV,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtE;IAiDD;;OAEG;IACG,gBAAgB,CAAC,OAAO,EAAE;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoCnB,OAAO,CAAC,oBAAoB;CAG7B"}