agentic-flow 1.10.0 → 1.10.2

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 (580) hide show
  1. package/CHANGELOG.md +25 -1338
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/agentdb/index.d.ts +26 -0
  4. package/dist/agentdb/index.d.ts.map +1 -0
  5. package/dist/agentdb/index.js +1 -0
  6. package/dist/agentdb/index.js.map +1 -0
  7. package/dist/agentdb/validate-frontier.cjs +416 -0
  8. package/dist/agentdb/validate-frontier.cjs.map +1 -0
  9. package/dist/agentdb/validate-frontier.d.cts +2 -0
  10. package/dist/agentdb/validate-frontier.d.cts.map +1 -0
  11. package/dist/agents/claudeAgent.d.ts +6 -0
  12. package/dist/agents/claudeAgent.d.ts.map +1 -0
  13. package/dist/agents/claudeAgent.js +22 -3
  14. package/dist/agents/claudeAgent.js.map +1 -0
  15. package/dist/agents/claudeAgentDirect.d.ts +6 -0
  16. package/dist/agents/claudeAgentDirect.d.ts.map +1 -0
  17. package/dist/agents/claudeAgentDirect.js +1 -0
  18. package/dist/agents/claudeAgentDirect.js.map +1 -0
  19. package/dist/agents/claudeFlowAgent.d.ts +32 -0
  20. package/dist/agents/claudeFlowAgent.d.ts.map +1 -0
  21. package/dist/agents/claudeFlowAgent.js +1 -0
  22. package/dist/agents/claudeFlowAgent.js.map +1 -0
  23. package/dist/agents/codeReviewAgent.d.ts +4 -0
  24. package/dist/agents/codeReviewAgent.d.ts.map +1 -0
  25. package/dist/agents/codeReviewAgent.js +1 -0
  26. package/dist/agents/codeReviewAgent.js.map +1 -0
  27. package/dist/agents/dataAgent.d.ts +4 -0
  28. package/dist/agents/dataAgent.d.ts.map +1 -0
  29. package/dist/agents/dataAgent.js +1 -0
  30. package/dist/agents/dataAgent.js.map +1 -0
  31. package/dist/agents/directApiAgent.d.ts +10 -0
  32. package/dist/agents/directApiAgent.d.ts.map +1 -0
  33. package/dist/agents/directApiAgent.js +1 -0
  34. package/dist/agents/directApiAgent.js.map +1 -0
  35. package/dist/agents/webResearchAgent.d.ts +4 -0
  36. package/dist/agents/webResearchAgent.d.ts.map +1 -0
  37. package/dist/agents/webResearchAgent.js +1 -0
  38. package/dist/agents/webResearchAgent.js.map +1 -0
  39. package/dist/cli/agent-manager.d.ts +57 -0
  40. package/dist/cli/agent-manager.d.ts.map +1 -0
  41. package/dist/cli/agent-manager.js +1 -0
  42. package/dist/cli/agent-manager.js.map +1 -0
  43. package/dist/cli/claude-code-wrapper.d.ts +21 -0
  44. package/dist/cli/claude-code-wrapper.d.ts.map +1 -0
  45. package/dist/cli/claude-code-wrapper.js +1 -0
  46. package/dist/cli/claude-code-wrapper.js.map +1 -0
  47. package/dist/cli/config-wizard.d.ts +21 -0
  48. package/dist/cli/config-wizard.d.ts.map +1 -0
  49. package/dist/cli/config-wizard.js +1 -0
  50. package/dist/cli/config-wizard.js.map +1 -0
  51. package/dist/cli/federation-cli.d.ts +1 -0
  52. package/dist/cli/federation-cli.d.ts.map +1 -0
  53. package/dist/cli/federation-cli.js +1 -0
  54. package/dist/cli/federation-cli.js.map +1 -0
  55. package/dist/cli/mcp-manager.d.ts +12 -0
  56. package/dist/cli/mcp-manager.d.ts.map +1 -0
  57. package/dist/cli/mcp-manager.js +1 -0
  58. package/dist/cli/mcp-manager.js.map +1 -0
  59. package/dist/cli/mcp.d.ts +11 -0
  60. package/dist/cli/mcp.d.ts.map +1 -0
  61. package/dist/cli/mcp.js +1 -0
  62. package/dist/cli/mcp.js.map +1 -0
  63. package/dist/cli-proxy.d.ts +7 -0
  64. package/dist/cli-proxy.d.ts.map +1 -0
  65. package/dist/cli-proxy.js +1 -0
  66. package/dist/cli-proxy.js.map +1 -0
  67. package/dist/cli-standalone-proxy.d.ts +17 -0
  68. package/dist/cli-standalone-proxy.d.ts.map +1 -0
  69. package/dist/cli-standalone-proxy.js +1 -0
  70. package/dist/cli-standalone-proxy.js.map +1 -0
  71. package/dist/config/claudeFlow.d.ts +33 -0
  72. package/dist/config/claudeFlow.d.ts.map +1 -0
  73. package/dist/config/claudeFlow.js +1 -0
  74. package/dist/config/claudeFlow.js.map +1 -0
  75. package/dist/config/quic.d.ts +58 -0
  76. package/dist/config/quic.d.ts.map +1 -0
  77. package/dist/config/quic.js +1 -0
  78. package/dist/config/quic.js.map +1 -0
  79. package/dist/config/tools.d.ts +17 -0
  80. package/dist/config/tools.d.ts.map +1 -0
  81. package/dist/config/tools.js +1 -0
  82. package/dist/config/tools.js.map +1 -0
  83. package/dist/core/long-running-agent.d.ts +92 -0
  84. package/dist/core/long-running-agent.d.ts.map +1 -0
  85. package/dist/core/long-running-agent.js +1 -0
  86. package/dist/core/long-running-agent.js.map +1 -0
  87. package/dist/core/provider-manager.d.ts +145 -0
  88. package/dist/core/provider-manager.d.ts.map +1 -0
  89. package/dist/core/provider-manager.js +1 -0
  90. package/dist/core/provider-manager.js.map +1 -0
  91. package/dist/examples/multi-agent-orchestration.d.ts +3 -0
  92. package/dist/examples/multi-agent-orchestration.d.ts.map +1 -0
  93. package/dist/examples/multi-agent-orchestration.js +1 -0
  94. package/dist/examples/multi-agent-orchestration.js.map +1 -0
  95. package/dist/examples/use-goal-planner.d.ts +3 -0
  96. package/dist/examples/use-goal-planner.d.ts.map +1 -0
  97. package/dist/examples/use-goal-planner.js +1 -0
  98. package/dist/examples/use-goal-planner.js.map +1 -0
  99. package/dist/examples/use-provider-fallback.d.ts +13 -0
  100. package/dist/examples/use-provider-fallback.d.ts.map +1 -0
  101. package/dist/examples/use-provider-fallback.js +1 -0
  102. package/dist/examples/use-provider-fallback.js.map +1 -0
  103. package/dist/federation/EphemeralAgent.d.ts +84 -0
  104. package/dist/federation/EphemeralAgent.d.ts.map +1 -0
  105. package/dist/federation/EphemeralAgent.js +1 -0
  106. package/dist/federation/EphemeralAgent.js.map +1 -0
  107. package/dist/federation/FederationHub.d.ts +89 -0
  108. package/dist/federation/FederationHub.d.ts.map +1 -0
  109. package/dist/federation/FederationHub.js +1 -0
  110. package/dist/federation/FederationHub.js.map +1 -0
  111. package/dist/federation/FederationHubClient.d.ts +70 -0
  112. package/dist/federation/FederationHubClient.d.ts.map +1 -0
  113. package/dist/federation/FederationHubClient.js +1 -0
  114. package/dist/federation/FederationHubClient.js.map +1 -0
  115. package/dist/federation/FederationHubServer.d.ts +100 -0
  116. package/dist/federation/FederationHubServer.d.ts.map +1 -0
  117. package/dist/federation/FederationHubServer.js +1 -0
  118. package/dist/federation/FederationHubServer.js.map +1 -0
  119. package/dist/federation/SecurityManager.d.ts +80 -0
  120. package/dist/federation/SecurityManager.d.ts.map +1 -0
  121. package/dist/federation/SecurityManager.js +1 -0
  122. package/dist/federation/SecurityManager.js.map +1 -0
  123. package/dist/federation/debug/agent-debug-stream.d.ts +171 -0
  124. package/dist/federation/debug/agent-debug-stream.d.ts.map +1 -0
  125. package/dist/federation/debug/agent-debug-stream.js +1 -0
  126. package/dist/federation/debug/agent-debug-stream.js.map +1 -0
  127. package/dist/federation/debug/debug-stream.d.ts +157 -0
  128. package/dist/federation/debug/debug-stream.d.ts.map +1 -0
  129. package/dist/federation/debug/debug-stream.js +1 -0
  130. package/dist/federation/debug/debug-stream.js.map +1 -0
  131. package/dist/federation/index.d.ts +13 -0
  132. package/dist/federation/index.d.ts.map +1 -0
  133. package/dist/federation/index.js +1 -0
  134. package/dist/federation/index.js.map +1 -0
  135. package/dist/federation/integrations/realtime-federation.d.ts +144 -0
  136. package/dist/federation/integrations/realtime-federation.d.ts.map +1 -0
  137. package/dist/federation/integrations/realtime-federation.js +1 -0
  138. package/dist/federation/integrations/realtime-federation.js.map +1 -0
  139. package/dist/federation/integrations/supabase-adapter-debug.d.ts +91 -0
  140. package/dist/federation/integrations/supabase-adapter-debug.d.ts.map +1 -0
  141. package/dist/federation/integrations/supabase-adapter-debug.js +1 -0
  142. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -0
  143. package/dist/federation/integrations/supabase-adapter.d.ts +89 -0
  144. package/dist/federation/integrations/supabase-adapter.d.ts.map +1 -0
  145. package/dist/federation/integrations/supabase-adapter.js +1 -0
  146. package/dist/federation/integrations/supabase-adapter.js.map +1 -0
  147. package/dist/health.d.ts +28 -0
  148. package/dist/health.d.ts.map +1 -0
  149. package/dist/health.js +1 -0
  150. package/dist/health.js.map +1 -0
  151. package/dist/hooks/parallel-validation.d.ts +51 -0
  152. package/dist/hooks/parallel-validation.d.ts.map +1 -0
  153. package/dist/hooks/parallel-validation.js +1 -0
  154. package/dist/hooks/parallel-validation.js.map +1 -0
  155. package/dist/hooks/swarm-learning-optimizer.d.ts +89 -0
  156. package/dist/hooks/swarm-learning-optimizer.d.ts.map +1 -0
  157. package/dist/hooks/swarm-learning-optimizer.js +1 -0
  158. package/dist/hooks/swarm-learning-optimizer.js.map +1 -0
  159. package/dist/index.d.ts +4 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +15 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/mcp/claudeFlowSdkServer.d.ts +6 -0
  164. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -0
  165. package/dist/mcp/claudeFlowSdkServer.js +1 -0
  166. package/dist/mcp/claudeFlowSdkServer.js.map +1 -0
  167. package/dist/mcp/fastmcp/servers/claude-flow-sdk.d.ts +3 -0
  168. package/dist/mcp/fastmcp/servers/claude-flow-sdk.d.ts.map +1 -0
  169. package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +1 -0
  170. package/dist/mcp/fastmcp/servers/claude-flow-sdk.js.map +1 -0
  171. package/dist/mcp/fastmcp/servers/http-sse.d.ts +3 -0
  172. package/dist/mcp/fastmcp/servers/http-sse.d.ts.map +1 -0
  173. package/dist/mcp/fastmcp/servers/http-sse.js +1 -0
  174. package/dist/mcp/fastmcp/servers/http-sse.js.map +1 -0
  175. package/dist/mcp/fastmcp/servers/http-streaming-updated.d.ts +3 -0
  176. package/dist/mcp/fastmcp/servers/http-streaming-updated.d.ts.map +1 -0
  177. package/dist/mcp/fastmcp/servers/http-streaming-updated.js +1 -0
  178. package/dist/mcp/fastmcp/servers/http-streaming-updated.js.map +1 -0
  179. package/dist/mcp/fastmcp/servers/poc-stdio.d.ts +3 -0
  180. package/dist/mcp/fastmcp/servers/poc-stdio.d.ts.map +1 -0
  181. package/dist/mcp/fastmcp/servers/poc-stdio.js +1 -0
  182. package/dist/mcp/fastmcp/servers/poc-stdio.js.map +1 -0
  183. package/dist/mcp/fastmcp/servers/stdio-full.d.ts +3 -0
  184. package/dist/mcp/fastmcp/servers/stdio-full.d.ts.map +1 -0
  185. package/dist/mcp/fastmcp/servers/stdio-full.js +1 -0
  186. package/dist/mcp/fastmcp/servers/stdio-full.js.map +1 -0
  187. package/dist/mcp/fastmcp/tools/agent/add-agent.d.ts +3 -0
  188. package/dist/mcp/fastmcp/tools/agent/add-agent.d.ts.map +1 -0
  189. package/dist/mcp/fastmcp/tools/agent/add-agent.js +1 -0
  190. package/dist/mcp/fastmcp/tools/agent/add-agent.js.map +1 -0
  191. package/dist/mcp/fastmcp/tools/agent/add-command.d.ts +3 -0
  192. package/dist/mcp/fastmcp/tools/agent/add-command.d.ts.map +1 -0
  193. package/dist/mcp/fastmcp/tools/agent/add-command.js +1 -0
  194. package/dist/mcp/fastmcp/tools/agent/add-command.js.map +1 -0
  195. package/dist/mcp/fastmcp/tools/agent/execute.d.ts +3 -0
  196. package/dist/mcp/fastmcp/tools/agent/execute.d.ts.map +1 -0
  197. package/dist/mcp/fastmcp/tools/agent/execute.js +1 -0
  198. package/dist/mcp/fastmcp/tools/agent/execute.js.map +1 -0
  199. package/dist/mcp/fastmcp/tools/agent/list.d.ts +3 -0
  200. package/dist/mcp/fastmcp/tools/agent/list.d.ts.map +1 -0
  201. package/dist/mcp/fastmcp/tools/agent/list.js +1 -0
  202. package/dist/mcp/fastmcp/tools/agent/list.js.map +1 -0
  203. package/dist/mcp/fastmcp/tools/agent/parallel.d.ts +3 -0
  204. package/dist/mcp/fastmcp/tools/agent/parallel.d.ts.map +1 -0
  205. package/dist/mcp/fastmcp/tools/agent/parallel.js +1 -0
  206. package/dist/mcp/fastmcp/tools/agent/parallel.js.map +1 -0
  207. package/dist/mcp/fastmcp/tools/swarm/init.d.ts +3 -0
  208. package/dist/mcp/fastmcp/tools/swarm/init.d.ts.map +1 -0
  209. package/dist/mcp/fastmcp/tools/swarm/init.js +1 -0
  210. package/dist/mcp/fastmcp/tools/swarm/init.js.map +1 -0
  211. package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts +3 -0
  212. package/dist/mcp/fastmcp/tools/swarm/orchestrate.d.ts.map +1 -0
  213. package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +1 -0
  214. package/dist/mcp/fastmcp/tools/swarm/orchestrate.js.map +1 -0
  215. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts +3 -0
  216. package/dist/mcp/fastmcp/tools/swarm/spawn.d.ts.map +1 -0
  217. package/dist/mcp/fastmcp/tools/swarm/spawn.js +1 -0
  218. package/dist/mcp/fastmcp/tools/swarm/spawn.js.map +1 -0
  219. package/dist/mcp/fastmcp/types/index.d.ts +33 -0
  220. package/dist/mcp/fastmcp/types/index.d.ts.map +1 -0
  221. package/dist/mcp/fastmcp/types/index.js +1 -0
  222. package/dist/mcp/fastmcp/types/index.js.map +1 -0
  223. package/dist/mcp/standalone-stdio.d.ts +3 -0
  224. package/dist/mcp/standalone-stdio.d.ts.map +1 -0
  225. package/dist/mcp/standalone-stdio.js +1 -0
  226. package/dist/mcp/standalone-stdio.js.map +1 -0
  227. package/dist/memory/SharedMemoryPool.d.ts +116 -0
  228. package/dist/memory/SharedMemoryPool.d.ts.map +1 -0
  229. package/dist/memory/SharedMemoryPool.js +1 -0
  230. package/dist/memory/SharedMemoryPool.js.map +1 -0
  231. package/dist/memory/index.d.ts +8 -0
  232. package/dist/memory/index.d.ts.map +1 -0
  233. package/dist/memory/index.js +1 -0
  234. package/dist/memory/index.js.map +1 -0
  235. package/dist/proxy/adaptive-proxy.d.ts +51 -0
  236. package/dist/proxy/adaptive-proxy.d.ts.map +1 -0
  237. package/dist/proxy/adaptive-proxy.js +1 -0
  238. package/dist/proxy/adaptive-proxy.js.map +1 -0
  239. package/dist/proxy/anthropic-to-gemini.d.ts +20 -0
  240. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -0
  241. package/dist/proxy/anthropic-to-gemini.js +1 -0
  242. package/dist/proxy/anthropic-to-gemini.js.map +1 -0
  243. package/dist/proxy/anthropic-to-onnx.d.ts +17 -0
  244. package/dist/proxy/anthropic-to-onnx.d.ts.map +1 -0
  245. package/dist/proxy/anthropic-to-onnx.js +1 -0
  246. package/dist/proxy/anthropic-to-onnx.js.map +1 -0
  247. package/dist/proxy/anthropic-to-openrouter.d.ts +28 -0
  248. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -0
  249. package/dist/proxy/anthropic-to-openrouter.js +1 -0
  250. package/dist/proxy/anthropic-to-openrouter.js.map +1 -0
  251. package/dist/proxy/anthropic-to-requesty.d.ts +33 -0
  252. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -0
  253. package/dist/proxy/anthropic-to-requesty.js +1 -0
  254. package/dist/proxy/anthropic-to-requesty.js.map +1 -0
  255. package/dist/proxy/http2-proxy-optimized.d.ts +63 -0
  256. package/dist/proxy/http2-proxy-optimized.d.ts.map +1 -0
  257. package/dist/proxy/http2-proxy-optimized.js +1 -0
  258. package/dist/proxy/http2-proxy-optimized.js.map +1 -0
  259. package/dist/proxy/http2-proxy.d.ts +43 -0
  260. package/dist/proxy/http2-proxy.d.ts.map +1 -0
  261. package/dist/proxy/http2-proxy.js +1 -0
  262. package/dist/proxy/http2-proxy.js.map +1 -0
  263. package/dist/proxy/http3-proxy.d.ts +18 -0
  264. package/dist/proxy/http3-proxy.d.ts.map +1 -0
  265. package/dist/proxy/http3-proxy.js +1 -0
  266. package/dist/proxy/http3-proxy.js.map +1 -0
  267. package/dist/proxy/provider-instructions.d.ts +37 -0
  268. package/dist/proxy/provider-instructions.d.ts.map +1 -0
  269. package/dist/proxy/provider-instructions.js +1 -0
  270. package/dist/proxy/provider-instructions.js.map +1 -0
  271. package/dist/proxy/quic-proxy.d.ts +58 -0
  272. package/dist/proxy/quic-proxy.d.ts.map +1 -0
  273. package/dist/proxy/quic-proxy.js +1 -0
  274. package/dist/proxy/quic-proxy.js.map +1 -0
  275. package/dist/proxy/tool-emulation.d.ts +121 -0
  276. package/dist/proxy/tool-emulation.d.ts.map +1 -0
  277. package/dist/proxy/tool-emulation.js +1 -0
  278. package/dist/proxy/tool-emulation.js.map +1 -0
  279. package/dist/proxy/websocket-proxy.d.ts +39 -0
  280. package/dist/proxy/websocket-proxy.d.ts.map +1 -0
  281. package/dist/proxy/websocket-proxy.js +1 -0
  282. package/dist/proxy/websocket-proxy.js.map +1 -0
  283. package/dist/reasoningbank/AdvancedMemory.d.ts +120 -0
  284. package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -0
  285. package/dist/reasoningbank/AdvancedMemory.js +1 -0
  286. package/dist/reasoningbank/AdvancedMemory.js.map +1 -0
  287. package/dist/reasoningbank/HybridBackend.d.ts +99 -0
  288. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -0
  289. package/dist/reasoningbank/HybridBackend.js +1 -0
  290. package/dist/reasoningbank/HybridBackend.js.map +1 -0
  291. package/dist/reasoningbank/backend-selector.d.ts +79 -0
  292. package/dist/reasoningbank/backend-selector.d.ts.map +1 -0
  293. package/dist/reasoningbank/backend-selector.js +1 -0
  294. package/dist/reasoningbank/backend-selector.js.map +1 -0
  295. package/dist/reasoningbank/benchmark.d.ts +14 -0
  296. package/dist/reasoningbank/benchmark.d.ts.map +1 -0
  297. package/dist/reasoningbank/benchmark.js +1 -0
  298. package/dist/reasoningbank/benchmark.js.map +1 -0
  299. package/dist/reasoningbank/config/reasoningbank-types.d.ts +57 -0
  300. package/dist/reasoningbank/config/reasoningbank-types.d.ts.map +1 -0
  301. package/dist/reasoningbank/config/reasoningbank-types.js +1 -0
  302. package/dist/reasoningbank/config/reasoningbank-types.js.map +1 -0
  303. package/dist/reasoningbank/core/consolidate.d.ts +21 -0
  304. package/dist/reasoningbank/core/consolidate.d.ts.map +1 -0
  305. package/dist/reasoningbank/core/consolidate.js +1 -0
  306. package/dist/reasoningbank/core/consolidate.js.map +1 -0
  307. package/dist/reasoningbank/core/distill.d.ts +22 -0
  308. package/dist/reasoningbank/core/distill.d.ts.map +1 -0
  309. package/dist/reasoningbank/core/distill.js +1 -0
  310. package/dist/reasoningbank/core/distill.js.map +1 -0
  311. package/dist/reasoningbank/core/judge.d.ts +17 -0
  312. package/dist/reasoningbank/core/judge.d.ts.map +1 -0
  313. package/dist/reasoningbank/core/judge.js +1 -0
  314. package/dist/reasoningbank/core/judge.js.map +1 -0
  315. package/dist/reasoningbank/core/matts.d.ts +46 -0
  316. package/dist/reasoningbank/core/matts.d.ts.map +1 -0
  317. package/dist/reasoningbank/core/matts.js +1 -0
  318. package/dist/reasoningbank/core/matts.js.map +1 -0
  319. package/dist/reasoningbank/core/retrieve.d.ts +35 -0
  320. package/dist/reasoningbank/core/retrieve.d.ts.map +1 -0
  321. package/dist/reasoningbank/core/retrieve.js +1 -0
  322. package/dist/reasoningbank/core/retrieve.js.map +1 -0
  323. package/dist/reasoningbank/db/queries.d.ts +88 -0
  324. package/dist/reasoningbank/db/queries.d.ts.map +1 -0
  325. package/dist/reasoningbank/db/queries.js +1 -0
  326. package/dist/reasoningbank/db/queries.js.map +1 -0
  327. package/dist/reasoningbank/db/schema.d.ts +81 -0
  328. package/dist/reasoningbank/db/schema.d.ts.map +1 -0
  329. package/dist/reasoningbank/db/schema.js +1 -0
  330. package/dist/reasoningbank/db/schema.js.map +1 -0
  331. package/dist/reasoningbank/demo-comparison.d.ts +10 -0
  332. package/dist/reasoningbank/demo-comparison.d.ts.map +1 -0
  333. package/dist/reasoningbank/demo-comparison.js +1 -0
  334. package/dist/reasoningbank/demo-comparison.js.map +1 -0
  335. package/dist/reasoningbank/hooks/post-task.d.ts +9 -0
  336. package/dist/reasoningbank/hooks/post-task.d.ts.map +1 -0
  337. package/dist/reasoningbank/hooks/post-task.js +1 -0
  338. package/dist/reasoningbank/hooks/post-task.js.map +1 -0
  339. package/dist/reasoningbank/hooks/pre-task.d.ts +9 -0
  340. package/dist/reasoningbank/hooks/pre-task.d.ts.map +1 -0
  341. package/dist/reasoningbank/hooks/pre-task.js +1 -0
  342. package/dist/reasoningbank/hooks/pre-task.js.map +1 -0
  343. package/dist/reasoningbank/index-new.d.ts +49 -0
  344. package/dist/reasoningbank/index-new.d.ts.map +1 -0
  345. package/dist/reasoningbank/index-new.js +1 -0
  346. package/dist/reasoningbank/index-new.js.map +1 -0
  347. package/dist/reasoningbank/index.d.ts +50 -0
  348. package/dist/reasoningbank/index.d.ts.map +1 -0
  349. package/dist/reasoningbank/index.js +1 -0
  350. package/dist/reasoningbank/index.js.map +1 -0
  351. package/dist/reasoningbank/test-integration.d.ts +7 -0
  352. package/dist/reasoningbank/test-integration.d.ts.map +1 -0
  353. package/dist/reasoningbank/test-integration.js +1 -0
  354. package/dist/reasoningbank/test-integration.js.map +1 -0
  355. package/dist/reasoningbank/test-retrieval.d.ts +6 -0
  356. package/dist/reasoningbank/test-retrieval.d.ts.map +1 -0
  357. package/dist/reasoningbank/test-retrieval.js +1 -0
  358. package/dist/reasoningbank/test-retrieval.js.map +1 -0
  359. package/dist/reasoningbank/test-validation.d.ts +7 -0
  360. package/dist/reasoningbank/test-validation.d.ts.map +1 -0
  361. package/dist/reasoningbank/test-validation.js +1 -0
  362. package/dist/reasoningbank/test-validation.js.map +1 -0
  363. package/dist/reasoningbank/types/index.d.ts +123 -0
  364. package/dist/reasoningbank/types/index.d.ts.map +1 -0
  365. package/dist/reasoningbank/types/index.js +1 -0
  366. package/dist/reasoningbank/types/index.js.map +1 -0
  367. package/dist/reasoningbank/utils/config.d.ts +61 -0
  368. package/dist/reasoningbank/utils/config.d.ts.map +1 -0
  369. package/dist/reasoningbank/utils/config.js +1 -0
  370. package/dist/reasoningbank/utils/config.js.map +1 -0
  371. package/dist/reasoningbank/utils/embeddings.d.ts +21 -0
  372. package/dist/reasoningbank/utils/embeddings.d.ts.map +1 -0
  373. package/dist/reasoningbank/utils/embeddings.js +1 -0
  374. package/dist/reasoningbank/utils/embeddings.js.map +1 -0
  375. package/dist/reasoningbank/utils/mmr.d.ts +23 -0
  376. package/dist/reasoningbank/utils/mmr.d.ts.map +1 -0
  377. package/dist/reasoningbank/utils/mmr.js +1 -0
  378. package/dist/reasoningbank/utils/mmr.js.map +1 -0
  379. package/dist/reasoningbank/utils/pii-scrubber.d.ts +46 -0
  380. package/dist/reasoningbank/utils/pii-scrubber.d.ts.map +1 -0
  381. package/dist/reasoningbank/utils/pii-scrubber.js +1 -0
  382. package/dist/reasoningbank/utils/pii-scrubber.js.map +1 -0
  383. package/dist/reasoningbank/wasm-adapter.d.ts +104 -0
  384. package/dist/reasoningbank/wasm-adapter.d.ts.map +1 -0
  385. package/dist/reasoningbank/wasm-adapter.js +1 -0
  386. package/dist/reasoningbank/wasm-adapter.js.map +1 -0
  387. package/dist/router/model-mapping.d.ts +31 -0
  388. package/dist/router/model-mapping.d.ts.map +1 -0
  389. package/dist/router/model-mapping.js +1 -0
  390. package/dist/router/model-mapping.js.map +1 -0
  391. package/dist/router/providers/anthropic.d.ts +17 -0
  392. package/dist/router/providers/anthropic.d.ts.map +1 -0
  393. package/dist/router/providers/anthropic.js +1 -0
  394. package/dist/router/providers/anthropic.js.map +1 -0
  395. package/dist/router/providers/gemini.d.ts +17 -0
  396. package/dist/router/providers/gemini.d.ts.map +1 -0
  397. package/dist/router/providers/gemini.js +1 -0
  398. package/dist/router/providers/gemini.js.map +1 -0
  399. package/dist/router/providers/onnx-local-optimized.d.ts +71 -0
  400. package/dist/router/providers/onnx-local-optimized.d.ts.map +1 -0
  401. package/dist/router/providers/onnx-local-optimized.js +1 -0
  402. package/dist/router/providers/onnx-local-optimized.js.map +1 -0
  403. package/dist/router/providers/onnx-local.d.ts +75 -0
  404. package/dist/router/providers/onnx-local.d.ts.map +1 -0
  405. package/dist/router/providers/onnx-local.js +1 -0
  406. package/dist/router/providers/onnx-local.js.map +1 -0
  407. package/dist/router/providers/onnx-phi4.d.ts +64 -0
  408. package/dist/router/providers/onnx-phi4.d.ts.map +1 -0
  409. package/dist/router/providers/onnx-phi4.js +1 -0
  410. package/dist/router/providers/onnx-phi4.js.map +1 -0
  411. package/dist/router/providers/onnx.d.ts +65 -0
  412. package/dist/router/providers/onnx.d.ts.map +1 -0
  413. package/dist/router/providers/onnx.js +1 -0
  414. package/dist/router/providers/onnx.js.map +1 -0
  415. package/dist/router/providers/openrouter.d.ts +21 -0
  416. package/dist/router/providers/openrouter.d.ts.map +1 -0
  417. package/dist/router/providers/openrouter.js +1 -0
  418. package/dist/router/providers/openrouter.js.map +1 -0
  419. package/dist/router/router.d.ts +26 -0
  420. package/dist/router/router.d.ts.map +1 -0
  421. package/dist/router/router.js +1 -0
  422. package/dist/router/router.js.map +1 -0
  423. package/dist/router/test-integration.d.ts +13 -0
  424. package/dist/router/test-integration.d.ts.map +1 -0
  425. package/dist/router/test-integration.js +1 -0
  426. package/dist/router/test-integration.js.map +1 -0
  427. package/dist/router/test-onnx-benchmark.d.ts +7 -0
  428. package/dist/router/test-onnx-benchmark.d.ts.map +1 -0
  429. package/dist/router/test-onnx-benchmark.js +1 -0
  430. package/dist/router/test-onnx-benchmark.js.map +1 -0
  431. package/dist/router/test-onnx-integration.d.ts +8 -0
  432. package/dist/router/test-onnx-integration.d.ts.map +1 -0
  433. package/dist/router/test-onnx-integration.js +1 -0
  434. package/dist/router/test-onnx-integration.js.map +1 -0
  435. package/dist/router/test-onnx-local.d.ts +6 -0
  436. package/dist/router/test-onnx-local.d.ts.map +1 -0
  437. package/dist/router/test-onnx-local.js +1 -0
  438. package/dist/router/test-onnx-local.js.map +1 -0
  439. package/dist/router/test-onnx.d.ts +7 -0
  440. package/dist/router/test-onnx.d.ts.map +1 -0
  441. package/dist/router/test-onnx.js +1 -0
  442. package/dist/router/test-onnx.js.map +1 -0
  443. package/dist/router/test-openrouter.d.ts +3 -0
  444. package/dist/router/test-openrouter.d.ts.map +1 -0
  445. package/dist/router/test-openrouter.js +1 -0
  446. package/dist/router/test-openrouter.js.map +1 -0
  447. package/dist/router/test-phi4.d.ts +6 -0
  448. package/dist/router/test-phi4.d.ts.map +1 -0
  449. package/dist/router/test-phi4.js +1 -0
  450. package/dist/router/test-phi4.js.map +1 -0
  451. package/dist/router/types.d.ts +209 -0
  452. package/dist/router/types.d.ts.map +1 -0
  453. package/dist/router/types.js +1 -0
  454. package/dist/router/types.js.map +1 -0
  455. package/dist/swarm/index.d.ts +51 -0
  456. package/dist/swarm/index.d.ts.map +1 -0
  457. package/dist/swarm/index.js +1 -0
  458. package/dist/swarm/index.js.map +1 -0
  459. package/dist/swarm/quic-coordinator.d.ts +149 -0
  460. package/dist/swarm/quic-coordinator.d.ts.map +1 -0
  461. package/dist/swarm/quic-coordinator.js +1 -0
  462. package/dist/swarm/quic-coordinator.js.map +1 -0
  463. package/dist/swarm/transport-router.d.ts +124 -0
  464. package/dist/swarm/transport-router.d.ts.map +1 -0
  465. package/dist/swarm/transport-router.js +1 -0
  466. package/dist/swarm/transport-router.js.map +1 -0
  467. package/dist/transport/index.d.ts +2 -0
  468. package/dist/transport/index.d.ts.map +1 -0
  469. package/dist/transport/index.js +1 -0
  470. package/dist/transport/index.js.map +1 -0
  471. package/dist/transport/quic-handshake.d.ts +66 -0
  472. package/dist/transport/quic-handshake.d.ts.map +1 -0
  473. package/dist/transport/quic-handshake.js +1 -0
  474. package/dist/transport/quic-handshake.js.map +1 -0
  475. package/dist/transport/quic.d.ts +184 -0
  476. package/dist/transport/quic.d.ts.map +1 -0
  477. package/dist/transport/quic.js +1 -0
  478. package/dist/transport/quic.js.map +1 -0
  479. package/dist/utils/adaptive-pool-sizing.js +414 -0
  480. package/dist/utils/agentBoosterPreprocessor.d.ts +72 -0
  481. package/dist/utils/agentBoosterPreprocessor.d.ts.map +1 -0
  482. package/dist/utils/agentBoosterPreprocessor.js +1 -0
  483. package/dist/utils/agentBoosterPreprocessor.js.map +1 -0
  484. package/dist/utils/agentLoader.d.ts +22 -0
  485. package/dist/utils/agentLoader.d.ts.map +1 -0
  486. package/dist/utils/agentLoader.js +1 -0
  487. package/dist/utils/agentLoader.js.map +1 -0
  488. package/dist/utils/agentdb-runtime-patch.d.ts +28 -0
  489. package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -0
  490. package/dist/utils/agentdb-runtime-patch.js +1 -0
  491. package/dist/utils/agentdb-runtime-patch.js.map +1 -0
  492. package/dist/utils/auth.d.ts +13 -0
  493. package/dist/utils/auth.d.ts.map +1 -0
  494. package/dist/utils/auth.js +1 -0
  495. package/dist/utils/auth.js.map +1 -0
  496. package/dist/utils/circular-rate-limiter.js +391 -0
  497. package/dist/utils/cli.d.ts +31 -0
  498. package/dist/utils/cli.d.ts.map +1 -0
  499. package/dist/utils/cli.js +1 -0
  500. package/dist/utils/cli.js.map +1 -0
  501. package/dist/utils/compression-middleware.d.ts +55 -0
  502. package/dist/utils/compression-middleware.d.ts.map +1 -0
  503. package/dist/utils/compression-middleware.js +1 -0
  504. package/dist/utils/compression-middleware.js.map +1 -0
  505. package/dist/utils/connection-pool.d.ts +30 -0
  506. package/dist/utils/connection-pool.d.ts.map +1 -0
  507. package/dist/utils/connection-pool.js +1 -0
  508. package/dist/utils/connection-pool.js.map +1 -0
  509. package/dist/utils/dynamic-compression.js +298 -0
  510. package/dist/utils/http2-multiplexing.js +319 -0
  511. package/dist/utils/lazy-auth.js +311 -0
  512. package/dist/utils/logger.d.ts +19 -0
  513. package/dist/utils/logger.d.ts.map +1 -0
  514. package/dist/utils/logger.js +1 -0
  515. package/dist/utils/logger.js.map +1 -0
  516. package/dist/utils/math.d.ts +12 -0
  517. package/dist/utils/math.d.ts.map +1 -0
  518. package/dist/utils/math.js +1 -0
  519. package/dist/utils/math.js.map +1 -0
  520. package/dist/utils/mcpCommands.d.ts +2 -0
  521. package/dist/utils/mcpCommands.d.ts.map +1 -0
  522. package/dist/utils/mcpCommands.js +1 -0
  523. package/dist/utils/mcpCommands.js.map +1 -0
  524. package/dist/utils/model-downloader.d.ts +63 -0
  525. package/dist/utils/model-downloader.d.ts.map +1 -0
  526. package/dist/utils/model-downloader.js +1 -0
  527. package/dist/utils/model-downloader.js.map +1 -0
  528. package/dist/utils/modelCapabilities.d.ts +30 -0
  529. package/dist/utils/modelCapabilities.d.ts.map +1 -0
  530. package/dist/utils/modelCapabilities.js +1 -0
  531. package/dist/utils/modelCapabilities.js.map +1 -0
  532. package/dist/utils/modelOptimizer.d.ts +207 -0
  533. package/dist/utils/modelOptimizer.d.ts.map +1 -0
  534. package/dist/utils/modelOptimizer.js +1 -0
  535. package/dist/utils/modelOptimizer.js.map +1 -0
  536. package/dist/utils/rate-limiter.d.ts +17 -0
  537. package/dist/utils/rate-limiter.d.ts.map +1 -0
  538. package/dist/utils/rate-limiter.js +1 -0
  539. package/dist/utils/rate-limiter.js.map +1 -0
  540. package/dist/utils/reasoningbankCommands.d.ts +6 -0
  541. package/dist/utils/reasoningbankCommands.d.ts.map +1 -0
  542. package/dist/utils/reasoningbankCommands.js +1 -0
  543. package/dist/utils/reasoningbankCommands.js.map +1 -0
  544. package/dist/utils/response-cache.d.ts +94 -0
  545. package/dist/utils/response-cache.d.ts.map +1 -0
  546. package/dist/utils/response-cache.js +1 -0
  547. package/dist/utils/response-cache.js.map +1 -0
  548. package/dist/utils/retry.d.ts +9 -0
  549. package/dist/utils/retry.d.ts.map +1 -0
  550. package/dist/utils/retry.js +1 -0
  551. package/dist/utils/retry.js.map +1 -0
  552. package/dist/utils/server-push.js +251 -0
  553. package/dist/utils/streaming-optimizer.d.ts +37 -0
  554. package/dist/utils/streaming-optimizer.d.ts.map +1 -0
  555. package/dist/utils/streaming-optimizer.js +1 -0
  556. package/dist/utils/streaming-optimizer.js.map +1 -0
  557. package/dist/utils/zero-copy-buffer.js +286 -0
  558. package/docs/DOCKER-VERIFICATION.md +207 -0
  559. package/docs/ISSUE-55-VALIDATION.md +25 -6
  560. package/docs/NPX_AGENTDB_SETUP.md +175 -0
  561. package/docs/PUBLISH_GUIDE.md +438 -0
  562. package/docs/RELEASE-v1.10.0-COMPLETE.md +382 -0
  563. package/docs/archive/.agentdb-instructions.md +66 -0
  564. package/docs/archive/AGENT-BOOSTER-STATUS.md +292 -0
  565. package/docs/archive/CHANGELOG-v1.3.0.md +120 -0
  566. package/docs/archive/COMPLETION_REPORT_v1.7.1.md +335 -0
  567. package/docs/archive/IMPLEMENTATION_SUMMARY_v1.7.1.md +241 -0
  568. package/docs/archive/SUPABASE-INTEGRATION-COMPLETE.md +357 -0
  569. package/docs/archive/TESTING_QUICK_START.md +223 -0
  570. package/docs/archive/TOOL-EMULATION-INTEGRATION-ISSUE.md +669 -0
  571. package/docs/archive/VALIDATION_v1.7.1.md +234 -0
  572. package/docs/releases/PUBLISH_CHECKLIST_v1.10.0.md +396 -0
  573. package/docs/releases/PUBLISH_SUMMARY_v1.7.1.md +198 -0
  574. package/docs/releases/RELEASE_NOTES_v1.10.0.md +464 -0
  575. package/docs/releases/RELEASE_NOTES_v1.7.0.md +297 -0
  576. package/docs/releases/RELEASE_v1.7.1.md +327 -0
  577. package/package.json +1 -1
  578. package/validation/docker-npm-validation.sh +170 -0
  579. package/validation/simple-npm-validation.sh +131 -0
  580. package/validation/test-gemini-models.ts +200 -0
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+ /**
3
+ * Standalone Frontier Features Validation
4
+ *
5
+ * Tests all frontier features without requiring full build infrastructure.
6
+ * Validates:
7
+ * 1. CausalMemoryGraph - causal edges, experiments, uplift calculation
8
+ * 2. ExplainableRecall - certificates, Merkle proofs, provenance
9
+ * 3. CausalRecall - utility-based reranking
10
+ * 4. NightlyLearner - automated causal discovery
11
+ */
12
+ const Database = require('better-sqlite3');
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+ const crypto = require('crypto');
16
+ // Color codes for output
17
+ const colors = {
18
+ reset: '\x1b[0m',
19
+ green: '\x1b[32m',
20
+ red: '\x1b[31m',
21
+ yellow: '\x1b[33m',
22
+ blue: '\x1b[34m',
23
+ cyan: '\x1b[36m'
24
+ };
25
+ function log(message, color = 'reset') {
26
+ console.log(`${colors[color]}${message}${colors.reset}`);
27
+ }
28
+ function assert(condition, message) {
29
+ if (!condition) {
30
+ throw new Error(`Assertion failed: ${message}`);
31
+ }
32
+ }
33
+ class FrontierValidator {
34
+ constructor() {
35
+ // Create in-memory database
36
+ this.db = new Database(':memory:');
37
+ // Load schemas
38
+ this.loadSchemas();
39
+ this.testsRun = 0;
40
+ this.testsPassed = 0;
41
+ this.testsFailed = 0;
42
+ }
43
+ loadSchemas() {
44
+ log('\n📦 Loading database schemas...', 'cyan');
45
+ // Load core schema
46
+ const coreSchema = fs.readFileSync(path.join(__dirname, 'schemas/schema.sql'), 'utf-8');
47
+ this.db.exec(coreSchema);
48
+ // Load frontier schema
49
+ const frontierSchema = fs.readFileSync(path.join(__dirname, 'schemas/frontier-schema.sql'), 'utf-8');
50
+ this.db.exec(frontierSchema);
51
+ log('✓ Schemas loaded successfully', 'green');
52
+ }
53
+ runTest(name, testFn) {
54
+ this.testsRun++;
55
+ try {
56
+ log(`\n🧪 ${name}`, 'blue');
57
+ testFn();
58
+ this.testsPassed++;
59
+ log(' ✅ PASSED', 'green');
60
+ }
61
+ catch (error) {
62
+ this.testsFailed++;
63
+ log(` ❌ FAILED: ${error.message}`, 'red');
64
+ console.error(error);
65
+ }
66
+ }
67
+ // ========================================================================
68
+ // CausalMemoryGraph Tests
69
+ // ========================================================================
70
+ testCausalEdgeInsertion() {
71
+ this.runTest('Causal Edge Insertion', () => {
72
+ // Insert test episodes
73
+ const stmt = this.db.prepare(`
74
+ INSERT INTO episodes (session_id, task, reward, success)
75
+ VALUES (?, ?, ?, ?)
76
+ `);
77
+ stmt.run('session1', 'task1', 0.8, 1);
78
+ stmt.run('session1', 'task2', 0.9, 1);
79
+ // Insert causal edge
80
+ const edgeStmt = this.db.prepare(`
81
+ INSERT INTO causal_edges (
82
+ from_memory_id, from_memory_type, to_memory_id, to_memory_type,
83
+ similarity, uplift, confidence, sample_size, mechanism
84
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
85
+ `);
86
+ const result = edgeStmt.run(1, 'episode', 2, 'episode', 0.85, 0.15, 0.9, 100, 'test mechanism');
87
+ const edgeId = result.lastInsertRowid;
88
+ assert(edgeId > 0, 'Edge should be inserted');
89
+ // Verify
90
+ const edge = this.db.prepare('SELECT * FROM causal_edges WHERE id = ?').get(edgeId);
91
+ assert(edge.from_memory_id === 1, 'From ID should match');
92
+ assert(edge.to_memory_id === 2, 'To ID should match');
93
+ assert(edge.similarity === 0.85, 'Similarity should match');
94
+ assert(edge.uplift === 0.15, 'Uplift should match');
95
+ assert(edge.confidence === 0.9, 'Confidence should match');
96
+ });
97
+ }
98
+ testABExperiment() {
99
+ this.runTest('A/B Experiment and Uplift Calculation', () => {
100
+ // Insert episodes for experiment
101
+ const epStmt = this.db.prepare(`
102
+ INSERT INTO episodes (session_id, task, reward, success)
103
+ VALUES (?, ?, ?, ?)
104
+ `);
105
+ for (let i = 1; i <= 10; i++) {
106
+ epStmt.run(`session${i}`, `task${i}`, 0.7 + Math.random() * 0.2, 1);
107
+ }
108
+ // Create experiment
109
+ const expStmt = this.db.prepare(`
110
+ INSERT INTO causal_experiments (
111
+ name, hypothesis, treatment_id, treatment_type, start_time, sample_size, status
112
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
113
+ `);
114
+ const expResult = expStmt.run('Test Experiment', 'Treatment improves outcome', 1, 'episode', Date.now(), 0, 'running');
115
+ const expId = expResult.lastInsertRowid;
116
+ assert(expId > 0, 'Experiment should be created');
117
+ // Record observations
118
+ const obsStmt = this.db.prepare(`
119
+ INSERT INTO causal_observations (
120
+ experiment_id, episode_id, is_treatment, outcome_value, outcome_type
121
+ ) VALUES (?, ?, ?, ?, ?)
122
+ `);
123
+ // Treatment group (higher rewards)
124
+ for (let i = 0; i < 50; i++) {
125
+ obsStmt.run(expId, (i % 10) + 1, 1, 0.75 + Math.random() * 0.1, 'reward');
126
+ }
127
+ // Control group (lower rewards)
128
+ for (let i = 0; i < 50; i++) {
129
+ obsStmt.run(expId, (i % 10) + 1, 0, 0.55 + Math.random() * 0.1, 'reward');
130
+ }
131
+ // Check observations recorded
132
+ const obs = this.db.prepare('SELECT COUNT(*) as count FROM causal_observations WHERE experiment_id = ?').get(expId);
133
+ assert(obs.count === 100, 'Should have 100 observations');
134
+ // Calculate uplift (simplified inline calculation)
135
+ const treatmentObs = this.db.prepare(`
136
+ SELECT outcome_value FROM causal_observations
137
+ WHERE experiment_id = ? AND is_treatment = 1
138
+ `).all(expId);
139
+ const controlObs = this.db.prepare(`
140
+ SELECT outcome_value FROM causal_observations
141
+ WHERE experiment_id = ? AND is_treatment = 0
142
+ `).all(expId);
143
+ const treatmentMean = treatmentObs.reduce((sum, o) => sum + o.outcome_value, 0) / treatmentObs.length;
144
+ const controlMean = controlObs.reduce((sum, o) => sum + o.outcome_value, 0) / controlObs.length;
145
+ const uplift = treatmentMean - controlMean;
146
+ assert(uplift > 0.1, 'Uplift should be positive and significant');
147
+ log(` Uplift: ${uplift.toFixed(3)}, Treatment: ${treatmentMean.toFixed(3)}, Control: ${controlMean.toFixed(3)}`, 'cyan');
148
+ });
149
+ }
150
+ testCausalQuery() {
151
+ this.runTest('Causal Effect Query', () => {
152
+ // Insert test data
153
+ const epStmt = this.db.prepare(`
154
+ INSERT INTO episodes (session_id, task, reward, success)
155
+ VALUES (?, ?, ?, ?)
156
+ `);
157
+ for (let i = 1; i <= 5; i++) {
158
+ epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
159
+ }
160
+ // Insert causal edges
161
+ const edgeStmt = this.db.prepare(`
162
+ INSERT INTO causal_edges (
163
+ from_memory_id, from_memory_type, to_memory_id, to_memory_type,
164
+ similarity, uplift, confidence
165
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
166
+ `);
167
+ edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.2, 0.9);
168
+ edgeStmt.run(1, 'episode', 3, 'episode', 0.75, 0.15, 0.85);
169
+ edgeStmt.run(1, 'episode', 4, 'episode', 0.7, 0.05, 0.95); // Low uplift
170
+ edgeStmt.run(1, 'episode', 5, 'episode', 0.85, 0.25, 0.5); // Low confidence
171
+ // Query with filters
172
+ const effects = this.db.prepare(`
173
+ SELECT * FROM causal_edges
174
+ WHERE from_memory_id = ?
175
+ AND confidence >= ?
176
+ AND ABS(uplift) >= ?
177
+ ORDER BY ABS(uplift) * confidence DESC
178
+ `).all(1, 0.8, 0.1);
179
+ assert(effects.length === 2, 'Should find 2 high-confidence, high-uplift edges');
180
+ assert(effects[0].to_memory_id === 2, 'Highest impact should be first');
181
+ });
182
+ }
183
+ // ========================================================================
184
+ // ExplainableRecall Tests
185
+ // ========================================================================
186
+ testCertificateCreation() {
187
+ this.runTest('Certificate Creation and Storage', () => {
188
+ // Insert test episodes
189
+ const epStmt = this.db.prepare(`
190
+ INSERT INTO episodes (session_id, task, reward, success)
191
+ VALUES (?, ?, ?, ?)
192
+ `);
193
+ for (let i = 1; i <= 5; i++) {
194
+ epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
195
+ }
196
+ // Create certificate
197
+ const certId = crypto.randomUUID();
198
+ const chunkIds = ['1', '2', '3', '4'];
199
+ const minimalWhy = ['1', '2']; // Minimal hitting set
200
+ const merkleRoot = crypto.createHash('sha256').update('test').digest('hex');
201
+ const certStmt = this.db.prepare(`
202
+ INSERT INTO recall_certificates (
203
+ id, query_id, query_text, chunk_ids, chunk_types,
204
+ minimal_why, redundancy_ratio, completeness_score,
205
+ merkle_root, source_hashes, access_level, latency_ms
206
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
207
+ `);
208
+ certStmt.run(certId, 'q1', 'Test query', JSON.stringify(chunkIds), JSON.stringify(['episode', 'episode', 'episode', 'episode']), JSON.stringify(minimalWhy), chunkIds.length / minimalWhy.length, // redundancy ratio = 2
209
+ 1.0, // completeness
210
+ merkleRoot, JSON.stringify([merkleRoot, merkleRoot, merkleRoot, merkleRoot]), 'internal', 10);
211
+ // Verify
212
+ const cert = this.db.prepare('SELECT * FROM recall_certificates WHERE id = ?').get(certId);
213
+ assert(cert !== null, 'Certificate should exist');
214
+ assert(cert.query_id === 'q1', 'Query ID should match');
215
+ assert(JSON.parse(cert.chunk_ids).length === 4, 'Should have 4 chunks');
216
+ assert(JSON.parse(cert.minimal_why).length === 2, 'Minimal set should be 2');
217
+ assert(cert.redundancy_ratio === 2, 'Redundancy ratio should be 2');
218
+ assert(cert.completeness_score === 1.0, 'Completeness should be 1.0');
219
+ assert(cert.merkle_root === merkleRoot, 'Merkle root should match');
220
+ });
221
+ }
222
+ testMerkleProofGeneration() {
223
+ this.runTest('Merkle Proof Generation and Verification', () => {
224
+ // Create Merkle tree
225
+ const leaves = ['chunk1', 'chunk2', 'chunk3', 'chunk4'].map(content => crypto.createHash('sha256').update(content).digest('hex'));
226
+ // Build tree (simplified 2-level tree)
227
+ const level1 = [];
228
+ for (let i = 0; i < leaves.length; i += 2) {
229
+ const combined = leaves[i] + (leaves[i + 1] || leaves[i]);
230
+ level1.push(crypto.createHash('sha256').update(combined).digest('hex'));
231
+ }
232
+ const root = crypto.createHash('sha256')
233
+ .update(level1[0] + (level1[1] || level1[0]))
234
+ .digest('hex');
235
+ assert(root.length === 64, 'Merkle root should be 64 hex characters');
236
+ assert(/^[0-9a-f]{64}$/.test(root), 'Merkle root should be valid SHA-256 hash');
237
+ log(` Merkle root: ${root.substring(0, 16)}...`, 'cyan');
238
+ });
239
+ }
240
+ testProvenanceTracking() {
241
+ this.runTest('Provenance Source Tracking', () => {
242
+ // Insert test episodes
243
+ const epStmt = this.db.prepare(`
244
+ INSERT INTO episodes (session_id, task, reward, success)
245
+ VALUES (?, ?, ?, ?)
246
+ `);
247
+ for (let i = 1; i <= 3; i++) {
248
+ epStmt.run(`session${i}`, `task${i}`, 0.8, 1);
249
+ }
250
+ // Create provenance sources
251
+ const provStmt = this.db.prepare(`
252
+ INSERT INTO provenance_sources (
253
+ source_type, source_id, content_hash, creator
254
+ ) VALUES (?, ?, ?, ?)
255
+ `);
256
+ const hash1 = crypto.createHash('sha256').update('content1').digest('hex');
257
+ const hash2 = crypto.createHash('sha256').update('content2').digest('hex');
258
+ const result1 = provStmt.run('episode', 1, hash1, 'test_user');
259
+ const result2 = provStmt.run('episode', 2, hash2, 'test_user');
260
+ assert(result1.lastInsertRowid > 0, 'First provenance should be inserted');
261
+ assert(result2.lastInsertRowid > 0, 'Second provenance should be inserted');
262
+ // Query lineage
263
+ const lineage = this.db.prepare(`
264
+ SELECT * FROM provenance_sources
265
+ WHERE content_hash = ?
266
+ `).get(hash1);
267
+ assert(lineage !== null, 'Lineage should exist');
268
+ assert(lineage.source_type === 'episode', 'Source type should match');
269
+ assert(lineage.creator === 'test_user', 'Creator should match');
270
+ });
271
+ }
272
+ testJustificationPaths() {
273
+ this.runTest('Justification Paths', () => {
274
+ // Create certificate first
275
+ const certId = crypto.randomUUID();
276
+ this.db.prepare(`
277
+ INSERT INTO recall_certificates (
278
+ id, query_id, query_text, chunk_ids, chunk_types,
279
+ minimal_why, redundancy_ratio, completeness_score,
280
+ merkle_root, source_hashes, access_level
281
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
282
+ `).run(certId, 'q2', 'Test query', JSON.stringify(['1', '2']), JSON.stringify(['episode', 'episode']), JSON.stringify(['1']), 2, 1.0, 'hash', JSON.stringify(['hash1', 'hash2']), 'internal');
283
+ // Add justification paths
284
+ const justStmt = this.db.prepare(`
285
+ INSERT INTO justification_paths (
286
+ certificate_id, chunk_id, chunk_type, reason, necessity_score, path_elements
287
+ ) VALUES (?, ?, ?, ?, ?, ?)
288
+ `);
289
+ justStmt.run(certId, '1', 'episode', 'semantic_match', 0.9, JSON.stringify(['query', 'chunk1']));
290
+ justStmt.run(certId, '2', 'episode', 'causal_link', 0.7, JSON.stringify(['query', 'chunk1', 'chunk2']));
291
+ // Query justifications
292
+ const justifications = this.db.prepare(`
293
+ SELECT * FROM justification_paths
294
+ WHERE certificate_id = ?
295
+ `).all(certId);
296
+ assert(justifications.length === 2, 'Should have 2 justification paths');
297
+ assert(justifications[0].reason === 'semantic_match', 'First reason should match');
298
+ assert(justifications[1].reason === 'causal_link', 'Second reason should match');
299
+ });
300
+ }
301
+ // ========================================================================
302
+ // Integration Tests
303
+ // ========================================================================
304
+ testCausalRecallIntegration() {
305
+ this.runTest('Causal Recall Integration', () => {
306
+ // Insert episodes with embeddings
307
+ const epStmt = this.db.prepare(`
308
+ INSERT INTO episodes (session_id, task, reward, success, latency_ms)
309
+ VALUES (?, ?, ?, ?, ?)
310
+ `);
311
+ for (let i = 1; i <= 10; i++) {
312
+ epStmt.run(`session${i}`, `task${i}`, 0.7 + i * 0.02, 1, 50 + i * 5);
313
+ }
314
+ // Add embeddings
315
+ const embStmt = this.db.prepare(`
316
+ INSERT INTO episode_embeddings (episode_id, embedding)
317
+ VALUES (?, ?)
318
+ `);
319
+ for (let i = 1; i <= 10; i++) {
320
+ // Create mock embedding
321
+ const embedding = new Float32Array(384);
322
+ for (let j = 0; j < 384; j++) {
323
+ embedding[j] = Math.random();
324
+ }
325
+ embStmt.run(i, JSON.stringify(Array.from(embedding)));
326
+ }
327
+ // Add causal edges
328
+ const edgeStmt = this.db.prepare(`
329
+ INSERT INTO causal_edges (
330
+ from_memory_id, from_memory_type, to_memory_id, to_memory_type,
331
+ similarity, uplift, confidence
332
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)
333
+ `);
334
+ edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.15, 0.9);
335
+ edgeStmt.run(2, 'episode', 3, 'episode', 0.75, 0.2, 0.85);
336
+ // Verify integration
337
+ const episodes = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();
338
+ const embeddings = this.db.prepare('SELECT COUNT(*) as count FROM episode_embeddings').get();
339
+ const edges = this.db.prepare('SELECT COUNT(*) as count FROM causal_edges').get();
340
+ assert(episodes.count === 10, 'Should have 10 episodes');
341
+ assert(embeddings.count === 10, 'Should have 10 embeddings');
342
+ assert(edges.count === 2, 'Should have 2 causal edges');
343
+ log(` Episodes: ${episodes.count}, Embeddings: ${embeddings.count}, Edges: ${edges.count}`, 'cyan');
344
+ });
345
+ }
346
+ testDatabasePerformance() {
347
+ this.runTest('Database Performance', () => {
348
+ // Insert many episodes for performance test
349
+ const start = Date.now();
350
+ this.db.transaction(() => {
351
+ const stmt = this.db.prepare(`
352
+ INSERT INTO episodes (session_id, task, reward, success)
353
+ VALUES (?, ?, ?, ?)
354
+ `);
355
+ for (let i = 1; i <= 1000; i++) {
356
+ stmt.run(`session${i}`, `task${i}`, Math.random(), 1);
357
+ }
358
+ })();
359
+ const insertTime = Date.now() - start;
360
+ // Query performance
361
+ const queryStart = Date.now();
362
+ const results = this.db.prepare('SELECT * FROM episodes WHERE reward > 0.5 LIMIT 100').all();
363
+ const queryTime = Date.now() - queryStart;
364
+ assert(results.length > 0, 'Should find episodes with reward > 0.5');
365
+ assert(insertTime < 1000, 'Bulk insert should be fast (< 1s for 1000 records)');
366
+ assert(queryTime < 50, 'Query should be fast (< 50ms)');
367
+ log(` Insert 1000: ${insertTime}ms, Query: ${queryTime}ms`, 'cyan');
368
+ });
369
+ }
370
+ // ========================================================================
371
+ // Summary
372
+ // ========================================================================
373
+ runAll() {
374
+ log('\n═══════════════════════════════════════════════════════════', 'cyan');
375
+ log(' AgentDB Frontier Features Validation', 'cyan');
376
+ log('═══════════════════════════════════════════════════════════', 'cyan');
377
+ // CausalMemoryGraph tests
378
+ log('\n📊 Testing CausalMemoryGraph', 'yellow');
379
+ this.testCausalEdgeInsertion();
380
+ this.testABExperiment();
381
+ this.testCausalQuery();
382
+ // ExplainableRecall tests
383
+ log('\n🔍 Testing ExplainableRecall', 'yellow');
384
+ this.testCertificateCreation();
385
+ this.testMerkleProofGeneration();
386
+ this.testProvenanceTracking();
387
+ this.testJustificationPaths();
388
+ // Integration tests
389
+ log('\n🔗 Testing Integration', 'yellow');
390
+ this.testCausalRecallIntegration();
391
+ this.testDatabasePerformance();
392
+ // Print summary
393
+ log('\n═══════════════════════════════════════════════════════════', 'cyan');
394
+ log(' Summary', 'cyan');
395
+ log('═══════════════════════════════════════════════════════════', 'cyan');
396
+ log(`\n Total Tests: ${this.testsRun}`, 'cyan');
397
+ log(` Passed: ${this.testsPassed}`, 'green');
398
+ log(` Failed: ${this.testsFailed}`, this.testsFailed > 0 ? 'red' : 'cyan');
399
+ const passRate = ((this.testsPassed / this.testsRun) * 100).toFixed(1);
400
+ log(` Pass Rate: ${passRate}%`, passRate === '100.0' ? 'green' : 'yellow');
401
+ if (this.testsFailed === 0) {
402
+ log('\n✅ ALL TESTS PASSED - FRONTIER FEATURES VALIDATED', 'green');
403
+ }
404
+ else {
405
+ log(`\n❌ ${this.testsFailed} TEST(S) FAILED`, 'red');
406
+ }
407
+ log('═══════════════════════════════════════════════════════════\n', 'cyan');
408
+ this.db.close();
409
+ return this.testsFailed === 0 ? 0 : 1;
410
+ }
411
+ }
412
+ // Run validation
413
+ const validator = new FrontierValidator();
414
+ const exitCode = validator.runAll();
415
+ process.exit(exitCode);
416
+ //# sourceMappingURL=validate-frontier.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-frontier.cjs","sourceRoot":"","sources":["../../src/agentdb/validate-frontier.cjs"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;AAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC3C,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,yBAAyB;AACzB,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,UAAU;IACjB,GAAG,EAAE,UAAU;IACf,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,MAAM,CAAC,SAAS,EAAE,OAAO;IAChC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,iBAAiB;IACrB;QACE,4BAA4B;QAC5B,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;QAEnC,eAAe;QACf,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,WAAW;QACT,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC;QAEhD,mBAAmB;QACnB,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAChC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAC1C,OAAO,CACR,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzB,uBAAuB;QACvB,MAAM,cAAc,GAAG,EAAE,CAAC,YAAY,CACpC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,6BAA6B,CAAC,EACnD,OAAO,CACR,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE7B,GAAG,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM;QAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,GAAG,CAAC,eAAe,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,0BAA0B;IAC1B,2EAA2E;IAE3E,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACzC,uBAAuB;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG5B,CAAC,CAAC;YAEH,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAEtC,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;YAChG,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC;YAEtC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAE9C,SAAS;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,sBAAsB,CAAC,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,yBAAyB,CAAC,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,qBAAqB,CAAC,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,GAAG,EAAE,yBAAyB,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,OAAO,CAAC,uCAAuC,EAAE,GAAG,EAAE;YACzD,iCAAiC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACtE,CAAC;YAED,oBAAoB;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAI/B,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAC3B,iBAAiB,EACjB,4BAA4B,EAC5B,CAAC,EACD,SAAS,EACT,IAAI,CAAC,GAAG,EAAE,EACV,CAAC,EACD,SAAS,CACV,CAAC;YAEF,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC;YACxC,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAElD,sBAAsB;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAI/B,CAAC,CAAC;YAEH,mCAAmC;YACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5E,CAAC;YAED,gCAAgC;YAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5E,CAAC;YAED,8BAA8B;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2EAA2E,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpH,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,EAAE,8BAA8B,CAAC,CAAC;YAE1D,mDAAmD;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGpC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGlC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACtG,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;YAChG,MAAM,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;YAE3C,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,2CAA2C,CAAC,CAAC;YAClE,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9H,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACvC,mBAAmB;YACnB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,sBAAsB;YACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC3D,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa;YACxE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,iBAAiB;YAE5E,qBAAqB;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAM/B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YAEpB,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,kDAAkD,CAAC,CAAC;YACjF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,0BAA0B;IAC1B,2EAA2E;IAE3E,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,GAAG,EAAE;YACpD,uBAAuB;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,sBAAsB;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAMhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CACV,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAC5D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAC1B,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,uBAAuB;YAC5D,GAAG,EAAE,eAAe;YACpB,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAChE,UAAU,EACV,EAAE,CACH,CAAC;YAEF,SAAS;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC3F,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE,0BAA0B,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,sBAAsB,CAAC,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,yBAAyB,CAAC,CAAC;YAC7E,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,kBAAkB,KAAK,GAAG,EAAE,4BAA4B,CAAC,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,WAAW,KAAK,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAC5D,qBAAqB;YACrB,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG,CACzD,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACrE,CAAC;YAEF,uCAAuC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;iBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5C,MAAM,CAAC,KAAK,CAAC,CAAC;YAEjB,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,yCAAyC,CAAC,CAAC;YACtE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,0CAA0C,CAAC,CAAC;YAEhF,GAAG,CAAC,oBAAoB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC9C,uBAAuB;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;YAED,4BAA4B;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIhC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE3E,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;YAE/D,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,EAAE,sCAAsC,CAAC,CAAC;YAE5E,gBAAgB;YAChB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG/B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEd,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACtE,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,WAAW,EAAE,sBAAsB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACvC,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;OAMf,CAAC,CAAC,GAAG,CACJ,MAAM,EAAE,IAAI,EAAE,YAAY,EAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAC1B,IAAI,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACtC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EACrB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,UAAU,CAC/D,CAAC;YAEF,0BAA0B;YAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;OAIhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjG,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;YAExG,uBAAuB;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAGtC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAEf,MAAM,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,mCAAmC,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;YACnF,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,4BAA4B,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,oBAAoB;IACpB,2EAA2E;IAE3E,2BAA2B;QACzB,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,GAAG,EAAE;YAC7C,kCAAkC;YAClC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG9B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YACvE,CAAC;YAED,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;OAG/B,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,wBAAwB;gBACxB,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC/B,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YAED,mBAAmB;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;OAKhC,CAAC,CAAC;YAEH,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE1D,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAE,CAAC;YACjF,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAE,CAAC;YAElF,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,4BAA4B,CAAC,CAAC;YAExD,GAAG,CAAC,iBAAiB,QAAQ,CAAC,KAAK,iBAAiB,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;QACrB,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACxC,4CAA4C;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEzB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;SAG5B,CAAC,CAAC;gBAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;YAEtC,oBAAoB;YACpB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;YAE1C,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,wCAAwC,CAAC,CAAC;YACrE,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE,oDAAoD,CAAC,CAAC;YAChF,MAAM,CAAC,SAAS,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAExD,GAAG,CAAC,oBAAoB,UAAU,cAAc,SAAS,IAAI,EAAE,MAAM,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,UAAU;IACV,2EAA2E;IAE3E,MAAM;QACJ,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAC7E,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,CAAC;QACtD,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,CAAC;QAE3E,0BAA0B;QAC1B,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,0BAA0B;QAC1B,GAAG,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,oBAAoB;QACpB,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,gBAAgB;QAChB,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAC7E,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACzB,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,CAAC;QAC3E,GAAG,CAAC,oBAAoB,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvE,GAAG,CAAC,gBAAgB,QAAQ,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,oDAAoD,EAAE,OAAO,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,IAAI,CAAC,WAAW,iBAAiB,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,GAAG,CAAC,+DAA+D,EAAE,MAAM,CAAC,CAAC;QAE7E,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEhB,OAAO,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AAED,iBAAiB;AACjB,MAAM,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;AACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC","sourcesContent":["/**\n * Standalone Frontier Features Validation\n *\n * Tests all frontier features without requiring full build infrastructure.\n * Validates:\n * 1. CausalMemoryGraph - causal edges, experiments, uplift calculation\n * 2. ExplainableRecall - certificates, Merkle proofs, provenance\n * 3. CausalRecall - utility-based reranking\n * 4. NightlyLearner - automated causal discovery\n */\n\nconst Database = require('better-sqlite3');\nconst fs = require('fs');\nconst path = require('path');\nconst crypto = require('crypto');\n\n// Color codes for output\nconst colors = {\n reset: '\\x1b[0m',\n green: '\\x1b[32m',\n red: '\\x1b[31m',\n yellow: '\\x1b[33m',\n blue: '\\x1b[34m',\n cyan: '\\x1b[36m'\n};\n\nfunction log(message, color = 'reset') {\n console.log(`${colors[color]}${message}${colors.reset}`);\n}\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(`Assertion failed: ${message}`);\n }\n}\n\nclass FrontierValidator {\n constructor() {\n // Create in-memory database\n this.db = new Database(':memory:');\n\n // Load schemas\n this.loadSchemas();\n\n this.testsRun = 0;\n this.testsPassed = 0;\n this.testsFailed = 0;\n }\n\n loadSchemas() {\n log('\\n📦 Loading database schemas...', 'cyan');\n\n // Load core schema\n const coreSchema = fs.readFileSync(\n path.join(__dirname, 'schemas/schema.sql'),\n 'utf-8'\n );\n this.db.exec(coreSchema);\n\n // Load frontier schema\n const frontierSchema = fs.readFileSync(\n path.join(__dirname, 'schemas/frontier-schema.sql'),\n 'utf-8'\n );\n this.db.exec(frontierSchema);\n\n log('✓ Schemas loaded successfully', 'green');\n }\n\n runTest(name, testFn) {\n this.testsRun++;\n try {\n log(`\\n🧪 ${name}`, 'blue');\n testFn();\n this.testsPassed++;\n log(' ✅ PASSED', 'green');\n } catch (error) {\n this.testsFailed++;\n log(` ❌ FAILED: ${error.message}`, 'red');\n console.error(error);\n }\n }\n\n // ========================================================================\n // CausalMemoryGraph Tests\n // ========================================================================\n\n testCausalEdgeInsertion() {\n this.runTest('Causal Edge Insertion', () => {\n // Insert test episodes\n const stmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n stmt.run('session1', 'task1', 0.8, 1);\n stmt.run('session1', 'task2', 0.9, 1);\n\n // Insert causal edge\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence, sample_size, mechanism\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n const result = edgeStmt.run(1, 'episode', 2, 'episode', 0.85, 0.15, 0.9, 100, 'test mechanism');\n const edgeId = result.lastInsertRowid;\n\n assert(edgeId > 0, 'Edge should be inserted');\n\n // Verify\n const edge = this.db.prepare('SELECT * FROM causal_edges WHERE id = ?').get(edgeId);\n assert(edge.from_memory_id === 1, 'From ID should match');\n assert(edge.to_memory_id === 2, 'To ID should match');\n assert(edge.similarity === 0.85, 'Similarity should match');\n assert(edge.uplift === 0.15, 'Uplift should match');\n assert(edge.confidence === 0.9, 'Confidence should match');\n });\n }\n\n testABExperiment() {\n this.runTest('A/B Experiment and Uplift Calculation', () => {\n // Insert episodes for experiment\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.7 + Math.random() * 0.2, 1);\n }\n\n // Create experiment\n const expStmt = this.db.prepare(`\n INSERT INTO causal_experiments (\n name, hypothesis, treatment_id, treatment_type, start_time, sample_size, status\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n const expResult = expStmt.run(\n 'Test Experiment',\n 'Treatment improves outcome',\n 1,\n 'episode',\n Date.now(),\n 0,\n 'running'\n );\n\n const expId = expResult.lastInsertRowid;\n assert(expId > 0, 'Experiment should be created');\n\n // Record observations\n const obsStmt = this.db.prepare(`\n INSERT INTO causal_observations (\n experiment_id, episode_id, is_treatment, outcome_value, outcome_type\n ) VALUES (?, ?, ?, ?, ?)\n `);\n\n // Treatment group (higher rewards)\n for (let i = 0; i < 50; i++) {\n obsStmt.run(expId, (i % 10) + 1, 1, 0.75 + Math.random() * 0.1, 'reward');\n }\n\n // Control group (lower rewards)\n for (let i = 0; i < 50; i++) {\n obsStmt.run(expId, (i % 10) + 1, 0, 0.55 + Math.random() * 0.1, 'reward');\n }\n\n // Check observations recorded\n const obs = this.db.prepare('SELECT COUNT(*) as count FROM causal_observations WHERE experiment_id = ?').get(expId);\n assert(obs.count === 100, 'Should have 100 observations');\n\n // Calculate uplift (simplified inline calculation)\n const treatmentObs = this.db.prepare(`\n SELECT outcome_value FROM causal_observations\n WHERE experiment_id = ? AND is_treatment = 1\n `).all(expId);\n\n const controlObs = this.db.prepare(`\n SELECT outcome_value FROM causal_observations\n WHERE experiment_id = ? AND is_treatment = 0\n `).all(expId);\n\n const treatmentMean = treatmentObs.reduce((sum, o) => sum + o.outcome_value, 0) / treatmentObs.length;\n const controlMean = controlObs.reduce((sum, o) => sum + o.outcome_value, 0) / controlObs.length;\n const uplift = treatmentMean - controlMean;\n\n assert(uplift > 0.1, 'Uplift should be positive and significant');\n log(` Uplift: ${uplift.toFixed(3)}, Treatment: ${treatmentMean.toFixed(3)}, Control: ${controlMean.toFixed(3)}`, 'cyan');\n });\n }\n\n testCausalQuery() {\n this.runTest('Causal Effect Query', () => {\n // Insert test data\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 5; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Insert causal edges\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.2, 0.9);\n edgeStmt.run(1, 'episode', 3, 'episode', 0.75, 0.15, 0.85);\n edgeStmt.run(1, 'episode', 4, 'episode', 0.7, 0.05, 0.95); // Low uplift\n edgeStmt.run(1, 'episode', 5, 'episode', 0.85, 0.25, 0.5); // Low confidence\n\n // Query with filters\n const effects = this.db.prepare(`\n SELECT * FROM causal_edges\n WHERE from_memory_id = ?\n AND confidence >= ?\n AND ABS(uplift) >= ?\n ORDER BY ABS(uplift) * confidence DESC\n `).all(1, 0.8, 0.1);\n\n assert(effects.length === 2, 'Should find 2 high-confidence, high-uplift edges');\n assert(effects[0].to_memory_id === 2, 'Highest impact should be first');\n });\n }\n\n // ========================================================================\n // ExplainableRecall Tests\n // ========================================================================\n\n testCertificateCreation() {\n this.runTest('Certificate Creation and Storage', () => {\n // Insert test episodes\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 5; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Create certificate\n const certId = crypto.randomUUID();\n const chunkIds = ['1', '2', '3', '4'];\n const minimalWhy = ['1', '2']; // Minimal hitting set\n const merkleRoot = crypto.createHash('sha256').update('test').digest('hex');\n\n const certStmt = this.db.prepare(`\n INSERT INTO recall_certificates (\n id, query_id, query_text, chunk_ids, chunk_types,\n minimal_why, redundancy_ratio, completeness_score,\n merkle_root, source_hashes, access_level, latency_ms\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n certStmt.run(\n certId,\n 'q1',\n 'Test query',\n JSON.stringify(chunkIds),\n JSON.stringify(['episode', 'episode', 'episode', 'episode']),\n JSON.stringify(minimalWhy),\n chunkIds.length / minimalWhy.length, // redundancy ratio = 2\n 1.0, // completeness\n merkleRoot,\n JSON.stringify([merkleRoot, merkleRoot, merkleRoot, merkleRoot]),\n 'internal',\n 10\n );\n\n // Verify\n const cert = this.db.prepare('SELECT * FROM recall_certificates WHERE id = ?').get(certId);\n assert(cert !== null, 'Certificate should exist');\n assert(cert.query_id === 'q1', 'Query ID should match');\n assert(JSON.parse(cert.chunk_ids).length === 4, 'Should have 4 chunks');\n assert(JSON.parse(cert.minimal_why).length === 2, 'Minimal set should be 2');\n assert(cert.redundancy_ratio === 2, 'Redundancy ratio should be 2');\n assert(cert.completeness_score === 1.0, 'Completeness should be 1.0');\n assert(cert.merkle_root === merkleRoot, 'Merkle root should match');\n });\n }\n\n testMerkleProofGeneration() {\n this.runTest('Merkle Proof Generation and Verification', () => {\n // Create Merkle tree\n const leaves = ['chunk1', 'chunk2', 'chunk3', 'chunk4'].map(\n content => crypto.createHash('sha256').update(content).digest('hex')\n );\n\n // Build tree (simplified 2-level tree)\n const level1 = [];\n for (let i = 0; i < leaves.length; i += 2) {\n const combined = leaves[i] + (leaves[i + 1] || leaves[i]);\n level1.push(crypto.createHash('sha256').update(combined).digest('hex'));\n }\n\n const root = crypto.createHash('sha256')\n .update(level1[0] + (level1[1] || level1[0]))\n .digest('hex');\n\n assert(root.length === 64, 'Merkle root should be 64 hex characters');\n assert(/^[0-9a-f]{64}$/.test(root), 'Merkle root should be valid SHA-256 hash');\n\n log(` Merkle root: ${root.substring(0, 16)}...`, 'cyan');\n });\n }\n\n testProvenanceTracking() {\n this.runTest('Provenance Source Tracking', () => {\n // Insert test episodes\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 3; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.8, 1);\n }\n\n // Create provenance sources\n const provStmt = this.db.prepare(`\n INSERT INTO provenance_sources (\n source_type, source_id, content_hash, creator\n ) VALUES (?, ?, ?, ?)\n `);\n\n const hash1 = crypto.createHash('sha256').update('content1').digest('hex');\n const hash2 = crypto.createHash('sha256').update('content2').digest('hex');\n\n const result1 = provStmt.run('episode', 1, hash1, 'test_user');\n const result2 = provStmt.run('episode', 2, hash2, 'test_user');\n\n assert(result1.lastInsertRowid > 0, 'First provenance should be inserted');\n assert(result2.lastInsertRowid > 0, 'Second provenance should be inserted');\n\n // Query lineage\n const lineage = this.db.prepare(`\n SELECT * FROM provenance_sources\n WHERE content_hash = ?\n `).get(hash1);\n\n assert(lineage !== null, 'Lineage should exist');\n assert(lineage.source_type === 'episode', 'Source type should match');\n assert(lineage.creator === 'test_user', 'Creator should match');\n });\n }\n\n testJustificationPaths() {\n this.runTest('Justification Paths', () => {\n // Create certificate first\n const certId = crypto.randomUUID();\n this.db.prepare(`\n INSERT INTO recall_certificates (\n id, query_id, query_text, chunk_ids, chunk_types,\n minimal_why, redundancy_ratio, completeness_score,\n merkle_root, source_hashes, access_level\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `).run(\n certId, 'q2', 'Test query',\n JSON.stringify(['1', '2']),\n JSON.stringify(['episode', 'episode']),\n JSON.stringify(['1']),\n 2, 1.0, 'hash', JSON.stringify(['hash1', 'hash2']), 'internal'\n );\n\n // Add justification paths\n const justStmt = this.db.prepare(`\n INSERT INTO justification_paths (\n certificate_id, chunk_id, chunk_type, reason, necessity_score, path_elements\n ) VALUES (?, ?, ?, ?, ?, ?)\n `);\n\n justStmt.run(certId, '1', 'episode', 'semantic_match', 0.9, JSON.stringify(['query', 'chunk1']));\n justStmt.run(certId, '2', 'episode', 'causal_link', 0.7, JSON.stringify(['query', 'chunk1', 'chunk2']));\n\n // Query justifications\n const justifications = this.db.prepare(`\n SELECT * FROM justification_paths\n WHERE certificate_id = ?\n `).all(certId);\n\n assert(justifications.length === 2, 'Should have 2 justification paths');\n assert(justifications[0].reason === 'semantic_match', 'First reason should match');\n assert(justifications[1].reason === 'causal_link', 'Second reason should match');\n });\n }\n\n // ========================================================================\n // Integration Tests\n // ========================================================================\n\n testCausalRecallIntegration() {\n this.runTest('Causal Recall Integration', () => {\n // Insert episodes with embeddings\n const epStmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success, latency_ms)\n VALUES (?, ?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n epStmt.run(`session${i}`, `task${i}`, 0.7 + i * 0.02, 1, 50 + i * 5);\n }\n\n // Add embeddings\n const embStmt = this.db.prepare(`\n INSERT INTO episode_embeddings (episode_id, embedding)\n VALUES (?, ?)\n `);\n\n for (let i = 1; i <= 10; i++) {\n // Create mock embedding\n const embedding = new Float32Array(384);\n for (let j = 0; j < 384; j++) {\n embedding[j] = Math.random();\n }\n embStmt.run(i, JSON.stringify(Array.from(embedding)));\n }\n\n // Add causal edges\n const edgeStmt = this.db.prepare(`\n INSERT INTO causal_edges (\n from_memory_id, from_memory_type, to_memory_id, to_memory_type,\n similarity, uplift, confidence\n ) VALUES (?, ?, ?, ?, ?, ?, ?)\n `);\n\n edgeStmt.run(1, 'episode', 2, 'episode', 0.8, 0.15, 0.9);\n edgeStmt.run(2, 'episode', 3, 'episode', 0.75, 0.2, 0.85);\n\n // Verify integration\n const episodes = this.db.prepare('SELECT COUNT(*) as count FROM episodes').get();\n const embeddings = this.db.prepare('SELECT COUNT(*) as count FROM episode_embeddings').get();\n const edges = this.db.prepare('SELECT COUNT(*) as count FROM causal_edges').get();\n\n assert(episodes.count === 10, 'Should have 10 episodes');\n assert(embeddings.count === 10, 'Should have 10 embeddings');\n assert(edges.count === 2, 'Should have 2 causal edges');\n\n log(` Episodes: ${episodes.count}, Embeddings: ${embeddings.count}, Edges: ${edges.count}`, 'cyan');\n });\n }\n\n testDatabasePerformance() {\n this.runTest('Database Performance', () => {\n // Insert many episodes for performance test\n const start = Date.now();\n\n this.db.transaction(() => {\n const stmt = this.db.prepare(`\n INSERT INTO episodes (session_id, task, reward, success)\n VALUES (?, ?, ?, ?)\n `);\n\n for (let i = 1; i <= 1000; i++) {\n stmt.run(`session${i}`, `task${i}`, Math.random(), 1);\n }\n })();\n\n const insertTime = Date.now() - start;\n\n // Query performance\n const queryStart = Date.now();\n const results = this.db.prepare('SELECT * FROM episodes WHERE reward > 0.5 LIMIT 100').all();\n const queryTime = Date.now() - queryStart;\n\n assert(results.length > 0, 'Should find episodes with reward > 0.5');\n assert(insertTime < 1000, 'Bulk insert should be fast (< 1s for 1000 records)');\n assert(queryTime < 50, 'Query should be fast (< 50ms)');\n\n log(` Insert 1000: ${insertTime}ms, Query: ${queryTime}ms`, 'cyan');\n });\n }\n\n // ========================================================================\n // Summary\n // ========================================================================\n\n runAll() {\n log('\\n═══════════════════════════════════════════════════════════', 'cyan');\n log(' AgentDB Frontier Features Validation', 'cyan');\n log('═══════════════════════════════════════════════════════════', 'cyan');\n\n // CausalMemoryGraph tests\n log('\\n📊 Testing CausalMemoryGraph', 'yellow');\n this.testCausalEdgeInsertion();\n this.testABExperiment();\n this.testCausalQuery();\n\n // ExplainableRecall tests\n log('\\n🔍 Testing ExplainableRecall', 'yellow');\n this.testCertificateCreation();\n this.testMerkleProofGeneration();\n this.testProvenanceTracking();\n this.testJustificationPaths();\n\n // Integration tests\n log('\\n🔗 Testing Integration', 'yellow');\n this.testCausalRecallIntegration();\n this.testDatabasePerformance();\n\n // Print summary\n log('\\n═══════════════════════════════════════════════════════════', 'cyan');\n log(' Summary', 'cyan');\n log('═══════════════════════════════════════════════════════════', 'cyan');\n log(`\\n Total Tests: ${this.testsRun}`, 'cyan');\n log(` Passed: ${this.testsPassed}`, 'green');\n log(` Failed: ${this.testsFailed}`, this.testsFailed > 0 ? 'red' : 'cyan');\n\n const passRate = ((this.testsPassed / this.testsRun) * 100).toFixed(1);\n log(` Pass Rate: ${passRate}%`, passRate === '100.0' ? 'green' : 'yellow');\n\n if (this.testsFailed === 0) {\n log('\\n✅ ALL TESTS PASSED - FRONTIER FEATURES VALIDATED', 'green');\n } else {\n log(`\\n❌ ${this.testsFailed} TEST(S) FAILED`, 'red');\n }\n\n log('═══════════════════════════════════════════════════════════\\n', 'cyan');\n\n this.db.close();\n\n return this.testsFailed === 0 ? 0 : 1;\n }\n}\n\n// Run validation\nconst validator = new FrontierValidator();\nconst exitCode = validator.runAll();\nprocess.exit(exitCode);\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate-frontier.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-frontier.d.cts","sourceRoot":"","sources":["../../src/agentdb/validate-frontier.cjs"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { AgentDefinition } from "../utils/agentLoader.js";
2
+ export declare function claudeAgent(agent: AgentDefinition, input: string, onStream?: (chunk: string) => void, modelOverride?: string): Promise<{
3
+ output: string;
4
+ agent: string;
5
+ }>;
6
+ //# sourceMappingURL=claudeAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeAgent.d.ts","sourceRoot":"","sources":["../../src/agents/claudeAgent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AA6F1D,wBAAsB,WAAW,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EAClC,aAAa,CAAC,EAAE,MAAM;;;GA8RvB"}
@@ -22,21 +22,39 @@ function getCurrentProvider() {
22
22
  function getModelForProvider(provider) {
23
23
  switch (provider) {
24
24
  case 'gemini':
25
+ const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;
26
+ if (!geminiKey) {
27
+ throw new Error('GOOGLE_GEMINI_API_KEY is required for Gemini provider.\n' +
28
+ 'Set it via environment variable or use --provider anthropic for Claude models.\n' +
29
+ 'Get your API key at: https://makersuite.google.com/app/apikey');
30
+ }
25
31
  return {
26
32
  model: process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp',
27
- apiKey: process.env.GOOGLE_GEMINI_API_KEY || process.env.ANTHROPIC_API_KEY || '',
33
+ apiKey: geminiKey,
28
34
  baseURL: process.env.PROXY_URL || undefined
29
35
  };
30
36
  case 'requesty':
37
+ const requestyKey = process.env.REQUESTY_API_KEY;
38
+ if (!requestyKey) {
39
+ throw new Error('REQUESTY_API_KEY is required for Requesty provider.\n' +
40
+ 'Set it via environment variable or use --provider anthropic for Claude models.\n' +
41
+ 'Get your API key at: https://requesty.ai');
42
+ }
31
43
  return {
32
44
  model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',
33
- apiKey: process.env.REQUESTY_API_KEY || process.env.ANTHROPIC_API_KEY || '',
45
+ apiKey: requestyKey,
34
46
  baseURL: process.env.PROXY_URL || undefined
35
47
  };
36
48
  case 'openrouter':
49
+ const openrouterKey = process.env.OPENROUTER_API_KEY;
50
+ if (!openrouterKey) {
51
+ throw new Error('OPENROUTER_API_KEY is required for OpenRouter provider.\n' +
52
+ 'Set it via environment variable or use --provider anthropic for Claude models.\n' +
53
+ 'Get your API key at: https://openrouter.ai/keys');
54
+ }
37
55
  return {
38
56
  model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',
39
- apiKey: process.env.OPENROUTER_API_KEY || process.env.ANTHROPIC_API_KEY || '',
57
+ apiKey: openrouterKey,
40
58
  baseURL: process.env.PROXY_URL || undefined
41
59
  };
42
60
  case 'onnx':
@@ -315,3 +333,4 @@ export async function claudeAgent(agent, input, onStream, modelOverride) {
315
333
  }
316
334
  });
317
335
  }
