agentic-flow 2.0.3 → 2.0.4

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 (322) hide show
  1. package/.claude/agents/test-neural.md +14 -0
  2. package/.claude/settings.json +9 -133
  3. package/README.md +624 -1776
  4. package/dist/.tsbuildinfo +1 -1
  5. package/dist/billing/mcp/tools.js +0 -1
  6. package/dist/billing/mcp/tools.js.map +1 -1
  7. package/dist/cli/commands/hooks.d.ts.map +1 -1
  8. package/dist/cli/commands/hooks.js +4 -79
  9. package/dist/cli/commands/hooks.js.map +1 -1
  10. package/dist/cli-proxy.js +1 -89
  11. package/dist/cli-proxy.js.map +1 -1
  12. package/dist/core/agentdb-fast.js +3 -3
  13. package/dist/core/agentdb-fast.js.map +1 -1
  14. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  15. package/dist/core/agentdb-wrapper-enhanced.js +4 -20
  16. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  17. package/dist/core/agentdb-wrapper.d.ts +2 -3
  18. package/dist/core/agentdb-wrapper.d.ts.map +1 -1
  19. package/dist/core/agentdb-wrapper.js +1 -15
  20. package/dist/core/agentdb-wrapper.js.map +1 -1
  21. package/dist/core/attention-native.d.ts +0 -4
  22. package/dist/core/attention-native.d.ts.map +1 -1
  23. package/dist/core/attention-native.js +2 -14
  24. package/dist/core/attention-native.js.map +1 -1
  25. package/dist/federation/SecurityManager.d.ts +2 -11
  26. package/dist/federation/SecurityManager.d.ts.map +1 -1
  27. package/dist/federation/SecurityManager.js +17 -50
  28. package/dist/federation/SecurityManager.js.map +1 -1
  29. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  30. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  31. package/dist/hooks/swarm-learning-optimizer.js +5 -5
  32. package/dist/hooks/swarm-learning-optimizer.js.map +1 -1
  33. package/dist/intelligence/IntelligenceStore.d.ts +26 -35
  34. package/dist/intelligence/IntelligenceStore.d.ts.map +1 -1
  35. package/dist/intelligence/IntelligenceStore.js +123 -308
  36. package/dist/intelligence/IntelligenceStore.js.map +1 -1
  37. package/dist/intelligence/RuVectorIntelligence.d.ts +1 -26
  38. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -1
  39. package/dist/intelligence/RuVectorIntelligence.js +10 -49
  40. package/dist/intelligence/RuVectorIntelligence.js.map +1 -1
  41. package/dist/intelligence/agent-booster-enhanced.d.ts +0 -1
  42. package/dist/intelligence/agent-booster-enhanced.d.ts.map +1 -1
  43. package/dist/intelligence/agent-booster-enhanced.js +3 -24
  44. package/dist/intelligence/agent-booster-enhanced.js.map +1 -1
  45. package/dist/intelligence/index.d.ts +3 -29
  46. package/dist/intelligence/index.d.ts.map +1 -1
  47. package/dist/intelligence/index.js +3 -13
  48. package/dist/intelligence/index.js.map +1 -1
  49. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  50. package/dist/mcp/claudeFlowSdkServer.js +3 -9
  51. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  52. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +5 -5
  53. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -1
  54. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -1
  55. package/dist/mcp/fastmcp/tools/swarm/init.js +7 -36
  56. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -1
  57. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -1
  58. package/dist/mcp/fastmcp/tools/swarm/spawn.js +8 -47
  59. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -1
  60. package/dist/mcp/tools/agent-booster-tools.d.ts +1 -1
  61. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  62. package/dist/mcp/tools/agent-booster-tools.js +4 -10
  63. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  64. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  65. package/dist/mcp/tools/sona-tools.js +0 -6
  66. package/dist/mcp/tools/sona-tools.js.map +1 -1
  67. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  68. package/dist/optimizations/agent-booster-migration.js +2 -5
  69. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  70. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  71. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  72. package/dist/proxy/quic-proxy.d.ts +1 -0
  73. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  74. package/dist/proxy/quic-proxy.js +2 -2
  75. package/dist/proxy/quic-proxy.js.map +1 -1
  76. package/dist/reasoningbank/AdvancedMemory.js +1 -1
  77. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  78. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  79. package/dist/reasoningbank/HybridBackend.js +5 -2
  80. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  81. package/dist/reasoningbank/backend-selector.d.ts +1 -11
  82. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  83. package/dist/reasoningbank/backend-selector.js +5 -45
  84. package/dist/reasoningbank/backend-selector.js.map +1 -1
  85. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -1
  86. package/dist/reasoningbank/core/consolidate.js +45 -113
  87. package/dist/reasoningbank/core/consolidate.js.map +1 -1
  88. package/dist/reasoningbank/index-new.d.ts +6 -1
  89. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  90. package/dist/reasoningbank/index-new.js +6 -1
  91. package/dist/reasoningbank/index-new.js.map +1 -1
  92. package/dist/reasoningbank/index.d.ts +6 -2
  93. package/dist/reasoningbank/index.d.ts.map +1 -1
  94. package/dist/reasoningbank/index.js +6 -2
  95. package/dist/reasoningbank/index.js.map +1 -1
  96. package/dist/reasoningbank/utils/embeddings.d.ts +0 -1
  97. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -1
  98. package/dist/reasoningbank/utils/embeddings.js +26 -53
  99. package/dist/reasoningbank/utils/embeddings.js.map +1 -1
  100. package/dist/router/index.d.ts +17 -0
  101. package/dist/router/index.d.ts.map +1 -0
  102. package/dist/router/index.js +19 -0
  103. package/dist/router/index.js.map +1 -0
  104. package/dist/router/providers/onnx-local-optimized.d.ts +0 -2
  105. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -1
  106. package/dist/router/providers/onnx-local-optimized.js +0 -10
  107. package/dist/router/providers/onnx-local-optimized.js.map +1 -1
  108. package/dist/router/providers/onnx-local.d.ts +0 -1
  109. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  110. package/dist/router/providers/onnx-local.js +5 -22
  111. package/dist/router/providers/onnx-local.js.map +1 -1
  112. package/dist/services/embedding-service.js.map +1 -1
  113. package/dist/services/sona-agent-training.d.ts +0 -1
  114. package/dist/services/sona-agent-training.d.ts.map +1 -1
  115. package/dist/services/sona-agent-training.js.map +1 -1
  116. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  117. package/dist/services/sona-agentdb-integration.js +6 -9
  118. package/dist/services/sona-agentdb-integration.js.map +1 -1
  119. package/dist/services/sona-service.d.ts.map +1 -1
  120. package/dist/services/sona-service.js +5 -6
  121. package/dist/services/sona-service.js.map +1 -1
  122. package/dist/utils/cli.d.ts +1 -1
  123. package/dist/utils/cli.d.ts.map +1 -1
  124. package/dist/utils/cli.js +0 -21
  125. package/dist/utils/cli.js.map +1 -1
  126. package/package.json +7 -19
  127. package/scripts/postinstall.js +4 -45
  128. package/.claude/agents/.claude-flow/metrics/agent-metrics.json +0 -1
  129. package/.claude/agents/.claude-flow/metrics/performance.json +0 -87
  130. package/.claude/agents/.claude-flow/metrics/task-metrics.json +0 -10
  131. package/.claude/skills/.claude-flow/metrics/agent-metrics.json +0 -1
  132. package/.claude/skills/.claude-flow/metrics/performance.json +0 -87
  133. package/.claude/skills/.claude-flow/metrics/task-metrics.json +0 -10
  134. package/.claude/skills/agentic-flow-quickstart/skill.md +0 -69
  135. package/.claude/skills/hooks-automation/skill.md +0 -155
  136. package/.claude/skills/memory-patterns/skill.md +0 -110
  137. package/.claude/skills/skill-builder/.claude-flow/metrics/agent-metrics.json +0 -1
  138. package/.claude/skills/skill-builder/.claude-flow/metrics/performance.json +0 -87
  139. package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +0 -10
  140. package/.claude/skills/sparc-methodology/skill.md +0 -137
  141. package/.claude/skills/swarm-coordination/skill.md +0 -94
  142. package/.claude/skills/worker-benchmarks/skill.md +0 -135
  143. package/.claude/skills/worker-integration/skill.md +0 -154
  144. package/.claude/statusline.mjs +0 -109
  145. package/.claude/statusline.sh +0 -71
  146. package/dist/agentdb/benchmarks/comprehensive-benchmark.js +0 -664
  147. package/dist/agentdb/benchmarks/frontier-benchmark.js +0 -419
  148. package/dist/agentdb/benchmarks/reflexion-benchmark.js +0 -370
  149. package/dist/agentdb/cli/agentdb-cli.js +0 -717
  150. package/dist/agentdb/controllers/CausalMemoryGraph.js +0 -322
  151. package/dist/agentdb/controllers/CausalRecall.js +0 -281
  152. package/dist/agentdb/controllers/EmbeddingService.d.ts +0 -37
  153. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +0 -1
  154. package/dist/agentdb/controllers/EmbeddingService.js +0 -119
  155. package/dist/agentdb/controllers/EmbeddingService.js.map +0 -1
  156. package/dist/agentdb/controllers/ExplainableRecall.js +0 -387
  157. package/dist/agentdb/controllers/NightlyLearner.js +0 -382
  158. package/dist/agentdb/controllers/ReflexionMemory.js +0 -239
  159. package/dist/agentdb/controllers/SkillLibrary.js +0 -276
  160. package/dist/agentdb/controllers/frontier-index.js +0 -9
  161. package/dist/agentdb/controllers/index.js +0 -8
  162. package/dist/agentdb/optimizations/BatchOperations.js +0 -198
  163. package/dist/agentdb/optimizations/QueryOptimizer.js +0 -225
  164. package/dist/agentdb/optimizations/index.js +0 -7
  165. package/dist/agentdb/tests/frontier-features.test.js +0 -665
  166. package/dist/benchmarks/embeddings-benchmark.d.ts +0 -38
  167. package/dist/benchmarks/embeddings-benchmark.d.ts.map +0 -1
  168. package/dist/benchmarks/embeddings-benchmark.js +0 -282
  169. package/dist/benchmarks/embeddings-benchmark.js.map +0 -1
  170. package/dist/cli/commands/embeddings.d.ts +0 -12
  171. package/dist/cli/commands/embeddings.d.ts.map +0 -1
  172. package/dist/cli/commands/embeddings.js +0 -386
  173. package/dist/cli/commands/embeddings.js.map +0 -1
  174. package/dist/cli/commands/init.d.ts +0 -8
  175. package/dist/cli/commands/init.d.ts.map +0 -1
  176. package/dist/cli/commands/init.js +0 -514
  177. package/dist/cli/commands/init.js.map +0 -1
  178. package/dist/cli/commands/workers.d.ts +0 -9
  179. package/dist/cli/commands/workers.d.ts.map +0 -1
  180. package/dist/cli/commands/workers.js +0 -991
  181. package/dist/cli/commands/workers.js.map +0 -1
  182. package/dist/cli/skills-manager.js +0 -1297
  183. package/dist/cli/update-message.js +0 -175
  184. package/dist/embeddings/index.d.ts +0 -17
  185. package/dist/embeddings/index.d.ts.map +0 -1
  186. package/dist/embeddings/index.js +0 -17
  187. package/dist/embeddings/index.js.map +0 -1
  188. package/dist/embeddings/neural-substrate.d.ts +0 -206
  189. package/dist/embeddings/neural-substrate.d.ts.map +0 -1
  190. package/dist/embeddings/neural-substrate.js +0 -629
  191. package/dist/embeddings/neural-substrate.js.map +0 -1
  192. package/dist/embeddings/optimized-embedder.d.ts +0 -103
  193. package/dist/embeddings/optimized-embedder.d.ts.map +0 -1
  194. package/dist/embeddings/optimized-embedder.js +0 -730
  195. package/dist/embeddings/optimized-embedder.js.map +0 -1
  196. package/dist/examples/embedding-geometry.d.ts +0 -105
  197. package/dist/examples/embedding-geometry.d.ts.map +0 -1
  198. package/dist/examples/embedding-geometry.js +0 -528
  199. package/dist/examples/embedding-geometry.js.map +0 -1
  200. package/dist/memory/SharedMemoryPool.d.ts +0 -129
  201. package/dist/memory/SharedMemoryPool.d.ts.map +0 -1
  202. package/dist/memory/SharedMemoryPool.js +0 -243
  203. package/dist/memory/SharedMemoryPool.js.map +0 -1
  204. package/dist/memory/index.d.ts +0 -8
  205. package/dist/memory/index.d.ts.map +0 -1
  206. package/dist/memory/index.js +0 -7
  207. package/dist/memory/index.js.map +0 -1
  208. package/dist/proxy/http3-proxy-old.js +0 -331
  209. package/dist/proxy/proxy/anthropic-to-gemini.js +0 -439
  210. package/dist/proxy/utils/logger.js +0 -59
  211. package/dist/reasoningbank/agentdb-adapter.js +0 -125
  212. package/dist/reasoningbank/core/database.js +0 -250
  213. package/dist/reasoningbank/core/memory-engine.js +0 -335
  214. package/dist/swarm/ipfs-swarm.d.ts +0 -265
  215. package/dist/swarm/ipfs-swarm.d.ts.map +0 -1
  216. package/dist/swarm/ipfs-swarm.js +0 -508
  217. package/dist/swarm/ipfs-swarm.js.map +0 -1
  218. package/dist/swarm/p2p-free-swarm.d.ts +0 -344
  219. package/dist/swarm/p2p-free-swarm.d.ts.map +0 -1
  220. package/dist/swarm/p2p-free-swarm.js +0 -603
  221. package/dist/swarm/p2p-free-swarm.js.map +0 -1
  222. package/dist/swarm/real-p2p-swarm.d.ts +0 -183
  223. package/dist/swarm/real-p2p-swarm.d.ts.map +0 -1
  224. package/dist/swarm/real-p2p-swarm.js +0 -469
  225. package/dist/swarm/real-p2p-swarm.js.map +0 -1
  226. package/dist/utils/adaptive-pool-sizing.js +0 -414
  227. package/dist/utils/agentdbCommands.js +0 -175
  228. package/dist/utils/circular-rate-limiter.js +0 -391
  229. package/dist/utils/dynamic-compression.js +0 -298
  230. package/dist/utils/http2-multiplexing.js +0 -319
  231. package/dist/utils/index.d.ts +0 -6
  232. package/dist/utils/index.d.ts.map +0 -1
  233. package/dist/utils/index.js +0 -6
  234. package/dist/utils/index.js.map +0 -1
  235. package/dist/utils/lazy-auth.js +0 -311
  236. package/dist/utils/model-cache.d.ts +0 -61
  237. package/dist/utils/model-cache.d.ts.map +0 -1
  238. package/dist/utils/model-cache.js +0 -176
  239. package/dist/utils/model-cache.js.map +0 -1
  240. package/dist/utils/server-push.js +0 -251
  241. package/dist/utils/suppress-warnings.d.ts +0 -19
  242. package/dist/utils/suppress-warnings.d.ts.map +0 -1
  243. package/dist/utils/suppress-warnings.js +0 -59
  244. package/dist/utils/suppress-warnings.js.map +0 -1
  245. package/dist/utils/zero-copy-buffer.js +0 -286
  246. package/dist/workers/consolidated-phases.d.ts +0 -40
  247. package/dist/workers/consolidated-phases.d.ts.map +0 -1
  248. package/dist/workers/consolidated-phases.js +0 -497
  249. package/dist/workers/consolidated-phases.js.map +0 -1
  250. package/dist/workers/custom-worker-config.d.ts +0 -133
  251. package/dist/workers/custom-worker-config.d.ts.map +0 -1
  252. package/dist/workers/custom-worker-config.js +0 -215
  253. package/dist/workers/custom-worker-config.js.map +0 -1
  254. package/dist/workers/custom-worker-factory.d.ts +0 -89
  255. package/dist/workers/custom-worker-factory.d.ts.map +0 -1
  256. package/dist/workers/custom-worker-factory.js +0 -404
  257. package/dist/workers/custom-worker-factory.js.map +0 -1
  258. package/dist/workers/dispatch-service.d.ts +0 -123
  259. package/dist/workers/dispatch-service.d.ts.map +0 -1
  260. package/dist/workers/dispatch-service.js +0 -1024
  261. package/dist/workers/dispatch-service.js.map +0 -1
  262. package/dist/workers/hooks-integration.d.ts +0 -79
  263. package/dist/workers/hooks-integration.d.ts.map +0 -1
  264. package/dist/workers/hooks-integration.js +0 -286
  265. package/dist/workers/hooks-integration.js.map +0 -1
  266. package/dist/workers/index.d.ts +0 -42
  267. package/dist/workers/index.d.ts.map +0 -1
  268. package/dist/workers/index.js +0 -52
  269. package/dist/workers/index.js.map +0 -1
  270. package/dist/workers/mcp-tools.d.ts +0 -56
  271. package/dist/workers/mcp-tools.d.ts.map +0 -1
  272. package/dist/workers/mcp-tools.js +0 -359
  273. package/dist/workers/mcp-tools.js.map +0 -1
  274. package/dist/workers/phase-executors.d.ts +0 -22
  275. package/dist/workers/phase-executors.d.ts.map +0 -1
  276. package/dist/workers/phase-executors.js +0 -445
  277. package/dist/workers/phase-executors.js.map +0 -1
  278. package/dist/workers/resource-governor.d.ts +0 -75
  279. package/dist/workers/resource-governor.d.ts.map +0 -1
  280. package/dist/workers/resource-governor.js +0 -187
  281. package/dist/workers/resource-governor.js.map +0 -1
  282. package/dist/workers/ruvector-integration.d.ts +0 -163
  283. package/dist/workers/ruvector-integration.d.ts.map +0 -1
  284. package/dist/workers/ruvector-integration.js +0 -543
  285. package/dist/workers/ruvector-integration.js.map +0 -1
  286. package/dist/workers/ruvector-native-integration.d.ts +0 -91
  287. package/dist/workers/ruvector-native-integration.d.ts.map +0 -1
  288. package/dist/workers/ruvector-native-integration.js +0 -254
  289. package/dist/workers/ruvector-native-integration.js.map +0 -1
  290. package/dist/workers/trigger-detector.d.ts +0 -68
  291. package/dist/workers/trigger-detector.d.ts.map +0 -1
  292. package/dist/workers/trigger-detector.js +0 -281
  293. package/dist/workers/trigger-detector.js.map +0 -1
  294. package/dist/workers/types.d.ts +0 -145
  295. package/dist/workers/types.d.ts.map +0 -1
  296. package/dist/workers/types.js +0 -6
  297. package/dist/workers/types.js.map +0 -1
  298. package/dist/workers/worker-agent-integration.d.ts +0 -140
  299. package/dist/workers/worker-agent-integration.d.ts.map +0 -1
  300. package/dist/workers/worker-agent-integration.js +0 -471
  301. package/dist/workers/worker-agent-integration.js.map +0 -1
  302. package/dist/workers/worker-benchmarks.d.ts +0 -88
  303. package/dist/workers/worker-benchmarks.d.ts.map +0 -1
  304. package/dist/workers/worker-benchmarks.js +0 -452
  305. package/dist/workers/worker-benchmarks.js.map +0 -1
  306. package/dist/workers/worker-registry.d.ts +0 -85
  307. package/dist/workers/worker-registry.d.ts.map +0 -1
  308. package/dist/workers/worker-registry.js +0 -547
  309. package/dist/workers/worker-registry.js.map +0 -1
  310. package/docs/.claude-flow/metrics/agent-metrics.json +0 -1
  311. package/docs/.claude-flow/metrics/performance.json +0 -87
  312. package/docs/.claude-flow/metrics/task-metrics.json +0 -10
  313. package/docs/embeddings/EMBEDDING_GEOMETRY.md +0 -935
  314. /package/.claude/agents/analysis/{analyze-code-quality.md → code-review/analyze-code-quality.md} +0 -0
  315. /package/.claude/agents/architecture/{arch-system-design.md → system-design/arch-system-design.md} +0 -0
  316. /package/.claude/agents/data/{data-ml-model.md → ml/data-ml-model.md} +0 -0
  317. /package/.claude/agents/development/{dev-backend-api.md → backend/dev-backend-api.md} +0 -0
  318. /package/.claude/agents/devops/{ops-cicd-github.md → ci-cd/ops-cicd-github.md} +0 -0
  319. /package/.claude/agents/documentation/{docs-api-openapi.md → api-docs/docs-api-openapi.md} +0 -0
  320. /package/.claude/agents/specialized/{spec-mobile-react-native.md → mobile/spec-mobile-react-native.md} +0 -0
  321. /package/.claude/agents/testing/{tdd-london-swarm.md → unit/tdd-london-swarm.md} +0 -0
  322. /package/.claude/agents/testing/{production-validator.md → validation/production-validator.md} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"quic-proxy.js","sourceRoot":"","sources":["../../src/proxy/quic-proxy.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,yDAAyD;AAGzD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAc,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAoB1E,MAAM,OAAO,gBAAiB,SAAQ,0BAA0B;IACtD,UAAU,CAAc;IACxB,QAAQ,CAAsB;IAC9B,SAAS,CAA4B;IACrC,WAAW,CAAU;IACrB,eAAe,CAAU;IAEjC,YAAY,MAAuB;QACjC,KAAK,CAAC;YACJ,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpE,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;QAClD,OAAO,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,UAAsB;QACjD,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;YAEtE,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAEnC,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAE5D,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAE/D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;gBAChD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC7C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,OAAoB;QAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEjD,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE;YAC9B,SAAS,EAAE,iBAAiB;YAC5B,GAAG;YACH,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,iBAAiB,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,OAAoB;QAC7D,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAClD,MAAM,CAAC,QAAQ,EACf,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAC7B,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACpC,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,GAAG;aACJ,CAAC,CAAC;YAEH,kBAAkB;YAClB,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,YAAY,OAAO;oBACtD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,OAAO,CAAC,OAAe,CAAC,OAAO,EAAE,CAAC;oBAChD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEpC,KAAK,MAAM,KAAK,IAAI,aAAwC,EAAE,CAAC;oBAC7D,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,IAAI,IAA4B,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,YAAY,UAAU,EAAE,CAAC;oBAC9C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAED,gCAAgC;YAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAChD,UAAU,CAAC,EAAE,EACb,OAAO,CAAC,MAAM,IAAI,KAAK,EACvB,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAC/B,OAAO,EACP,IAAI,CACL,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;aAC5B,CAAC,CAAC;YAEH,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,IAAI,QAAQ,CAAC,YAAY,EAAE;gBAChC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;aACvC,CAAQ,CAAC;QAEZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAEpD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,OAAoB;QAC9D,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,GAAG,EAAE,OAAO,CAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO;gBACL,SAAS,EAAE,IAAI,CAAC,eAAe,EAAE;gBACjC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;aACtC,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,KAAK;SACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAuB;IACrD,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;QAChC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM;QACrC,WAAW,EAAE,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,MAAM,CAAC;QACnF,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;KAChD,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iCAAiC;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAExD,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,eAAe,CAAC;QAC5B,gBAAgB;QAChB,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB;QACvD,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe;QACzE,SAAS,EAAG,OAAO,CAAC,GAAG,CAAC,SAAuC,IAAI,MAAM;QACzE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,MAAM;QAC3D,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC;YAC/C,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,WAAW;YAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;YACpC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;SACnC;KACF,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElB,oBAAoB;IACpB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["// QUIC-enabled Proxy for Anthropic API\n// Optional QUIC transport with automatic HTTP/2 fallback\n\nimport express, { Request, Response as ExpressResponse, NextFunction } from 'express';\nimport { QuicClient, QuicConnectionPool, QuicConfig } from '../transport/quic.js';\nimport { logger } from '../utils/logger.js';\nimport { AnthropicToOpenRouterProxy } from './anthropic-to-openrouter.js';\n\nexport interface QuicProxyConfig {\n // Base proxy config\n openrouterApiKey: string;\n openrouterBaseUrl?: string;\n defaultModel?: string;\n\n // Transport selection\n transport?: 'quic' | 'http2' | 'auto';\n enableQuic?: boolean;\n\n // QUIC configuration\n quic?: QuicConfig;\n\n // Fallback behavior\n fallbackToHttp2?: boolean;\n fallbackTimeout?: number;\n}\n\nexport class QuicEnabledProxy extends AnthropicToOpenRouterProxy {\n private quicClient?: QuicClient;\n private quicPool?: QuicConnectionPool;\n private transport: 'quic' | 'http2' | 'auto';\n private quicEnabled: boolean;\n private fallbackToHttp2: boolean;\n\n constructor(config: QuicProxyConfig) {\n super({\n openrouterApiKey: config.openrouterApiKey,\n openrouterBaseUrl: config.openrouterBaseUrl,\n defaultModel: config.defaultModel\n });\n\n this.transport = config.transport || 'auto';\n this.quicEnabled = config.enableQuic ?? this.checkQuicFeatureFlag();\n this.fallbackToHttp2 = config.fallbackToHttp2 ?? true;\n\n if (this.quicEnabled) {\n this.initializeQuic(config.quic || {});\n }\n }\n\n /**\n * Check if QUIC is enabled via environment variable\n */\n private checkQuicFeatureFlag(): boolean {\n const flag = process.env.AGENTIC_FLOW_ENABLE_QUIC;\n return flag === 'true' || flag === '1';\n }\n\n /**\n * Initialize QUIC client and connection pool\n */\n private async initializeQuic(quicConfig: QuicConfig): Promise<void> {\n try {\n logger.info('Initializing QUIC transport...', { config: quicConfig });\n\n this.quicClient = new QuicClient(quicConfig);\n await this.quicClient.initialize();\n\n this.quicPool = new QuicConnectionPool(this.quicClient, 20);\n\n logger.info('QUIC transport initialized successfully');\n } catch (error) {\n logger.error('Failed to initialize QUIC transport', { error });\n\n if (this.fallbackToHttp2) {\n logger.warn('Falling back to HTTP/2 transport');\n this.quicEnabled = false;\n } else {\n throw error;\n }\n }\n }\n\n /**\n * Select transport protocol based on configuration and availability\n */\n private selectTransport(): 'quic' | 'http2' {\n if (this.transport === 'quic' && this.quicEnabled) {\n return 'quic';\n }\n\n if (this.transport === 'http2') {\n return 'http2';\n }\n\n // Auto mode: prefer QUIC if available, fallback to HTTP/2\n if (this.transport === 'auto') {\n return this.quicEnabled ? 'quic' : 'http2';\n }\n\n return 'http2';\n }\n\n /**\n * Send request using selected transport\n */\n protected async sendRequest(url: string, options: RequestInit): Promise<Response> {\n const selectedTransport = this.selectTransport();\n\n logger.debug('Sending request', {\n transport: selectedTransport,\n url,\n method: options.method\n });\n\n if (selectedTransport === 'quic') {\n return this.sendQuicRequest(url, options);\n } else {\n return this.sendHttp2Request(url, options);\n }\n }\n\n /**\n * Send request over QUIC\n */\n private async sendQuicRequest(url: string, options: RequestInit): Promise<Response> {\n if (!this.quicClient || !this.quicPool) {\n throw new Error('QUIC client not initialized');\n }\n\n try {\n const urlObj = new URL(url);\n const connection = await this.quicPool.getConnection(\n urlObj.hostname,\n parseInt(urlObj.port) || 443\n );\n\n logger.debug('Using QUIC connection', {\n connectionId: connection.id,\n url\n });\n\n // Prepare headers\n const headers: Record<string, string> = {};\n if (options.headers) {\n const headerEntries = options.headers instanceof Headers\n ? Array.from((options.headers as any).entries())\n : Object.entries(options.headers);\n\n for (const entry of headerEntries as Array<[string, string]>) {\n headers[entry[0]] = entry[1];\n }\n }\n\n // Convert body to Uint8Array\n let body: Uint8Array | undefined;\n if (options.body) {\n if (typeof options.body === 'string') {\n body = new TextEncoder().encode(options.body);\n } else if (options.body instanceof Uint8Array) {\n body = options.body;\n } else {\n body = new TextEncoder().encode(JSON.stringify(options.body));\n }\n }\n\n // Send HTTP/3 request over QUIC\n const response = await this.quicClient.sendRequest(\n connection.id,\n options.method || 'GET',\n urlObj.pathname + urlObj.search,\n headers,\n body\n );\n\n logger.info('QUIC request completed', {\n status: response.status,\n bytes: response.body.length\n });\n\n // Convert to fetch Response\n const responseText = new TextDecoder().decode(response.body);\n return new Response(responseText, {\n status: response.status,\n headers: new Headers(response.headers)\n }) as any;\n\n } catch (error) {\n logger.error('QUIC request failed', { error, url });\n\n if (this.fallbackToHttp2) {\n logger.warn('Falling back to HTTP/2 for this request');\n return this.sendHttp2Request(url, options);\n }\n\n throw error;\n }\n }\n\n /**\n * Send request over HTTP/2 (standard fetch)\n */\n private async sendHttp2Request(url: string, options: RequestInit): Promise<Response> {\n logger.debug('Using HTTP/2 transport', { url });\n return fetch(url, options) as any;\n }\n\n /**\n * Get transport statistics\n */\n getTransportStats(): any {\n if (this.quicClient) {\n return {\n transport: this.selectTransport(),\n quicEnabled: this.quicEnabled,\n quicStats: this.quicClient.getStats()\n };\n }\n\n return {\n transport: 'http2',\n quicEnabled: false\n };\n }\n\n /**\n * Shutdown and cleanup\n */\n async shutdown(): Promise<void> {\n if (this.quicPool) {\n await this.quicPool.clear();\n }\n\n if (this.quicClient) {\n await this.quicClient.shutdown();\n }\n\n logger.info('QUIC proxy shutdown complete');\n }\n}\n\n/**\n * Create QUIC-enabled proxy with configuration\n */\nexport function createQuicProxy(config: QuicProxyConfig): QuicEnabledProxy {\n const proxy = new QuicEnabledProxy(config);\n\n logger.info('QUIC proxy created', {\n transport: config.transport || 'auto',\n quicEnabled: config.enableQuic ?? (process.env.AGENTIC_FLOW_ENABLE_QUIC === 'true'),\n fallbackEnabled: config.fallbackToHttp2 ?? true\n });\n\n return proxy;\n}\n\n// CLI entry point for QUIC proxy\nif (import.meta.url === `file://${process.argv[1]}`) {\n const port = parseInt(process.env.PORT || '3000');\n const openrouterApiKey = process.env.OPENROUTER_API_KEY;\n\n if (!openrouterApiKey) {\n console.error('❌ Error: OPENROUTER_API_KEY environment variable required');\n process.exit(1);\n }\n\n const proxy = createQuicProxy({\n openrouterApiKey,\n openrouterBaseUrl: process.env.ANTHROPIC_PROXY_BASE_URL,\n defaultModel: process.env.COMPLETION_MODEL || process.env.REASONING_MODEL,\n transport: (process.env.TRANSPORT as 'quic' | 'http2' | 'auto') || 'auto',\n enableQuic: process.env.AGENTIC_FLOW_ENABLE_QUIC === 'true',\n quic: {\n port: parseInt(process.env.QUIC_PORT || '4433'),\n serverHost: process.env.QUIC_HOST || 'localhost',\n certPath: process.env.QUIC_CERT_PATH,\n keyPath: process.env.QUIC_KEY_PATH\n }\n });\n\n proxy.start(port);\n\n // Graceful shutdown\n process.on('SIGTERM', async () => {\n logger.info('Received SIGTERM, shutting down gracefully...');\n await proxy.shutdown();\n process.exit(0);\n });\n\n process.on('SIGINT', async () => {\n logger.info('Received SIGINT, shutting down gracefully...');\n await proxy.shutdown();\n process.exit(0);\n });\n}\n"]}
1
+ {"version":3,"file":"quic-proxy.js","sourceRoot":"","sources":["../../src/proxy/quic-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["// QUIC-enabled Proxy for Anthropic API\n// Optional QUIC transport with automatic HTTP/2 fallback\n\nimport express, { Request, Response, NextFunction } from 'express';\nimport { QuicClient, QuicConnectionPool, QuicConfig } from '../transport/quic.js';\nimport { logger } from '../utils/logger.js';\nimport { AnthropicToOpenRouterProxy } from './anthropic-to-openrouter.js';\n\nexport interface QuicProxyConfig {\n // Base proxy config\n openrouterApiKey: string;\n openrouterBaseUrl?: string;\n defaultModel?: string;\n\n // Transport selection\n transport?: 'quic' | 'http2' | 'auto';\n enableQuic?: boolean;\n\n // QUIC configuration\n quic?: QuicConfig;\n\n // Fallback behavior\n fallbackToHttp2?: boolean;\n fallbackTimeout?: number;\n}\n\nexport class QuicEnabledProxy extends AnthropicToOpenRouterProxy {\n private quicClient?: QuicClient;\n private quicPool?: QuicConnectionPool;\n private transport: 'quic' | 'http2' | 'auto';\n private quicEnabled: boolean;\n private fallbackToHttp2: boolean;\n\n constructor(config: QuicProxyConfig) {\n super({\n openrouterApiKey: config.openrouterApiKey,\n openrouterBaseUrl: config.openrouterBaseUrl,\n defaultModel: config.defaultModel\n });\n\n this.transport = config.transport || 'auto';\n this.quicEnabled = config.enableQuic ?? this.checkQuicFeatureFlag();\n this.fallbackToHttp2 = config.fallbackToHttp2 ?? true;\n\n if (this.quicEnabled) {\n this.initializeQuic(config.quic || {});\n }\n }\n\n /**\n * Check if QUIC is enabled via environment variable\n */\n private checkQuicFeatureFlag(): boolean {\n const flag = process.env.AGENTIC_FLOW_ENABLE_QUIC;\n return flag === 'true' || flag === '1';\n }\n\n /**\n * Initialize QUIC client and connection pool\n */\n private async initializeQuic(quicConfig: QuicConfig): Promise<void> {\n try {\n logger.info('Initializing QUIC transport...', { config: quicConfig });\n\n this.quicClient = new QuicClient(quicConfig);\n await this.quicClient.initialize();\n\n this.quicPool = new QuicConnectionPool(this.quicClient, 20);\n\n logger.info('QUIC transport initialized successfully');\n } catch (error) {\n logger.error('Failed to initialize QUIC transport', { error });\n\n if (this.fallbackToHttp2) {\n logger.warn('Falling back to HTTP/2 transport');\n this.quicEnabled = false;\n } else {\n throw error;\n }\n }\n }\n\n /**\n * Select transport protocol based on configuration and availability\n */\n private selectTransport(): 'quic' | 'http2' {\n if (this.transport === 'quic' && this.quicEnabled) {\n return 'quic';\n }\n\n if (this.transport === 'http2') {\n return 'http2';\n }\n\n // Auto mode: prefer QUIC if available, fallback to HTTP/2\n if (this.transport === 'auto') {\n return this.quicEnabled ? 'quic' : 'http2';\n }\n\n return 'http2';\n }\n\n /**\n * Send request using selected transport\n */\n protected async sendRequest(url: string, options: RequestInit): Promise<Response> {\n const selectedTransport = this.selectTransport();\n\n logger.debug('Sending request', {\n transport: selectedTransport,\n url,\n method: options.method\n });\n\n if (selectedTransport === 'quic') {\n return this.sendQuicRequest(url, options);\n } else {\n return this.sendHttp2Request(url, options);\n }\n }\n\n /**\n * Send request over QUIC\n */\n private async sendQuicRequest(url: string, options: RequestInit): Promise<Response> {\n if (!this.quicClient || !this.quicPool) {\n throw new Error('QUIC client not initialized');\n }\n\n try {\n const urlObj = new URL(url);\n const connection = await this.quicPool.getConnection(\n urlObj.hostname,\n parseInt(urlObj.port) || 443\n );\n\n logger.debug('Using QUIC connection', {\n connectionId: connection.id,\n url\n });\n\n // Prepare headers\n const headers: Record<string, string> = {};\n if (options.headers) {\n const headerEntries = options.headers instanceof Headers\n ? Array.from(options.headers.entries())\n : Object.entries(options.headers);\n\n for (const [key, value] of headerEntries) {\n headers[key] = value;\n }\n }\n\n // Convert body to Uint8Array\n let body: Uint8Array | undefined;\n if (options.body) {\n if (typeof options.body === 'string') {\n body = new TextEncoder().encode(options.body);\n } else if (options.body instanceof Uint8Array) {\n body = options.body;\n } else {\n body = new TextEncoder().encode(JSON.stringify(options.body));\n }\n }\n\n // Send HTTP/3 request over QUIC\n const response = await this.quicClient.sendRequest(\n connection.id,\n options.method || 'GET',\n urlObj.pathname + urlObj.search,\n headers,\n body\n );\n\n logger.info('QUIC request completed', {\n status: response.status,\n bytes: response.body.length\n });\n\n // Convert to fetch Response\n const responseText = new TextDecoder().decode(response.body);\n return new Response(responseText, {\n status: response.status,\n headers: new Headers(response.headers)\n }) as any;\n\n } catch (error) {\n logger.error('QUIC request failed', { error, url });\n\n if (this.fallbackToHttp2) {\n logger.warn('Falling back to HTTP/2 for this request');\n return this.sendHttp2Request(url, options);\n }\n\n throw error;\n }\n }\n\n /**\n * Send request over HTTP/2 (standard fetch)\n */\n private async sendHttp2Request(url: string, options: RequestInit): Promise<Response> {\n logger.debug('Using HTTP/2 transport', { url });\n return fetch(url, options) as any;\n }\n\n /**\n * Get transport statistics\n */\n getTransportStats(): any {\n if (this.quicClient) {\n return {\n transport: this.selectTransport(),\n quicEnabled: this.quicEnabled,\n quicStats: this.quicClient.getStats()\n };\n }\n\n return {\n transport: 'http2',\n quicEnabled: false\n };\n }\n\n /**\n * Shutdown and cleanup\n */\n async shutdown(): Promise<void> {\n if (this.quicPool) {\n await this.quicPool.clear();\n }\n\n if (this.quicClient) {\n await this.quicClient.shutdown();\n }\n\n logger.info('QUIC proxy shutdown complete');\n }\n}\n\n/**\n * Create QUIC-enabled proxy with configuration\n */\nexport function createQuicProxy(config: QuicProxyConfig): QuicEnabledProxy {\n const proxy = new QuicEnabledProxy(config);\n\n logger.info('QUIC proxy created', {\n transport: config.transport || 'auto',\n quicEnabled: config.enableQuic ?? (process.env.AGENTIC_FLOW_ENABLE_QUIC === 'true'),\n fallbackEnabled: config.fallbackToHttp2 ?? true\n });\n\n return proxy;\n}\n\n// CLI entry point for QUIC proxy\nif (import.meta.url === `file://${process.argv[1]}`) {\n const port = parseInt(process.env.PORT || '3000');\n const openrouterApiKey = process.env.OPENROUTER_API_KEY;\n\n if (!openrouterApiKey) {\n console.error('❌ Error: OPENROUTER_API_KEY environment variable required');\n process.exit(1);\n }\n\n const proxy = createQuicProxy({\n openrouterApiKey,\n openrouterBaseUrl: process.env.ANTHROPIC_PROXY_BASE_URL,\n defaultModel: process.env.COMPLETION_MODEL || process.env.REASONING_MODEL,\n transport: (process.env.TRANSPORT as 'quic' | 'http2' | 'auto') || 'auto',\n enableQuic: process.env.AGENTIC_FLOW_ENABLE_QUIC === 'true',\n quic: {\n port: parseInt(process.env.QUIC_PORT || '4433'),\n serverHost: process.env.QUIC_HOST || 'localhost',\n certPath: process.env.QUIC_CERT_PATH,\n keyPath: process.env.QUIC_KEY_PATH\n }\n });\n\n proxy.start(port);\n\n // Graceful shutdown\n process.on('SIGTERM', async () => {\n logger.info('Received SIGTERM, shutting down gracefully...');\n await proxy.shutdown();\n process.exit(0);\n });\n\n process.on('SIGINT', async () => {\n logger.info('Received SIGINT, shutting down gracefully...');\n await proxy.shutdown();\n process.exit(0);\n });\n}\n"]}
@@ -24,7 +24,7 @@
24
24
  * ```
25
25
  */
26
26
  import { HybridReasoningBank } from './HybridBackend.js';
27
- import { NightlyLearner } from 'agentdb';
27
+ import { NightlyLearner } from 'agentdb/controllers/NightlyLearner';
28
28
  import { SharedMemoryPool } from '../memory/SharedMemoryPool.js';
29
29
  export class AdvancedMemorySystem {
30
30
  reasoning;
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedMemory.js","sourceRoot":"","sources":["../../src/reasoningbank/AdvancedMemory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Advanced Memory System - Full Implementation for v1.7.1\n *\n * Provides high-level memory operations on top of HybridReasoningBank:\n * - Auto-consolidation (patterns → skills) using NightlyLearner\n * - Episodic replay (learn from failures)\n * - Causal reasoning (what-if analysis)\n * - Skill composition (combine learned skills)\n *\n * @example\n * ```typescript\n * import { AdvancedMemorySystem } from 'agentic-flow/reasoningbank';\n *\n * const memory = new AdvancedMemorySystem();\n *\n * // Auto-consolidate patterns into skills\n * const result = await memory.autoConsolidate({ minUses: 3, minSuccessRate: 0.7 });\n *\n * // Learn from failures\n * const failures = await memory.replayFailures('authentication', 5);\n *\n * // Causal what-if analysis\n * const insight = await memory.whatIfAnalysis('add caching');\n * ```\n */\n\nimport { HybridReasoningBank } from './HybridBackend.js';\nimport { NightlyLearner } from 'agentdb';\nimport { SharedMemoryPool } from '../memory/SharedMemoryPool.js';\n\nexport interface FailureAnalysis {\n critique: string;\n whatWentWrong: string[];\n howToFix: string[];\n similarFailures: number;\n}\n\nexport interface SkillComposition {\n availableSkills: any[];\n compositionPlan: string;\n expectedSuccessRate: number;\n}\n\nexport interface ConsolidationResult {\n skillsCreated: number;\n causalEdgesCreated: number;\n patternsAnalyzed: number;\n executionTimeMs: number;\n recommendations: string[];\n}\n\nexport class AdvancedMemorySystem {\n private reasoning: HybridReasoningBank;\n private learner: NightlyLearner;\n private pool: SharedMemoryPool;\n\n constructor(options: { preferWasm?: boolean } = {}) {\n this.reasoning = new HybridReasoningBank(options);\n this.pool = SharedMemoryPool.getInstance();\n\n const db = this.pool.getDatabase();\n const embedder = this.pool.getEmbedder() as any;\n\n // Initialize NightlyLearner with optimized config\n this.learner = new NightlyLearner(db, embedder, {\n minSimilarity: 0.7,\n minSampleSize: 5,\n confidenceThreshold: 0.6,\n upliftThreshold: 0.1,\n pruneOldEdges: true,\n edgeMaxAgeDays: 90,\n autoExperiments: true,\n experimentBudget: 100\n });\n }\n\n /**\n * Auto-consolidate successful patterns into skills\n *\n * Uses NightlyLearner to:\n * 1. Discover causal edges from episode patterns\n * 2. Complete A/B experiments\n * 3. Calculate uplift for experiments\n * 4. Prune low-confidence edges\n * 5. Consolidate high-performing patterns into skills\n */\n async autoConsolidate(options: {\n minUses?: number;\n minSuccessRate?: number;\n lookbackDays?: number;\n dryRun?: boolean;\n } = {}): Promise<ConsolidationResult> {\n const startTime = Date.now();\n\n try {\n // Run NightlyLearner's discovery and consolidation pipeline\n const report = await this.learner.run();\n\n // Also run skill consolidation from HybridReasoningBank\n const skillResult = await this.reasoning.autoConsolidate(\n options.minUses || 3,\n options.minSuccessRate || 0.7,\n options.lookbackDays || 30\n );\n\n return {\n skillsCreated: skillResult.skillsCreated + (report.edgesDiscovered || 0),\n causalEdgesCreated: report.edgesDiscovered || 0,\n patternsAnalyzed: report.experimentsCompleted || 0,\n executionTimeMs: Date.now() - startTime,\n recommendations: report.recommendations || []\n };\n } catch (error) {\n console.error('[AdvancedMemorySystem] Auto-consolidation failed:', error);\n\n // Fallback to basic consolidation\n const skillResult = await this.reasoning.autoConsolidate(\n options.minUses || 3,\n options.minSuccessRate || 0.7,\n options.lookbackDays || 30\n );\n\n return {\n skillsCreated: skillResult.skillsCreated,\n causalEdgesCreated: 0,\n patternsAnalyzed: 0,\n executionTimeMs: Date.now() - startTime,\n recommendations: ['Causal discovery unavailable - basic consolidation completed']\n };\n }\n }\n\n /**\n * Learn from past failures with episodic replay\n *\n * Retrieves failed attempts, extracts lessons, and provides recommendations\n */\n async replayFailures(task: string, k: number = 5): Promise<FailureAnalysis[]> {\n const failures = await this.reasoning.retrievePatterns(task, {\n k,\n onlyFailures: true\n });\n\n return failures.map(f => ({\n critique: f.critique || this.extractCritique(f),\n whatWentWrong: this.analyzeFailure(f),\n howToFix: this.generateFixes(f),\n similarFailures: failures.length\n }));\n }\n\n /**\n * Extract critique from failure pattern\n */\n private extractCritique(failure: any): string {\n if (failure.critique) return failure.critique;\n if (failure.task) return `Failed at: ${failure.task}`;\n return 'No critique available';\n }\n\n /**\n * Analyze what went wrong in a failure\n */\n private analyzeFailure(failure: any): string[] {\n const issues: string[] = [];\n\n if (failure.reward !== undefined && failure.reward < 0.3) {\n issues.push('Low success rate observed');\n }\n\n if (failure.latencyMs && failure.latencyMs > 5000) {\n issues.push('High latency detected');\n }\n\n if (failure.task) {\n issues.push(`Task type: ${failure.task}`);\n }\n\n if (issues.length === 0) {\n issues.push('General failure - review approach');\n }\n\n return issues;\n }\n\n /**\n * Generate fix recommendations\n */\n private generateFixes(failure: any): string[] {\n const fixes: string[] = [];\n\n // Look for successful patterns with similar tasks\n fixes.push('Review similar successful patterns');\n\n if (failure.latencyMs && failure.latencyMs > 5000) {\n fixes.push('Optimize for lower latency');\n }\n\n if (failure.reward !== undefined && failure.reward < 0.3) {\n fixes.push('Consider alternative approach');\n }\n\n fixes.push('Add more validation and error handling');\n\n return fixes;\n }\n\n /**\n * What-if causal analysis\n *\n * Analyzes potential outcomes of taking an action based on causal evidence\n */\n async whatIfAnalysis(action: string): Promise<{\n action: string;\n avgReward: number;\n avgUplift: number;\n confidence: number;\n evidenceCount: number;\n recommendation: 'DO_IT' | 'AVOID' | 'NEUTRAL';\n expectedImpact: string;\n }> {\n const causalInsight = await this.reasoning.whatIfAnalysis(action);\n\n // Generate impact description\n let expectedImpact = '';\n if (causalInsight.avgUplift > 0.2) {\n expectedImpact = `Highly beneficial: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift > 0.1) {\n expectedImpact = `Beneficial: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift > 0) {\n expectedImpact = `Slightly positive: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift < -0.1) {\n expectedImpact = `Harmful: Expected ${(causalInsight.avgUplift * 100).toFixed(1)}% degradation`;\n } else {\n expectedImpact = 'Neutral or insufficient evidence';\n }\n\n return {\n ...causalInsight,\n expectedImpact\n };\n }\n\n /**\n * Compose multiple skills for a complex task\n *\n * Finds relevant skills and creates an execution plan\n */\n async composeSkills(task: string, k: number = 5): Promise<SkillComposition> {\n const skills = await this.reasoning.searchSkills(task, k);\n\n // Sort by success rate and usage\n const sortedSkills = skills.sort((a, b) => {\n const scoreA = (a.successRate || 0) * 0.7 + (Math.log(a.uses || 1) / 10) * 0.3;\n const scoreB = (b.successRate || 0) * 0.7 + (Math.log(b.uses || 1) / 10) * 0.3;\n return scoreB - scoreA;\n });\n\n // Create composition plan\n let compositionPlan = '';\n if (sortedSkills.length === 0) {\n compositionPlan = 'No relevant skills found';\n } else if (sortedSkills.length === 1) {\n compositionPlan = sortedSkills[0].name;\n } else {\n compositionPlan = sortedSkills.slice(0, 3).map(s => s.name).join(' → ');\n }\n\n // Calculate expected success rate (weighted average)\n let expectedSuccessRate = 0;\n if (sortedSkills.length > 0) {\n const weights = sortedSkills.map(s => s.uses || 1);\n const totalWeight = weights.reduce((sum, w) => sum + w, 0);\n expectedSuccessRate = sortedSkills.reduce((sum, s, i) =>\n sum + (s.successRate || 0) * weights[i] / totalWeight, 0\n );\n }\n\n return {\n availableSkills: sortedSkills,\n compositionPlan,\n expectedSuccessRate\n };\n }\n\n /**\n * Run automated learning cycle\n *\n * Discovers causal edges, consolidates skills, and optimizes performance\n */\n async runLearningCycle(): Promise<ConsolidationResult> {\n return this.autoConsolidate({\n minUses: 3,\n minSuccessRate: 0.7,\n lookbackDays: 30,\n dryRun: false\n });\n }\n\n /**\n * Get comprehensive memory statistics\n */\n getStats(): {\n reasoningBank: any;\n learner: string;\n memoryPool: any;\n } {\n return {\n reasoningBank: this.reasoning.getStats(),\n learner: 'NightlyLearner configured with auto-experiments',\n memoryPool: this.pool.getStats()\n };\n }\n}\n"]}
1
+ {"version":3,"file":"AdvancedMemory.js","sourceRoot":"","sources":["../../src/reasoningbank/AdvancedMemory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Advanced Memory System - Full Implementation for v1.7.1\n *\n * Provides high-level memory operations on top of HybridReasoningBank:\n * - Auto-consolidation (patterns → skills) using NightlyLearner\n * - Episodic replay (learn from failures)\n * - Causal reasoning (what-if analysis)\n * - Skill composition (combine learned skills)\n *\n * @example\n * ```typescript\n * import { AdvancedMemorySystem } from 'agentic-flow/reasoningbank';\n *\n * const memory = new AdvancedMemorySystem();\n *\n * // Auto-consolidate patterns into skills\n * const result = await memory.autoConsolidate({ minUses: 3, minSuccessRate: 0.7 });\n *\n * // Learn from failures\n * const failures = await memory.replayFailures('authentication', 5);\n *\n * // Causal what-if analysis\n * const insight = await memory.whatIfAnalysis('add caching');\n * ```\n */\n\nimport { HybridReasoningBank } from './HybridBackend.js';\nimport { NightlyLearner } from 'agentdb/controllers/NightlyLearner';\nimport { SharedMemoryPool } from '../memory/SharedMemoryPool.js';\n\nexport interface FailureAnalysis {\n critique: string;\n whatWentWrong: string[];\n howToFix: string[];\n similarFailures: number;\n}\n\nexport interface SkillComposition {\n availableSkills: any[];\n compositionPlan: string;\n expectedSuccessRate: number;\n}\n\nexport interface ConsolidationResult {\n skillsCreated: number;\n causalEdgesCreated: number;\n patternsAnalyzed: number;\n executionTimeMs: number;\n recommendations: string[];\n}\n\nexport class AdvancedMemorySystem {\n private reasoning: HybridReasoningBank;\n private learner: NightlyLearner;\n private pool: SharedMemoryPool;\n\n constructor(options: { preferWasm?: boolean } = {}) {\n this.reasoning = new HybridReasoningBank(options);\n this.pool = SharedMemoryPool.getInstance();\n\n const db = this.pool.getDatabase();\n const embedder = this.pool.getEmbedder();\n\n // Initialize NightlyLearner with optimized config\n this.learner = new NightlyLearner(db, embedder, {\n minSimilarity: 0.7,\n minSampleSize: 5,\n confidenceThreshold: 0.6,\n upliftThreshold: 0.1,\n pruneOldEdges: true,\n edgeMaxAgeDays: 90,\n autoExperiments: true,\n experimentBudget: 100\n });\n }\n\n /**\n * Auto-consolidate successful patterns into skills\n *\n * Uses NightlyLearner to:\n * 1. Discover causal edges from episode patterns\n * 2. Complete A/B experiments\n * 3. Calculate uplift for experiments\n * 4. Prune low-confidence edges\n * 5. Consolidate high-performing patterns into skills\n */\n async autoConsolidate(options: {\n minUses?: number;\n minSuccessRate?: number;\n lookbackDays?: number;\n dryRun?: boolean;\n } = {}): Promise<ConsolidationResult> {\n const startTime = Date.now();\n\n try {\n // Run NightlyLearner's discovery and consolidation pipeline\n const report = await this.learner.run();\n\n // Also run skill consolidation from HybridReasoningBank\n const skillResult = await this.reasoning.autoConsolidate(\n options.minUses || 3,\n options.minSuccessRate || 0.7,\n options.lookbackDays || 30\n );\n\n return {\n skillsCreated: skillResult.skillsCreated + (report.edgesDiscovered || 0),\n causalEdgesCreated: report.edgesDiscovered || 0,\n patternsAnalyzed: report.experimentsCompleted || 0,\n executionTimeMs: Date.now() - startTime,\n recommendations: report.recommendations || []\n };\n } catch (error) {\n console.error('[AdvancedMemorySystem] Auto-consolidation failed:', error);\n\n // Fallback to basic consolidation\n const skillResult = await this.reasoning.autoConsolidate(\n options.minUses || 3,\n options.minSuccessRate || 0.7,\n options.lookbackDays || 30\n );\n\n return {\n skillsCreated: skillResult.skillsCreated,\n causalEdgesCreated: 0,\n patternsAnalyzed: 0,\n executionTimeMs: Date.now() - startTime,\n recommendations: ['Causal discovery unavailable - basic consolidation completed']\n };\n }\n }\n\n /**\n * Learn from past failures with episodic replay\n *\n * Retrieves failed attempts, extracts lessons, and provides recommendations\n */\n async replayFailures(task: string, k: number = 5): Promise<FailureAnalysis[]> {\n const failures = await this.reasoning.retrievePatterns(task, {\n k,\n onlyFailures: true\n });\n\n return failures.map(f => ({\n critique: f.critique || this.extractCritique(f),\n whatWentWrong: this.analyzeFailure(f),\n howToFix: this.generateFixes(f),\n similarFailures: failures.length\n }));\n }\n\n /**\n * Extract critique from failure pattern\n */\n private extractCritique(failure: any): string {\n if (failure.critique) return failure.critique;\n if (failure.task) return `Failed at: ${failure.task}`;\n return 'No critique available';\n }\n\n /**\n * Analyze what went wrong in a failure\n */\n private analyzeFailure(failure: any): string[] {\n const issues: string[] = [];\n\n if (failure.reward !== undefined && failure.reward < 0.3) {\n issues.push('Low success rate observed');\n }\n\n if (failure.latencyMs && failure.latencyMs > 5000) {\n issues.push('High latency detected');\n }\n\n if (failure.task) {\n issues.push(`Task type: ${failure.task}`);\n }\n\n if (issues.length === 0) {\n issues.push('General failure - review approach');\n }\n\n return issues;\n }\n\n /**\n * Generate fix recommendations\n */\n private generateFixes(failure: any): string[] {\n const fixes: string[] = [];\n\n // Look for successful patterns with similar tasks\n fixes.push('Review similar successful patterns');\n\n if (failure.latencyMs && failure.latencyMs > 5000) {\n fixes.push('Optimize for lower latency');\n }\n\n if (failure.reward !== undefined && failure.reward < 0.3) {\n fixes.push('Consider alternative approach');\n }\n\n fixes.push('Add more validation and error handling');\n\n return fixes;\n }\n\n /**\n * What-if causal analysis\n *\n * Analyzes potential outcomes of taking an action based on causal evidence\n */\n async whatIfAnalysis(action: string): Promise<{\n action: string;\n avgReward: number;\n avgUplift: number;\n confidence: number;\n evidenceCount: number;\n recommendation: 'DO_IT' | 'AVOID' | 'NEUTRAL';\n expectedImpact: string;\n }> {\n const causalInsight = await this.reasoning.whatIfAnalysis(action);\n\n // Generate impact description\n let expectedImpact = '';\n if (causalInsight.avgUplift > 0.2) {\n expectedImpact = `Highly beneficial: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift > 0.1) {\n expectedImpact = `Beneficial: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift > 0) {\n expectedImpact = `Slightly positive: Expected +${(causalInsight.avgUplift * 100).toFixed(1)}% improvement`;\n } else if (causalInsight.avgUplift < -0.1) {\n expectedImpact = `Harmful: Expected ${(causalInsight.avgUplift * 100).toFixed(1)}% degradation`;\n } else {\n expectedImpact = 'Neutral or insufficient evidence';\n }\n\n return {\n ...causalInsight,\n expectedImpact\n };\n }\n\n /**\n * Compose multiple skills for a complex task\n *\n * Finds relevant skills and creates an execution plan\n */\n async composeSkills(task: string, k: number = 5): Promise<SkillComposition> {\n const skills = await this.reasoning.searchSkills(task, k);\n\n // Sort by success rate and usage\n const sortedSkills = skills.sort((a, b) => {\n const scoreA = (a.successRate || 0) * 0.7 + (Math.log(a.uses || 1) / 10) * 0.3;\n const scoreB = (b.successRate || 0) * 0.7 + (Math.log(b.uses || 1) / 10) * 0.3;\n return scoreB - scoreA;\n });\n\n // Create composition plan\n let compositionPlan = '';\n if (sortedSkills.length === 0) {\n compositionPlan = 'No relevant skills found';\n } else if (sortedSkills.length === 1) {\n compositionPlan = sortedSkills[0].name;\n } else {\n compositionPlan = sortedSkills.slice(0, 3).map(s => s.name).join(' → ');\n }\n\n // Calculate expected success rate (weighted average)\n let expectedSuccessRate = 0;\n if (sortedSkills.length > 0) {\n const weights = sortedSkills.map(s => s.uses || 1);\n const totalWeight = weights.reduce((sum, w) => sum + w, 0);\n expectedSuccessRate = sortedSkills.reduce((sum, s, i) =>\n sum + (s.successRate || 0) * weights[i] / totalWeight, 0\n );\n }\n\n return {\n availableSkills: sortedSkills,\n compositionPlan,\n expectedSuccessRate\n };\n }\n\n /**\n * Run automated learning cycle\n *\n * Discovers causal edges, consolidates skills, and optimizes performance\n */\n async runLearningCycle(): Promise<ConsolidationResult> {\n return this.autoConsolidate({\n minUses: 3,\n minSuccessRate: 0.7,\n lookbackDays: 30,\n dryRun: false\n });\n }\n\n /**\n * Get comprehensive memory statistics\n */\n getStats(): {\n reasoningBank: any;\n learner: string;\n memoryPool: any;\n } {\n return {\n reasoningBank: this.reasoning.getStats(),\n learner: 'NightlyLearner configured with auto-experiments',\n memoryPool: this.pool.getStats()\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HybridBackend.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/HybridBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAM;gBAEZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO;YA6BpC,cAAc;IAW5B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAqDrF;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,SAAS,EAAE,aAAa,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IA6DF;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,MAAU,EAAE,cAAc,GAAE,MAAY,EAAE,YAAY,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA+CvI;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwC5D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAInE;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,GAAG,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF"}
1
+ {"version":3,"file":"HybridBackend.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/HybridBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;CAC/C;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAM;gBAEZ,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAO;YA6BpC,cAAc;IAW5B;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;OAEG;IACG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAqDrF;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,SAAS,EAAE,aAAa,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IA6DF;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,MAAU,EAAE,cAAc,GAAE,MAAY,EAAE,YAAY,GAAE,MAAW,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA+CvI;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAwC5D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAInE;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,GAAG,CAAC;QAClB,SAAS,EAAE,GAAG,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB;CAOF"}
@@ -18,7 +18,10 @@
18
18
  * ```
19
19
  */
20
20
  import { SharedMemoryPool } from '../memory/SharedMemoryPool.js';
21
- import { ReflexionMemory, SkillLibrary, CausalRecall, CausalMemoryGraph } from 'agentdb';
21
+ import { ReflexionMemory } from 'agentdb/controllers/ReflexionMemory';
22
+ import { SkillLibrary } from 'agentdb/controllers/SkillLibrary';
23
+ import { CausalRecall } from 'agentdb/controllers/CausalRecall';
24
+ import { CausalMemoryGraph } from 'agentdb/controllers/CausalMemoryGraph';
22
25
  export class HybridReasoningBank {
23
26
  memory;
24
27
  reflexion;
@@ -34,7 +37,7 @@ export class HybridReasoningBank {
34
37
  this.reflexion = new ReflexionMemory(db, embedder);
35
38
  this.skills = new SkillLibrary(db, embedder);
36
39
  this.causalGraph = new CausalMemoryGraph(db);
37
- // CausalRecall with optimized rerank config - use any for extended options
40
+ // CausalRecall with optimized rerank config
38
41
  this.causalRecall = new CausalRecall(db, embedder, {
39
42
  alpha: 0.6, // 60% weight on similarity
40
43
  beta: 0.3, // 30% weight on causal uplift
@@ -1 +1 @@
1
- {"version":3,"file":"HybridBackend.js","sourceRoot":"","sources":["../../src/reasoningbank/HybridBackend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hybrid ReasoningBank Backend - Full Implementation for v1.7.1\n *\n * Combines Rust WASM (compute) + AgentDB TypeScript (storage) for optimal performance:\n * - WASM: 10x faster similarity computation\n * - AgentDB: Persistent SQLite storage with frontier memory\n * - CausalRecall: Utility-based reranking with causal uplift\n * - Automatic backend selection based on task requirements\n *\n * @example\n * ```typescript\n * import { HybridReasoningBank } from 'agentic-flow/reasoningbank';\n *\n * const rb = new HybridReasoningBank({ preferWasm: true });\n * await rb.storePattern({ task: '...', success: true, reward: 0.95 });\n * const patterns = await rb.retrievePatterns('similar task', { k: 5 });\n * const strategy = await rb.learnStrategy('API optimization');\n * ```\n */\n\nimport { SharedMemoryPool } from '../memory/SharedMemoryPool.js';\nimport { ReflexionMemory, SkillLibrary, CausalRecall, CausalMemoryGraph } from 'agentdb';\n\nexport interface PatternData {\n sessionId: string;\n task: string;\n input?: string;\n output?: string;\n critique?: string;\n success: boolean;\n reward: number;\n latencyMs?: number;\n tokensUsed?: number;\n}\n\nexport interface RetrievalOptions {\n k?: number;\n minReward?: number;\n onlySuccesses?: boolean;\n onlyFailures?: boolean;\n}\n\nexport interface CausalInsight {\n action: string;\n avgReward: number;\n avgUplift: number;\n confidence: number;\n evidenceCount: number;\n recommendation: 'DO_IT' | 'AVOID' | 'NEUTRAL';\n}\n\nexport class HybridReasoningBank {\n private memory: SharedMemoryPool;\n private reflexion: ReflexionMemory;\n private skills: SkillLibrary;\n private causalRecall: CausalRecall;\n private causalGraph: CausalMemoryGraph;\n private useWasm: boolean;\n private wasmModule: any;\n\n constructor(options: { preferWasm?: boolean } = {}) {\n this.memory = SharedMemoryPool.getInstance();\n const db = this.memory.getDatabase();\n const embedder = this.memory.getEmbedder() as any;\n\n this.reflexion = new ReflexionMemory(db, embedder);\n this.skills = new SkillLibrary(db, embedder);\n this.causalGraph = new CausalMemoryGraph(db);\n\n // CausalRecall with optimized rerank config - use any for extended options\n this.causalRecall = new CausalRecall(db, embedder, {\n alpha: 0.6, // 60% weight on similarity\n beta: 0.3, // 30% weight on causal uplift\n gamma: 0.1, // 10% penalty for latency\n minConfidence: 0.7\n } as any);\n\n this.useWasm = options.preferWasm ?? true;\n this.wasmModule = null;\n\n // Try to load WASM module\n if (this.useWasm) {\n this.loadWasmModule().catch(err => {\n console.warn('[HybridReasoningBank] WASM unavailable, using TypeScript:', err.message);\n this.useWasm = false;\n });\n }\n }\n\n private async loadWasmModule(): Promise<void> {\n try {\n // Dynamic import for WASM module\n const wasm = await import('../../wasm/reasoningbank/reasoningbank_wasm.js');\n this.wasmModule = wasm;\n console.log('[HybridReasoningBank] WASM module loaded successfully');\n } catch (error) {\n throw new Error(`WASM load failed: ${error}`);\n }\n }\n\n /**\n * Store a reasoning pattern\n */\n async storePattern(pattern: PatternData): Promise<number> {\n const episodeId = await this.reflexion.storeEpisode(pattern);\n\n // Store causal edge if action led to outcome\n if (pattern.input && pattern.output && pattern.success) {\n try {\n this.causalGraph.addCausalEdge({\n fromMemoryId: episodeId,\n fromMemoryType: 'episode',\n toMemoryId: episodeId + 1, // Next episode\n toMemoryType: 'episode',\n similarity: pattern.reward,\n uplift: pattern.success ? pattern.reward : -pattern.reward,\n confidence: 0.8,\n sampleSize: 1,\n metadata: {\n sessionId: pattern.sessionId,\n task: pattern.task\n }\n });\n } catch (error) {\n console.warn('[HybridReasoningBank] Failed to record causal edge:', error);\n }\n }\n\n return episodeId;\n }\n\n /**\n * Retrieve similar patterns with optional WASM acceleration\n */\n async retrievePatterns(query: string, options: RetrievalOptions = {}): Promise<any[]> {\n const { k = 5, minReward, onlySuccesses, onlyFailures } = options;\n\n // Check cache first\n const cacheKey = `retrieve:${query}:${k}:${onlySuccesses}:${onlyFailures}`;\n const cached = this.memory.getCachedQuery(cacheKey);\n if (cached) return cached;\n\n // Use CausalRecall for intelligent retrieval with utility-based ranking\n try {\n const result = await this.causalRecall.recall(\n `query-${Date.now()}`,\n query,\n k,\n undefined, // requirements\n 'public' // accessLevel\n );\n\n // Convert candidates to pattern format and filter\n let patterns = result.candidates.map(c => ({\n task: c.content,\n similarity: c.similarity,\n uplift: c.uplift || 0,\n utilityScore: c.utilityScore,\n type: c.type,\n id: c.id\n }));\n\n // Apply filters\n if (minReward !== undefined) {\n patterns = patterns.filter(p => (p.uplift || 0) >= minReward);\n }\n\n // Cache and return\n this.memory.cacheQuery(cacheKey, patterns, 60000);\n return patterns;\n } catch (error) {\n console.warn('[HybridReasoningBank] CausalRecall failed, falling back to ReflexionMemory:', error);\n\n // Fallback to basic ReflexionMemory\n const results = await this.reflexion.retrieveRelevant({\n task: query,\n k,\n minReward,\n onlySuccesses,\n onlyFailures\n });\n\n this.memory.cacheQuery(cacheKey, results, 60000);\n return results;\n }\n }\n\n /**\n * Learn optimal strategy for a task\n *\n * Combines pattern retrieval with causal analysis to provide evidence-based recommendations\n */\n async learnStrategy(task: string): Promise<{\n patterns: any[];\n causality: CausalInsight;\n confidence: number;\n recommendation: string;\n }> {\n // Get successful patterns\n const patterns = await this.retrievePatterns(task, { k: 10, onlySuccesses: true });\n\n // Get causal effects for this task type\n let causalData: any;\n try {\n // Note: queryCausalEffects requires specific memory IDs\n // For task-level analysis, we'll use pattern success rates instead\n const stats = await this.reflexion.getTaskStats(task, 30);\n\n if (stats.totalAttempts > 0) {\n causalData = {\n action: task,\n avgReward: stats.avgReward || 0,\n avgUplift: stats.improvementTrend || 0,\n confidence: Math.min(stats.totalAttempts / 10, 1.0),\n evidenceCount: stats.totalAttempts,\n recommendation: (stats.improvementTrend || 0) > 0.1 ? 'DO_IT' :\n (stats.improvementTrend || 0) < -0.1 ? 'AVOID' : 'NEUTRAL'\n };\n }\n } catch (error) {\n console.warn('[HybridReasoningBank] Causal analysis failed:', error);\n }\n\n // Fallback if no causal data\n if (!causalData) {\n causalData = {\n action: task,\n avgReward: patterns.length > 0 ? (patterns[0].reward || 0) : 0,\n avgUplift: 0,\n confidence: patterns.length > 0 ? 0.6 : 0.3,\n evidenceCount: patterns.length,\n recommendation: patterns.length > 0 ? 'DO_IT' : 'NEUTRAL'\n };\n }\n\n // Calculate overall confidence\n const patternConf = Math.min(patterns.length / 10, 1.0); // 10+ patterns = full confidence\n const causalConf = causalData.confidence;\n const confidence = 0.6 * patternConf + 0.4 * causalConf;\n\n // Generate recommendation\n let recommendation = '';\n if (confidence > 0.8 && causalData.avgUplift > 0.1) {\n recommendation = `Strong evidence for success (${patterns.length} patterns, +${(causalData.avgUplift * 100).toFixed(1)}% uplift)`;\n } else if (confidence > 0.5) {\n recommendation = `Moderate evidence (${patterns.length} patterns available)`;\n } else {\n recommendation = `Limited evidence - proceed with caution`;\n }\n\n return {\n patterns,\n causality: causalData,\n confidence,\n recommendation\n };\n }\n\n /**\n * Auto-consolidate patterns into skills\n */\n async autoConsolidate(minUses: number = 3, minSuccessRate: number = 0.7, lookbackDays: number = 30): Promise<{ skillsCreated: number }> {\n // Get task statistics\n const stats = await this.reflexion.getTaskStats('', lookbackDays);\n\n if (stats.totalAttempts < minUses || stats.successRate < minSuccessRate) {\n return { skillsCreated: 0 };\n }\n\n // Get successful episodes for consolidation\n const episodes = await this.reflexion.retrieveRelevant({\n task: '',\n k: 50,\n onlySuccesses: true,\n timeWindowDays: lookbackDays\n });\n\n // Group by task type and consolidate\n const taskGroups = new Map<string, any[]>();\n episodes.forEach(ep => {\n const group = taskGroups.get(ep.task) || [];\n group.push(ep);\n taskGroups.set(ep.task, group);\n });\n\n let skillsCreated = 0;\n for (const [task, group] of taskGroups) {\n if (group.length >= minUses) {\n const successRate = group.filter(e => e.success).length / group.length;\n if (successRate >= minSuccessRate) {\n await this.skills.createSkill({\n name: `skill_${task.replace(/\\s+/g, '_').toLowerCase()}`,\n description: `Consolidated from ${group.length} successful episodes`,\n signature: { inputs: {}, outputs: {} },\n successRate,\n uses: group.length,\n avgReward: group.reduce((sum, e) => sum + e.reward, 0) / group.length,\n avgLatencyMs: group.reduce((sum, e) => sum + (e.latencyMs || 0), 0) / group.length,\n metadata: { consolidatedAt: Date.now(), taskType: task }\n });\n skillsCreated++;\n }\n }\n }\n\n return { skillsCreated };\n }\n\n /**\n * What-if causal analysis\n */\n async whatIfAnalysis(action: string): Promise<CausalInsight> {\n try {\n // Use task statistics for what-if analysis\n const stats = await this.reflexion.getTaskStats(action, 30);\n\n if (stats.totalAttempts === 0) {\n return {\n action,\n avgReward: 0,\n avgUplift: 0,\n confidence: 0,\n evidenceCount: 0,\n recommendation: 'NEUTRAL'\n };\n }\n\n const avgUplift = stats.improvementTrend || 0;\n const confidence = Math.min(stats.totalAttempts / 10, 1.0);\n\n return {\n action,\n avgReward: stats.avgReward || 0,\n avgUplift,\n confidence,\n evidenceCount: stats.totalAttempts,\n recommendation: avgUplift > 0.1 ? 'DO_IT' : avgUplift < -0.1 ? 'AVOID' : 'NEUTRAL'\n };\n } catch (error) {\n console.error('[HybridReasoningBank] What-if analysis failed:', error);\n return {\n action,\n avgReward: 0,\n avgUplift: 0,\n confidence: 0,\n evidenceCount: 0,\n recommendation: 'NEUTRAL'\n };\n }\n }\n\n /**\n * Search for relevant skills\n */\n async searchSkills(taskType: string, k: number = 5): Promise<any[]> {\n return this.skills.searchSkills({ task: taskType, k, minSuccessRate: 0.5 });\n }\n\n /**\n * Get statistics\n */\n getStats(): {\n causalRecall: any;\n reflexion: any;\n skills: number;\n } {\n return {\n causalRecall: this.causalRecall.getStats(),\n reflexion: {}, // ReflexionMemory doesn't expose global stats\n skills: 0 // Would need to query database\n };\n }\n}\n"]}
1
+ {"version":3,"file":"HybridBackend.js","sourceRoot":"","sources":["../../src/reasoningbank/HybridBackend.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Hybrid ReasoningBank Backend - Full Implementation for v1.7.1\n *\n * Combines Rust WASM (compute) + AgentDB TypeScript (storage) for optimal performance:\n * - WASM: 10x faster similarity computation\n * - AgentDB: Persistent SQLite storage with frontier memory\n * - CausalRecall: Utility-based reranking with causal uplift\n * - Automatic backend selection based on task requirements\n *\n * @example\n * ```typescript\n * import { HybridReasoningBank } from 'agentic-flow/reasoningbank';\n *\n * const rb = new HybridReasoningBank({ preferWasm: true });\n * await rb.storePattern({ task: '...', success: true, reward: 0.95 });\n * const patterns = await rb.retrievePatterns('similar task', { k: 5 });\n * const strategy = await rb.learnStrategy('API optimization');\n * ```\n */\n\nimport { SharedMemoryPool } from '../memory/SharedMemoryPool.js';\nimport { ReflexionMemory } from 'agentdb/controllers/ReflexionMemory';\nimport { SkillLibrary } from 'agentdb/controllers/SkillLibrary';\nimport { CausalRecall } from 'agentdb/controllers/CausalRecall';\nimport { CausalMemoryGraph } from 'agentdb/controllers/CausalMemoryGraph';\n\nexport interface PatternData {\n sessionId: string;\n task: string;\n input?: string;\n output?: string;\n critique?: string;\n success: boolean;\n reward: number;\n latencyMs?: number;\n tokensUsed?: number;\n}\n\nexport interface RetrievalOptions {\n k?: number;\n minReward?: number;\n onlySuccesses?: boolean;\n onlyFailures?: boolean;\n}\n\nexport interface CausalInsight {\n action: string;\n avgReward: number;\n avgUplift: number;\n confidence: number;\n evidenceCount: number;\n recommendation: 'DO_IT' | 'AVOID' | 'NEUTRAL';\n}\n\nexport class HybridReasoningBank {\n private memory: SharedMemoryPool;\n private reflexion: ReflexionMemory;\n private skills: SkillLibrary;\n private causalRecall: CausalRecall;\n private causalGraph: CausalMemoryGraph;\n private useWasm: boolean;\n private wasmModule: any;\n\n constructor(options: { preferWasm?: boolean } = {}) {\n this.memory = SharedMemoryPool.getInstance();\n const db = this.memory.getDatabase();\n const embedder = this.memory.getEmbedder();\n\n this.reflexion = new ReflexionMemory(db, embedder);\n this.skills = new SkillLibrary(db, embedder);\n this.causalGraph = new CausalMemoryGraph(db);\n\n // CausalRecall with optimized rerank config\n this.causalRecall = new CausalRecall(db, embedder, {\n alpha: 0.6, // 60% weight on similarity\n beta: 0.3, // 30% weight on causal uplift\n gamma: 0.1, // 10% penalty for latency\n minConfidence: 0.7\n });\n\n this.useWasm = options.preferWasm ?? true;\n this.wasmModule = null;\n\n // Try to load WASM module\n if (this.useWasm) {\n this.loadWasmModule().catch(err => {\n console.warn('[HybridReasoningBank] WASM unavailable, using TypeScript:', err.message);\n this.useWasm = false;\n });\n }\n }\n\n private async loadWasmModule(): Promise<void> {\n try {\n // Dynamic import for WASM module\n const wasm = await import('../../wasm/reasoningbank/reasoningbank_wasm.js');\n this.wasmModule = wasm;\n console.log('[HybridReasoningBank] WASM module loaded successfully');\n } catch (error) {\n throw new Error(`WASM load failed: ${error}`);\n }\n }\n\n /**\n * Store a reasoning pattern\n */\n async storePattern(pattern: PatternData): Promise<number> {\n const episodeId = await this.reflexion.storeEpisode(pattern);\n\n // Store causal edge if action led to outcome\n if (pattern.input && pattern.output && pattern.success) {\n try {\n this.causalGraph.addCausalEdge({\n fromMemoryId: episodeId,\n fromMemoryType: 'episode',\n toMemoryId: episodeId + 1, // Next episode\n toMemoryType: 'episode',\n similarity: pattern.reward,\n uplift: pattern.success ? pattern.reward : -pattern.reward,\n confidence: 0.8,\n sampleSize: 1,\n metadata: {\n sessionId: pattern.sessionId,\n task: pattern.task\n }\n });\n } catch (error) {\n console.warn('[HybridReasoningBank] Failed to record causal edge:', error);\n }\n }\n\n return episodeId;\n }\n\n /**\n * Retrieve similar patterns with optional WASM acceleration\n */\n async retrievePatterns(query: string, options: RetrievalOptions = {}): Promise<any[]> {\n const { k = 5, minReward, onlySuccesses, onlyFailures } = options;\n\n // Check cache first\n const cacheKey = `retrieve:${query}:${k}:${onlySuccesses}:${onlyFailures}`;\n const cached = this.memory.getCachedQuery(cacheKey);\n if (cached) return cached;\n\n // Use CausalRecall for intelligent retrieval with utility-based ranking\n try {\n const result = await this.causalRecall.recall(\n `query-${Date.now()}`,\n query,\n k,\n undefined, // requirements\n 'public' // accessLevel\n );\n\n // Convert candidates to pattern format and filter\n let patterns = result.candidates.map(c => ({\n task: c.content,\n similarity: c.similarity,\n uplift: c.uplift || 0,\n utilityScore: c.utilityScore,\n type: c.type,\n id: c.id\n }));\n\n // Apply filters\n if (minReward !== undefined) {\n patterns = patterns.filter(p => (p.uplift || 0) >= minReward);\n }\n\n // Cache and return\n this.memory.cacheQuery(cacheKey, patterns, 60000);\n return patterns;\n } catch (error) {\n console.warn('[HybridReasoningBank] CausalRecall failed, falling back to ReflexionMemory:', error);\n\n // Fallback to basic ReflexionMemory\n const results = await this.reflexion.retrieveRelevant({\n task: query,\n k,\n minReward,\n onlySuccesses,\n onlyFailures\n });\n\n this.memory.cacheQuery(cacheKey, results, 60000);\n return results;\n }\n }\n\n /**\n * Learn optimal strategy for a task\n *\n * Combines pattern retrieval with causal analysis to provide evidence-based recommendations\n */\n async learnStrategy(task: string): Promise<{\n patterns: any[];\n causality: CausalInsight;\n confidence: number;\n recommendation: string;\n }> {\n // Get successful patterns\n const patterns = await this.retrievePatterns(task, { k: 10, onlySuccesses: true });\n\n // Get causal effects for this task type\n let causalData: any;\n try {\n // Note: queryCausalEffects requires specific memory IDs\n // For task-level analysis, we'll use pattern success rates instead\n const stats = await this.reflexion.getTaskStats(task, 30);\n\n if (stats.totalAttempts > 0) {\n causalData = {\n action: task,\n avgReward: stats.avgReward || 0,\n avgUplift: stats.improvementTrend || 0,\n confidence: Math.min(stats.totalAttempts / 10, 1.0),\n evidenceCount: stats.totalAttempts,\n recommendation: (stats.improvementTrend || 0) > 0.1 ? 'DO_IT' :\n (stats.improvementTrend || 0) < -0.1 ? 'AVOID' : 'NEUTRAL'\n };\n }\n } catch (error) {\n console.warn('[HybridReasoningBank] Causal analysis failed:', error);\n }\n\n // Fallback if no causal data\n if (!causalData) {\n causalData = {\n action: task,\n avgReward: patterns.length > 0 ? (patterns[0].reward || 0) : 0,\n avgUplift: 0,\n confidence: patterns.length > 0 ? 0.6 : 0.3,\n evidenceCount: patterns.length,\n recommendation: patterns.length > 0 ? 'DO_IT' : 'NEUTRAL'\n };\n }\n\n // Calculate overall confidence\n const patternConf = Math.min(patterns.length / 10, 1.0); // 10+ patterns = full confidence\n const causalConf = causalData.confidence;\n const confidence = 0.6 * patternConf + 0.4 * causalConf;\n\n // Generate recommendation\n let recommendation = '';\n if (confidence > 0.8 && causalData.avgUplift > 0.1) {\n recommendation = `Strong evidence for success (${patterns.length} patterns, +${(causalData.avgUplift * 100).toFixed(1)}% uplift)`;\n } else if (confidence > 0.5) {\n recommendation = `Moderate evidence (${patterns.length} patterns available)`;\n } else {\n recommendation = `Limited evidence - proceed with caution`;\n }\n\n return {\n patterns,\n causality: causalData,\n confidence,\n recommendation\n };\n }\n\n /**\n * Auto-consolidate patterns into skills\n */\n async autoConsolidate(minUses: number = 3, minSuccessRate: number = 0.7, lookbackDays: number = 30): Promise<{ skillsCreated: number }> {\n // Get task statistics\n const stats = await this.reflexion.getTaskStats('', lookbackDays);\n\n if (stats.totalAttempts < minUses || stats.successRate < minSuccessRate) {\n return { skillsCreated: 0 };\n }\n\n // Get successful episodes for consolidation\n const episodes = await this.reflexion.retrieveRelevant({\n task: '',\n k: 50,\n onlySuccesses: true,\n timeWindowDays: lookbackDays\n });\n\n // Group by task type and consolidate\n const taskGroups = new Map<string, any[]>();\n episodes.forEach(ep => {\n const group = taskGroups.get(ep.task) || [];\n group.push(ep);\n taskGroups.set(ep.task, group);\n });\n\n let skillsCreated = 0;\n for (const [task, group] of taskGroups) {\n if (group.length >= minUses) {\n const successRate = group.filter(e => e.success).length / group.length;\n if (successRate >= minSuccessRate) {\n await this.skills.createSkill({\n name: `skill_${task.replace(/\\s+/g, '_').toLowerCase()}`,\n description: `Consolidated from ${group.length} successful episodes`,\n signature: { inputs: {}, outputs: {} },\n successRate,\n uses: group.length,\n avgReward: group.reduce((sum, e) => sum + e.reward, 0) / group.length,\n avgLatencyMs: group.reduce((sum, e) => sum + (e.latencyMs || 0), 0) / group.length,\n metadata: { consolidatedAt: Date.now(), taskType: task }\n });\n skillsCreated++;\n }\n }\n }\n\n return { skillsCreated };\n }\n\n /**\n * What-if causal analysis\n */\n async whatIfAnalysis(action: string): Promise<CausalInsight> {\n try {\n // Use task statistics for what-if analysis\n const stats = await this.reflexion.getTaskStats(action, 30);\n\n if (stats.totalAttempts === 0) {\n return {\n action,\n avgReward: 0,\n avgUplift: 0,\n confidence: 0,\n evidenceCount: 0,\n recommendation: 'NEUTRAL'\n };\n }\n\n const avgUplift = stats.improvementTrend || 0;\n const confidence = Math.min(stats.totalAttempts / 10, 1.0);\n\n return {\n action,\n avgReward: stats.avgReward || 0,\n avgUplift,\n confidence,\n evidenceCount: stats.totalAttempts,\n recommendation: avgUplift > 0.1 ? 'DO_IT' : avgUplift < -0.1 ? 'AVOID' : 'NEUTRAL'\n };\n } catch (error) {\n console.error('[HybridReasoningBank] What-if analysis failed:', error);\n return {\n action,\n avgReward: 0,\n avgUplift: 0,\n confidence: 0,\n evidenceCount: 0,\n recommendation: 'NEUTRAL'\n };\n }\n }\n\n /**\n * Search for relevant skills\n */\n async searchSkills(taskType: string, k: number = 5): Promise<any[]> {\n return this.skills.searchSkills({ task: taskType, k, minSuccessRate: 0.5 });\n }\n\n /**\n * Get statistics\n */\n getStats(): {\n causalRecall: any;\n reflexion: any;\n skills: number;\n } {\n return {\n causalRecall: this.causalRecall.getStats(),\n reflexion: {}, // ReflexionMemory doesn't expose global stats\n skills: 0 // Would need to query database\n };\n }\n}\n"]}
@@ -29,15 +29,6 @@ export declare function hasIndexedDB(): boolean;
29
29
  * Check if SQLite native module is available (Node.js)
30
30
  */
31
31
  export declare function hasSQLite(): boolean;
32
- /**
33
- * Check if sql.js (WASM SQLite) is available
34
- */
35
- export declare function hasSqlJs(): boolean;
36
- /**
37
- * Get best available SQLite implementation
38
- * Priority: better-sqlite3 > sql.js > none
39
- */
40
- export declare function getSQLiteImplementation(): 'better-sqlite3' | 'sql.js' | 'none';
41
32
  /**
42
33
  * Create ReasoningBank instance with optimal backend for current environment
43
34
  *
@@ -66,7 +57,7 @@ export declare function createOptimalReasoningBank(dbName?: string, options?: {
66
57
  * Get backend information and capabilities
67
58
  */
68
59
  export declare function getBackendInfo(): {
69
- backend: "nodejs" | "wasm";
60
+ backend: "wasm" | "nodejs";
70
61
  environment: string;
71
62
  features: {
72
63
  persistent: boolean;
@@ -83,7 +74,6 @@ export declare function validateEnvironment(): {
83
74
  valid: boolean;
84
75
  warnings: string[];
85
76
  backend: 'nodejs' | 'wasm';
86
- sqliteImpl: 'better-sqlite3' | 'sql.js' | 'none';
87
77
  };
88
78
  export { validateEnvironment as checkEnvironment };
89
79
  //# sourceMappingURL=backend-selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend-selector.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/backend-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,GAAG,MAAM,CAazD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAOlC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAI9E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,GAAE,MAAwB,EAChC,OAAO,GAAE;IACP,wDAAwD;IACxD,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,GAAG,CAAC,CAuDd;AAED;;GAEG;AACH,wBAAgB,cAAc;;;;;;;;;;EAkB7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,UAAU,EAAE,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;CAClD,CAwBA;AAGD,OAAO,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"backend-selector.d.ts","sourceRoot":"","sources":["../../src/reasoningbank/backend-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,GAAG,MAAM,CAazD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAOnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,GAAE,MAAwB,EAChC,OAAO,GAAE;IACP,wDAAwD;IACxD,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,OAAO,CAAC,GAAG,CAAC,CAuCd;AAED;;GAEG;AACH,wBAAgB,cAAc;;;;;;;;;;EAkB7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC5B,CAqBA;AAGD,OAAO,EAAE,mBAAmB,IAAI,gBAAgB,EAAE,CAAC"}
@@ -50,29 +50,6 @@ export function hasSQLite() {
50
50
  return false;
51
51
  }
52
52
  }
53
- /**
54
- * Check if sql.js (WASM SQLite) is available
55
- */
56
- export function hasSqlJs() {
57
- try {
58
- require.resolve('sql.js');
59
- return true;
60
- }
61
- catch {
62
- return false;
63
- }
64
- }
65
- /**
66
- * Get best available SQLite implementation
67
- * Priority: better-sqlite3 > sql.js > none
68
- */
69
- export function getSQLiteImplementation() {
70
- if (hasSQLite())
71
- return 'better-sqlite3';
72
- if (hasSqlJs())
73
- return 'sql.js';
74
- return 'none';
75
- }
76
53
  /**
77
54
  * Create ReasoningBank instance with optimal backend for current environment
78
55
  *
@@ -96,24 +73,11 @@ export async function createOptimalReasoningBank(dbName = 'reasoningbank', optio
96
73
  console.log(`[ReasoningBank] Database: ${dbName}`);
97
74
  }
98
75
  if (backend === 'nodejs') {
99
- const sqliteImpl = getSQLiteImplementation();
100
- if (options.verbose) {
101
- console.log(`[ReasoningBank] SQLite implementation: ${sqliteImpl}`);
102
- }
103
- // If better-sqlite3 not available, fallback to WASM/sql.js
104
- if (sqliteImpl === 'none' || sqliteImpl === 'sql.js') {
105
- if (options.verbose) {
106
- console.log(`[ReasoningBank] Native SQLite not available, using WASM backend`);
107
- }
108
- // Use WASM backend as fallback (works on Windows without native compilation)
109
- const { createReasoningBank } = await import('./wasm-adapter.js');
110
- return await createReasoningBank(dbName);
111
- }
112
76
  // Import Node.js backend (SQLite)
113
77
  const reasoningBankModule = await import('./index.js');
114
78
  const dbPath = options.dbPath || `.swarm/${dbName}.db`;
115
79
  if (options.verbose) {
116
- console.log(`[ReasoningBank] Using Node.js backend with better-sqlite3`);
80
+ console.log(`[ReasoningBank] Using Node.js backend with SQLite`);
117
81
  console.log(`[ReasoningBank] Database path: ${dbPath}`);
118
82
  }
119
83
  // The Node.js backend uses the db module and core algorithms
@@ -161,15 +125,11 @@ export function getBackendInfo() {
161
125
  */
162
126
  export function validateEnvironment() {
163
127
  const backend = getRecommendedBackend();
164
- const sqliteImpl = getSQLiteImplementation();
165
128
  const warnings = [];
166
129
  let valid = true;
167
- if (backend === 'nodejs' && sqliteImpl === 'none') {
168
- warnings.push('No SQLite implementation available - will use WASM fallback');
169
- warnings.push('Install sql.js for persistence: npm install sql.js');
170
- }
171
- else if (backend === 'nodejs' && sqliteImpl === 'sql.js') {
172
- warnings.push('Using sql.js (WASM) instead of better-sqlite3 - this is normal on Windows');
130
+ if (backend === 'nodejs' && !hasSQLite()) {
131
+ warnings.push('better-sqlite3 not found - database operations will fail');
132
+ valid = false;
173
133
  }
174
134
  if (backend === 'wasm' && typeof window !== 'undefined' && !hasIndexedDB()) {
175
135
  warnings.push('IndexedDB not available - using ephemeral memory storage');
@@ -179,7 +139,7 @@ export function validateEnvironment() {
179
139
  warnings.push('WASM in Node.js uses in-memory storage (ephemeral)');
180
140
  warnings.push('Consider using Node.js backend for persistence');
181
141
  }
182
- return { valid, warnings, backend, sqliteImpl };
142
+ return { valid, warnings, backend };
183
143
  }
184
144
  // Export validation helper for use in initialization
185
145
  export { validateEnvironment as checkEnvironment };
@@ -1 +1 @@
1
- {"version":3,"file":"backend-selector.js","sourceRoot":"","sources":["../../src/reasoningbank/backend-selector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Backend Selection Helper for ReasoningBank\n *\n * Automatically selects the optimal ReasoningBank backend based on runtime environment.\n *\n * Usage:\n * ```typescript\n * import { createOptimalReasoningBank, getRecommendedBackend } from 'agentic-flow/reasoningbank/backend-selector';\n *\n * // Automatic backend selection\n * const rb = await createOptimalReasoningBank('my-db');\n *\n * // Manual check\n * const backend = getRecommendedBackend();\n * console.log(`Using ${backend} backend`);\n * ```\n */\n\n/**\n * Detect runtime environment and recommend optimal backend\n *\n * @returns 'nodejs' for Node.js/Deno environments, 'wasm' for browsers\n */\nexport function getRecommendedBackend(): 'nodejs' | 'wasm' {\n // Check for browser environment\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'wasm';\n }\n\n // Check for Node.js/Deno\n if (typeof process !== 'undefined' && process.versions?.node) {\n return 'nodejs';\n }\n\n // Default to WASM for unknown environments (likely web workers, etc.)\n return 'wasm';\n}\n\n/**\n * Check if IndexedDB is available (browser environment)\n */\nexport function hasIndexedDB(): boolean {\n return typeof indexedDB !== 'undefined';\n}\n\n/**\n * Check if SQLite native module is available (Node.js)\n */\nexport function hasSQLite(): boolean {\n try {\n require.resolve('better-sqlite3');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Check if sql.js (WASM SQLite) is available\n */\nexport function hasSqlJs(): boolean {\n try {\n require.resolve('sql.js');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get best available SQLite implementation\n * Priority: better-sqlite3 > sql.js > none\n */\nexport function getSQLiteImplementation(): 'better-sqlite3' | 'sql.js' | 'none' {\n if (hasSQLite()) return 'better-sqlite3';\n if (hasSqlJs()) return 'sql.js';\n return 'none';\n}\n\n/**\n * Create ReasoningBank instance with optimal backend for current environment\n *\n * @param dbName - Database name (used differently by each backend)\n * @param options - Additional configuration options\n * @returns ReasoningBank instance using optimal backend\n *\n * @example\n * ```typescript\n * // Node.js: Creates SQLite database at .swarm/my-app.db\n * const rb = await createOptimalReasoningBank('my-app');\n *\n * // Browser: Creates IndexedDB database named 'my-app'\n * const rb = await createOptimalReasoningBank('my-app');\n * ```\n */\nexport async function createOptimalReasoningBank(\n dbName: string = 'reasoningbank',\n options: {\n /** Force specific backend (overrides auto-detection) */\n forceBackend?: 'nodejs' | 'wasm';\n /** Custom database path (Node.js only) */\n dbPath?: string;\n /** Enable verbose logging */\n verbose?: boolean;\n } = {}\n): Promise<any> {\n const backend = options.forceBackend || getRecommendedBackend();\n\n if (options.verbose) {\n console.log(`[ReasoningBank] Environment: ${backend}`);\n console.log(`[ReasoningBank] Database: ${dbName}`);\n }\n\n if (backend === 'nodejs') {\n const sqliteImpl = getSQLiteImplementation();\n\n if (options.verbose) {\n console.log(`[ReasoningBank] SQLite implementation: ${sqliteImpl}`);\n }\n\n // If better-sqlite3 not available, fallback to WASM/sql.js\n if (sqliteImpl === 'none' || sqliteImpl === 'sql.js') {\n if (options.verbose) {\n console.log(`[ReasoningBank] Native SQLite not available, using WASM backend`);\n }\n // Use WASM backend as fallback (works on Windows without native compilation)\n const { createReasoningBank } = await import('./wasm-adapter.js');\n return await createReasoningBank(dbName);\n }\n\n // Import Node.js backend (SQLite)\n const reasoningBankModule = await import('./index.js');\n\n const dbPath = options.dbPath || `.swarm/${dbName}.db`;\n\n if (options.verbose) {\n console.log(`[ReasoningBank] Using Node.js backend with better-sqlite3`);\n console.log(`[ReasoningBank] Database path: ${dbPath}`);\n }\n\n // The Node.js backend uses the db module and core algorithms\n // Initialize the database\n await reasoningBankModule.initialize();\n\n // Note: The Node.js backend has a different API than WASM\n // It uses the functions from db/queries.ts and core algorithms\n // We return the full module for direct access to all functions\n return reasoningBankModule;\n } else {\n // Import WASM backend (IndexedDB in browser, Memory in Node.js)\n const { createReasoningBank } = await import('./wasm-adapter.js');\n\n if (options.verbose) {\n const storageType = hasIndexedDB() ? 'IndexedDB (persistent)' : 'Memory (ephemeral)';\n console.log(`[ReasoningBank] Using WASM backend with ${storageType}`);\n console.log(`[ReasoningBank] Database name: ${dbName}`);\n }\n\n return await createReasoningBank(dbName);\n }\n}\n\n/**\n * Get backend information and capabilities\n */\nexport function getBackendInfo() {\n const backend = getRecommendedBackend();\n\n return {\n backend,\n environment: typeof window !== 'undefined' ? 'browser' : 'nodejs',\n features: {\n persistent: backend === 'nodejs' || hasIndexedDB(),\n sqlite: backend === 'nodejs' && hasSQLite(),\n indexeddb: backend === 'wasm' && hasIndexedDB(),\n wasm: backend === 'wasm',\n },\n storage: backend === 'nodejs'\n ? 'SQLite (disk)'\n : hasIndexedDB()\n ? 'IndexedDB (browser)'\n : 'Memory (ephemeral)',\n };\n}\n\n/**\n * Validate environment and warn about limitations\n */\nexport function validateEnvironment(): {\n valid: boolean;\n warnings: string[];\n backend: 'nodejs' | 'wasm';\n sqliteImpl: 'better-sqlite3' | 'sql.js' | 'none';\n} {\n const backend = getRecommendedBackend();\n const sqliteImpl = getSQLiteImplementation();\n const warnings: string[] = [];\n let valid = true;\n\n if (backend === 'nodejs' && sqliteImpl === 'none') {\n warnings.push('No SQLite implementation available - will use WASM fallback');\n warnings.push('Install sql.js for persistence: npm install sql.js');\n } else if (backend === 'nodejs' && sqliteImpl === 'sql.js') {\n warnings.push('Using sql.js (WASM) instead of better-sqlite3 - this is normal on Windows');\n }\n\n if (backend === 'wasm' && typeof window !== 'undefined' && !hasIndexedDB()) {\n warnings.push('IndexedDB not available - using ephemeral memory storage');\n warnings.push('Data will be lost when page/process exits');\n }\n\n if (backend === 'wasm' && typeof window === 'undefined') {\n warnings.push('WASM in Node.js uses in-memory storage (ephemeral)');\n warnings.push('Consider using Node.js backend for persistence');\n }\n\n return { valid, warnings, backend, sqliteImpl };\n}\n\n// Export validation helper for use in initialization\nexport { validateEnvironment as checkEnvironment };\n"]}
1
+ {"version":3,"file":"backend-selector.js","sourceRoot":"","sources":["../../src/reasoningbank/backend-selector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Backend Selection Helper for ReasoningBank\n *\n * Automatically selects the optimal ReasoningBank backend based on runtime environment.\n *\n * Usage:\n * ```typescript\n * import { createOptimalReasoningBank, getRecommendedBackend } from 'agentic-flow/reasoningbank/backend-selector';\n *\n * // Automatic backend selection\n * const rb = await createOptimalReasoningBank('my-db');\n *\n * // Manual check\n * const backend = getRecommendedBackend();\n * console.log(`Using ${backend} backend`);\n * ```\n */\n\n/**\n * Detect runtime environment and recommend optimal backend\n *\n * @returns 'nodejs' for Node.js/Deno environments, 'wasm' for browsers\n */\nexport function getRecommendedBackend(): 'nodejs' | 'wasm' {\n // Check for browser environment\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return 'wasm';\n }\n\n // Check for Node.js/Deno\n if (typeof process !== 'undefined' && process.versions?.node) {\n return 'nodejs';\n }\n\n // Default to WASM for unknown environments (likely web workers, etc.)\n return 'wasm';\n}\n\n/**\n * Check if IndexedDB is available (browser environment)\n */\nexport function hasIndexedDB(): boolean {\n return typeof indexedDB !== 'undefined';\n}\n\n/**\n * Check if SQLite native module is available (Node.js)\n */\nexport function hasSQLite(): boolean {\n try {\n require.resolve('better-sqlite3');\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Create ReasoningBank instance with optimal backend for current environment\n *\n * @param dbName - Database name (used differently by each backend)\n * @param options - Additional configuration options\n * @returns ReasoningBank instance using optimal backend\n *\n * @example\n * ```typescript\n * // Node.js: Creates SQLite database at .swarm/my-app.db\n * const rb = await createOptimalReasoningBank('my-app');\n *\n * // Browser: Creates IndexedDB database named 'my-app'\n * const rb = await createOptimalReasoningBank('my-app');\n * ```\n */\nexport async function createOptimalReasoningBank(\n dbName: string = 'reasoningbank',\n options: {\n /** Force specific backend (overrides auto-detection) */\n forceBackend?: 'nodejs' | 'wasm';\n /** Custom database path (Node.js only) */\n dbPath?: string;\n /** Enable verbose logging */\n verbose?: boolean;\n } = {}\n): Promise<any> {\n const backend = options.forceBackend || getRecommendedBackend();\n\n if (options.verbose) {\n console.log(`[ReasoningBank] Environment: ${backend}`);\n console.log(`[ReasoningBank] Database: ${dbName}`);\n }\n\n if (backend === 'nodejs') {\n // Import Node.js backend (SQLite)\n const reasoningBankModule = await import('./index.js');\n\n const dbPath = options.dbPath || `.swarm/${dbName}.db`;\n\n if (options.verbose) {\n console.log(`[ReasoningBank] Using Node.js backend with SQLite`);\n console.log(`[ReasoningBank] Database path: ${dbPath}`);\n }\n\n // The Node.js backend uses the db module and core algorithms\n // Initialize the database\n await reasoningBankModule.initialize();\n\n // Note: The Node.js backend has a different API than WASM\n // It uses the functions from db/queries.ts and core algorithms\n // We return the full module for direct access to all functions\n return reasoningBankModule;\n } else {\n // Import WASM backend (IndexedDB in browser, Memory in Node.js)\n const { createReasoningBank } = await import('./wasm-adapter.js');\n\n if (options.verbose) {\n const storageType = hasIndexedDB() ? 'IndexedDB (persistent)' : 'Memory (ephemeral)';\n console.log(`[ReasoningBank] Using WASM backend with ${storageType}`);\n console.log(`[ReasoningBank] Database name: ${dbName}`);\n }\n\n return await createReasoningBank(dbName);\n }\n}\n\n/**\n * Get backend information and capabilities\n */\nexport function getBackendInfo() {\n const backend = getRecommendedBackend();\n\n return {\n backend,\n environment: typeof window !== 'undefined' ? 'browser' : 'nodejs',\n features: {\n persistent: backend === 'nodejs' || hasIndexedDB(),\n sqlite: backend === 'nodejs' && hasSQLite(),\n indexeddb: backend === 'wasm' && hasIndexedDB(),\n wasm: backend === 'wasm',\n },\n storage: backend === 'nodejs'\n ? 'SQLite (disk)'\n : hasIndexedDB()\n ? 'IndexedDB (browser)'\n : 'Memory (ephemeral)',\n };\n}\n\n/**\n * Validate environment and warn about limitations\n */\nexport function validateEnvironment(): {\n valid: boolean;\n warnings: string[];\n backend: 'nodejs' | 'wasm';\n} {\n const backend = getRecommendedBackend();\n const warnings: string[] = [];\n let valid = true;\n\n if (backend === 'nodejs' && !hasSQLite()) {\n warnings.push('better-sqlite3 not found - database operations will fail');\n valid = false;\n }\n\n if (backend === 'wasm' && typeof window !== 'undefined' && !hasIndexedDB()) {\n warnings.push('IndexedDB not available - using ephemeral memory storage');\n warnings.push('Data will be lost when page/process exits');\n }\n\n if (backend === 'wasm' && typeof window === 'undefined') {\n warnings.push('WASM in Node.js uses in-memory storage (ephemeral)');\n warnings.push('Consider using Node.js backend for persistence');\n }\n\n return { valid, warnings, backend };\n}\n\n// Export validation helper for use in initialization\nexport { validateEnvironment as checkEnvironment };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/consolidate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAqDhE;AA+KD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C"}
1
+ {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../../src/reasoningbank/core/consolidate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAqDhE;AAuGD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C"}