336
+ //# sourceMappingURL=claudeAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeAgent.js","sourceRoot":"","sources":["../../src/agents/claudeAgent.ts"],"names":[],"mappings":"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","sourcesContent":["// Generic agent that uses .claude/agents definitions with multi-provider SDK routing\nimport { query } from \"@anthropic-ai/claude-agent-sdk\";\nimport { logger } from \"../utils/logger.js\";\nimport { withRetry } from \"../utils/retry.js\";\nimport { AgentDefinition } from \"../utils/agentLoader.js\";\nimport { claudeFlowSdkServer } from \"../mcp/claudeFlowSdkServer.js\";\n\nfunction getCurrentProvider(): string {\n // Determine provider from environment\n if (process.env.PROVIDER === 'gemini' || process.env.USE_GEMINI === 'true') {\n return 'gemini';\n }\n if (process.env.PROVIDER === 'requesty' || process.env.USE_REQUESTY === 'true') {\n return 'requesty';\n }\n if (process.env.PROVIDER === 'openrouter' || process.env.USE_OPENROUTER === 'true') {\n return 'openrouter';\n }\n if (process.env.PROVIDER === 'onnx' || process.env.USE_ONNX === 'true') {\n return 'onnx';\n }\n return 'anthropic'; // Default\n}\n\nfunction getModelForProvider(provider: string): {\n model: string;\n apiKey: string;\n baseURL?: string;\n} {\n switch (provider) {\n case 'gemini':\n const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;\n if (!geminiKey) {\n throw new Error(\n 'GOOGLE_GEMINI_API_KEY is required for Gemini provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://makersuite.google.com/app/apikey'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp',\n apiKey: geminiKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'requesty':\n const requestyKey = process.env.REQUESTY_API_KEY;\n if (!requestyKey) {\n throw new Error(\n 'REQUESTY_API_KEY is required for Requesty provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://requesty.ai'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',\n apiKey: requestyKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'openrouter':\n const openrouterKey = process.env.OPENROUTER_API_KEY;\n if (!openrouterKey) {\n throw new Error(\n 'OPENROUTER_API_KEY is required for OpenRouter provider.\\n' +\n 'Set it via environment variable or use --provider anthropic for Claude models.\\n' +\n 'Get your API key at: https://openrouter.ai/keys'\n );\n }\n return {\n model: process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat',\n apiKey: openrouterKey,\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'onnx':\n return {\n model: 'onnx-local',\n apiKey: 'local',\n baseURL: process.env.PROXY_URL || undefined\n };\n\n case 'anthropic':\n default:\n // For anthropic provider, require ANTHROPIC_API_KEY\n const apiKey = process.env.ANTHROPIC_API_KEY;\n if (!apiKey) {\n throw new Error('ANTHROPIC_API_KEY is required but not set for Anthropic provider');\n }\n return {\n model: process.env.COMPLETION_MODEL || 'claude-sonnet-4-5-20250929',\n apiKey,\n // No baseURL for direct Anthropic\n };\n }\n}\n\nexport async function claudeAgent(\n agent: AgentDefinition,\n input: string,\n onStream?: (chunk: string) => void,\n modelOverride?: string\n) {\n const startTime = Date.now();\n const provider = getCurrentProvider();\n\n logger.info('Starting Claude Agent SDK with multi-provider support', {\n agent: agent.name,\n provider,\n input: input.substring(0, 100),\n model: modelOverride || 'default'\n });\n\n return withRetry(async () => {\n // Get model configuration for the selected provider\n const modelConfig = getModelForProvider(provider);\n const finalModel = modelOverride || modelConfig.model;\n\n // Configure environment for Claude Agent SDK with proxy routing\n // The SDK internally uses Anthropic client which reads ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY\n const envOverrides: Record<string, string> = {};\n\n if (provider === 'gemini' && process.env.GOOGLE_GEMINI_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.GEMINI_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using Gemini proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'requesty' && process.env.REQUESTY_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.REQUESTY_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using Requesty proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'openrouter' && process.env.OPENROUTER_API_KEY) {\n // Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'proxy-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.OPENROUTER_PROXY_URL || 'http://localhost:3000';\n\n logger.info('Using OpenRouter proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n } else if (provider === 'onnx') {\n // For ONNX: Use ANTHROPIC_BASE_URL if already set by CLI (proxy mode)\n envOverrides.ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || 'sk-ant-onnx-local-key';\n envOverrides.ANTHROPIC_BASE_URL = process.env.ANTHROPIC_BASE_URL || process.env.ONNX_PROXY_URL || 'http://localhost:3001';\n\n logger.info('Using ONNX local proxy', {\n proxyUrl: envOverrides.ANTHROPIC_BASE_URL,\n model: finalModel\n });\n }\n // For Anthropic provider, use existing ANTHROPIC_API_KEY (no proxy needed)\n\n logger.info('Multi-provider configuration', {\n provider,\n model: finalModel,\n hasApiKey: !!envOverrides.ANTHROPIC_API_KEY || !!process.env.ANTHROPIC_API_KEY,\n hasBaseURL: !!envOverrides.ANTHROPIC_BASE_URL\n });\n\n try {\n // MCP server setup - enable in-SDK server and optional external servers\n const mcpServers: any = {};\n\n // CRITICAL FIX: Disable all MCP servers for Requesty provider\n // The Claude SDK hangs when trying to initialize MCP servers with Requesty\n // This is a fundamental incompatibility - SDK initialization fails before API call\n if (provider === 'requesty') {\n logger.info('⚠️ Requesty provider detected - disabling all MCP servers to prevent hang');\n console.log('⚠️ Requesty: MCP tools disabled (SDK incompatibility)');\n // Skip all MCP server initialization for Requesty\n // Continue with empty mcpServers object\n } else {\n // Enable in-SDK MCP server for custom tools (enabled by default)\n if (process.env.ENABLE_CLAUDE_FLOW_SDK !== 'false') {\n mcpServers['claude-flow-sdk'] = claudeFlowSdkServer;\n }\n\n // External MCP servers (enabled by default for full 213-tool access)\n // Disable by setting ENABLE_CLAUDE_FLOW_MCP=false\n if (process.env.ENABLE_CLAUDE_FLOW_MCP !== 'false') {\n mcpServers['claude-flow'] = {\n type: 'stdio',\n command: 'npx',\n args: ['claude-flow@alpha', 'mcp', 'start'],\n env: {\n ...process.env,\n MCP_AUTO_START: 'true',\n PROVIDER: provider\n }\n };\n }\n\n if (process.env.ENABLE_FLOW_NEXUS_MCP !== 'false') {\n mcpServers['flow-nexus'] = {\n type: 'stdio',\n command: 'npx',\n args: ['flow-nexus@latest', 'mcp', 'start'],\n env: {\n ...process.env,\n FLOW_NEXUS_AUTO_START: 'true'\n }\n };\n }\n\n if (process.env.ENABLE_AGENTIC_PAYMENTS_MCP !== 'false') {\n mcpServers['agentic-payments'] = {\n type: 'stdio',\n command: 'npx',\n args: ['-y', 'agentic-payments', 'mcp'],\n env: {\n ...process.env,\n AGENTIC_PAYMENTS_AUTO_START: 'true'\n }\n };\n }\n\n // Load MCP servers from user config file (~/.agentic-flow/mcp-config.json)\n try {\n const fs = await import('fs');\n const path = await import('path');\n const os = await import('os');\n\n const configPath = path.join(os.homedir(), '.agentic-flow', 'mcp-config.json');\n\n if (fs.existsSync(configPath)) {\n const configContent = fs.readFileSync(configPath, 'utf-8');\n const config = JSON.parse(configContent);\n\n // Add enabled user-configured servers\n for (const [name, server] of Object.entries(config.servers || {})) {\n const serverConfig = server as any;\n if (serverConfig.enabled) {\n mcpServers[name] = {\n type: 'stdio',\n command: serverConfig.command,\n args: serverConfig.args || [],\n env: {\n ...process.env,\n ...serverConfig.env\n }\n };\n console.log(`[agentic-flow] Loaded MCP server: ${name}`);\n }\n }\n }\n } catch (error) {\n // Silently fail if config doesn't exist or can't be read\n console.log('[agentic-flow] No user MCP config found (this is normal)');\n }\n } // End of provider !== 'requesty' check\n\n const queryOptions: any = {\n systemPrompt: agent.systemPrompt,\n model: finalModel, // Claude Agent SDK handles model selection\n permissionMode: 'bypassPermissions', // Auto-approve all tool usage for Docker automation\n // Enable all built-in tools by default (Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch)\n // Based on SDK types, allowedTools and disallowedTools control which tools are available\n // If not specified, all tools are enabled by default\n allowedTools: [\n 'Read',\n 'Write',\n 'Edit',\n 'Bash',\n 'Glob',\n 'Grep',\n 'WebFetch',\n 'WebSearch',\n 'NotebookEdit',\n 'TodoWrite'\n ],\n // Add MCP servers if configured\n mcpServers: Object.keys(mcpServers).length > 0 ? mcpServers : undefined\n };\n\n // Add environment overrides if present\n if (Object.keys(envOverrides).length > 0) {\n queryOptions.env = {\n ...process.env,\n ...envOverrides\n };\n }\n\n const result = query({\n prompt: input,\n options: queryOptions\n });\n\n let output = '';\n let toolCallCount = 0;\n\n for await (const msg of result) {\n const msgAny = msg as any; // Use any to handle different event types from SDK\n\n // Debug: Log message structure to understand SDK events\n if (process.env.DEBUG_STREAMING === 'true') {\n console.error(`[DEBUG] Message type: ${msg.type}, keys: ${Object.keys(msg).join(', ')}`);\n }\n\n // Handle assistant text messages\n if (msg.type === 'assistant') {\n const chunk = msg.message.content?.map((c: any) => c.type === 'text' ? c.text : '').join('') || '';\n output += chunk;\n\n if (onStream && chunk) {\n onStream(chunk);\n }\n\n // Check for tool use in message content blocks\n const toolBlocks = msg.message.content?.filter((c: any) => c.type === 'tool_use') || [];\n for (const toolBlock of toolBlocks) {\n toolCallCount++;\n const toolName = (toolBlock as any).name || 'unknown';\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const progressMsg = `\\n[${timestamp}] 🔍 Tool call #${toolCallCount}: ${toolName}\\n`;\n process.stderr.write(progressMsg);\n\n if (onStream) {\n onStream(progressMsg);\n }\n }\n }\n\n // Handle stream events that contain tool information\n if (msgAny.streamEvent) {\n const event = msgAny.streamEvent;\n\n // Tool use event (content_block_start with tool_use)\n if (event.type === 'content_block_start' && event.content_block?.type === 'tool_use') {\n toolCallCount++;\n const toolName = event.content_block.name || 'unknown';\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const progressMsg = `\\n[${timestamp}] 🔍 Tool call #${toolCallCount}: ${toolName}\\n`;\n process.stderr.write(progressMsg);\n\n if (onStream) {\n onStream(progressMsg);\n }\n }\n\n // Tool result event (content_block_stop)\n if (event.type === 'content_block_stop') {\n const timestamp = new Date().toISOString().split('T')[1].split('.')[0];\n const resultMsg = `[${timestamp}] ✅ Tool completed\\n`;\n process.stderr.write(resultMsg);\n\n if (onStream) {\n onStream(resultMsg);\n }\n }\n }\n\n // Flush output to ensure immediate visibility\n if (process.stderr.uncork) {\n process.stderr.uncork();\n }\n if (process.stdout.uncork) {\n process.stdout.uncork();\n }\n }\n\n const duration = Date.now() - startTime;\n logger.info('Claude Agent SDK completed', {\n agent: agent.name,\n provider,\n duration,\n outputLength: output.length\n });\n\n return { output, agent: agent.name };\n } catch (error: any) {\n logger.error('Claude Agent SDK execution failed', {\n provider,\n model: finalModel,\n error: error.message\n });\n throw error;\n }\n });\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { AgentDefinition } from "../utils/agentLoader.js";
2
+ export declare function claudeAgentDirect(agent: AgentDefinition, input: string, onStream?: (chunk: string) => void, modelOverride?: string): Promise<{
3
+ output: string;
4
+ agent: string;
5
+ }>;
6
+ //# sourceMappingURL=claudeAgentDirect.d.ts.map