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 @@
1
+ {"version":3,"file":"standalone-stdio.js","sourceRoot":"","sources":["../../src/mcp/standalone-stdio.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n// Standalone agentic-flow MCP server - runs directly via stdio without spawning subprocesses\nimport { FastMCP } from 'fastmcp';\nimport { z } from 'zod';\nimport { execSync } from 'child_process';\nimport { resolve } from 'path';\n\n// Suppress FastMCP internal warnings for cleaner output\nconst originalConsoleWarn = console.warn;\nconsole.warn = (...args: any[]) => {\n const message = args.join(' ');\n // Filter out FastMCP client capability warnings\n if (message.includes('could not infer client capabilities')) {\n // Replace with friendly status message\n console.error('⏳ Waiting for MCP client connection...');\n return;\n }\n originalConsoleWarn.apply(console, args);\n};\n\nconsole.error('🚀 Starting Agentic-Flow MCP Server (stdio)...');\nconsole.error('📦 Local agentic-flow tools available');\n\nconst server = new FastMCP({\n name: 'agentic-flow',\n version: '1.0.8'\n});\n\n// Tool: Run agentic-flow agent\nserver.addTool({\n name: 'agentic_flow_agent',\n description: 'Execute an agentic-flow agent with a specific task. Supports multiple providers (Anthropic, OpenRouter, ONNX) and comprehensive configuration options.',\n parameters: z.object({\n agent: z.string().describe('Agent type (coder, researcher, analyst, etc.) - Use agentic_flow_list_agents to see all 66+ available agents'),\n task: z.string().describe('Task description for the agent to execute'),\n\n // Provider Configuration\n model: z.string().optional().describe('Model to use (e.g., \"claude-sonnet-4-5-20250929\" for Anthropic, \"meta-llama/llama-3.1-8b-instruct\" for OpenRouter, or \"Xenova/gpt2\" for ONNX local models)'),\n provider: z.enum(['anthropic', 'openrouter', 'onnx', 'gemini']).optional().describe('LLM provider: \"anthropic\" (default, highest quality, requires ANTHROPIC_API_KEY), \"gemini\" (free tier, requires GOOGLE_GEMINI_API_KEY), \"openrouter\" (99% cost savings, requires OPENROUTER_API_KEY), \"onnx\" (free local inference, no API key needed)'),\n\n // API Configuration\n anthropicApiKey: z.string().optional().describe('Anthropic API key (sk-ant-...) - overrides ANTHROPIC_API_KEY environment variable'),\n openrouterApiKey: z.string().optional().describe('OpenRouter API key (sk-or-...) - overrides OPENROUTER_API_KEY environment variable'),\n\n // Agent Behavior\n stream: z.boolean().optional().default(false).describe('Enable streaming output (real-time response chunks)'),\n temperature: z.number().min(0).max(1).optional().describe('Sampling temperature (0.0-1.0): lower = more focused/deterministic, higher = more creative/random. Default varies by agent.'),\n maxTokens: z.number().positive().optional().describe('Maximum tokens in response (default: 4096). Controls output length.'),\n\n // Directory Configuration\n agentsDir: z.string().optional().describe('Custom agents directory path (default: .claude/agents) - for using custom agent definitions'),\n\n // Output Options\n outputFormat: z.enum(['text', 'json', 'markdown']).optional().describe('Output format: \"text\" (default, human-readable), \"json\" (structured data), \"markdown\" (formatted docs)'),\n verbose: z.boolean().optional().default(false).describe('Enable verbose logging for debugging'),\n\n // Execution Control\n timeout: z.number().positive().optional().describe('Execution timeout in milliseconds (default: 300000 = 5 minutes)'),\n retryOnError: z.boolean().optional().default(false).describe('Automatically retry on transient errors (rate limits, network issues)')\n }),\n execute: async ({\n agent,\n task,\n model,\n provider,\n anthropicApiKey,\n openrouterApiKey,\n stream,\n temperature,\n maxTokens,\n agentsDir,\n outputFormat,\n verbose,\n timeout,\n retryOnError\n }) => {\n try {\n // Build command with all parameters\n let cmd = `npx --yes agentic-flow --agent \"${agent}\" --task \"${task}\"`;\n\n // Provider & Model\n if (model) cmd += ` --model \"${model}\"`;\n if (provider) cmd += ` --provider ${provider}`;\n\n // API Keys (set as env vars)\n const env = { ...process.env };\n if (anthropicApiKey) env.ANTHROPIC_API_KEY = anthropicApiKey;\n if (openrouterApiKey) env.OPENROUTER_API_KEY = openrouterApiKey;\n\n // Agent Behavior\n if (stream) cmd += ' --stream';\n if (temperature !== undefined) cmd += ` --temperature ${temperature}`;\n if (maxTokens) cmd += ` --max-tokens ${maxTokens}`;\n\n // Directories\n if (agentsDir) cmd += ` --agents-dir \"${agentsDir}\"`;\n\n // Output\n if (outputFormat) cmd += ` --output ${outputFormat}`;\n if (verbose) cmd += ' --verbose';\n\n // Execution\n if (retryOnError) cmd += ' --retry';\n\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: timeout || 300000,\n env\n });\n\n return JSON.stringify({\n success: true,\n agent,\n task: task.substring(0, 100) + (task.length > 100 ? '...' : ''),\n model: model || 'default',\n provider: provider || 'anthropic',\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to execute agent: ${error.message}`);\n }\n }\n});\n\n// Tool: List available agents\nserver.addTool({\n name: 'agentic_flow_list_agents',\n description: 'List all available agentic-flow agents',\n parameters: z.object({}),\n execute: async () => {\n try {\n // Use npx to run agentic-flow from npm registry\n const cmd = `npx --yes agentic-flow --list`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 5 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n agents: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to list agents: ${error.message}`);\n }\n }\n});\n\n// Tool: Create custom agent\nserver.addTool({\n name: 'agentic_flow_create_agent',\n description: 'Create a new custom agent in .claude/agents directory. Supports conflict detection and will warn if agent already exists in package or local directories.',\n parameters: z.object({\n name: z.string().describe('Agent name (will be converted to kebab-case, e.g., my-custom-agent)'),\n description: z.string().describe('Agent description (what this agent does)'),\n systemPrompt: z.string().describe('System prompt that defines the agent behavior and personality'),\n category: z.string().optional().default('custom').describe('Category/folder to organize the agent (default: custom)'),\n tools: z.array(z.string()).optional().describe('Optional list of tools this agent can use (e.g., [\"web-search\", \"code-execution\"])')\n }),\n execute: async ({ name, description, systemPrompt, category, tools }) => {\n try {\n let cmd = `npx --yes agentic-flow agent create --name \"${name}\" --description \"${description}\" --prompt \"${systemPrompt}\"`;\n if (category && category !== 'custom') cmd += ` --category \"${category}\"`;\n if (tools && tools.length > 0) cmd += ` --tools \"${tools.join(',')}\"`;\n\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 60000,\n input: 'y\\n' // Auto-confirm if conflict exists\n });\n\n return JSON.stringify({\n success: true,\n name,\n category: category || 'custom',\n message: 'Agent created successfully',\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to create agent: ${error.message}`);\n }\n }\n});\n\n// Tool: List agents with source information\nserver.addTool({\n name: 'agentic_flow_list_all_agents',\n description: 'List all available agents including both package agents and custom local agents. Shows source (package or local) and handles deduplication.',\n parameters: z.object({\n format: z.enum(['summary', 'detailed', 'json']).optional().default('summary').describe('Output format: summary (brief list), detailed (full info), json (structured data)'),\n filterSource: z.enum(['all', 'package', 'local']).optional().default('all').describe('Filter by source: all, package (npm distribution), or local (custom .claude/agents)')\n }),\n execute: async ({ format, filterSource }) => {\n try {\n const cmd = `npx --yes agentic-flow agent list ${format || 'summary'}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n if (format === 'json') {\n const agents = JSON.parse(result);\n const filtered = filterSource && filterSource !== 'all'\n ? agents.filter((a: any) => a.source === filterSource)\n : agents;\n\n return JSON.stringify({\n success: true,\n count: filtered.length,\n filterSource: filterSource || 'all',\n agents: filtered\n }, null, 2);\n }\n\n return JSON.stringify({\n success: true,\n filterSource: filterSource || 'all',\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to list agents: ${error.message}`);\n }\n }\n});\n\n// Tool: Get agent information\nserver.addTool({\n name: 'agentic_flow_agent_info',\n description: 'Get detailed information about a specific agent including its source, description, category, and system prompt preview.',\n parameters: z.object({\n name: z.string().describe('Agent name to get information about')\n }),\n execute: async ({ name }) => {\n try {\n const cmd = `npx --yes agentic-flow agent info \"${name}\"`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n agent: name,\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to get agent info: ${error.message}`);\n }\n }\n});\n\n// Tool: Check for agent conflicts\nserver.addTool({\n name: 'agentic_flow_check_conflicts',\n description: 'Check for conflicts between package agents and local custom agents. Identifies agents with the same relative path in both locations.',\n parameters: z.object({}),\n execute: async () => {\n try {\n const cmd = `npx --yes agentic-flow agent conflicts`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to check conflicts: ${error.message}`);\n }\n }\n});\n\n// Tool: Optimize model selection\nserver.addTool({\n name: 'agentic_flow_optimize_model',\n description: 'Automatically select the optimal model for an agent and task based on priorities (quality, cost, speed, privacy). Returns model recommendation with reasoning.',\n parameters: z.object({\n agent: z.string().describe('Agent type (e.g., coder, researcher, reviewer)'),\n task: z.string().describe('Task description'),\n priority: z.enum(['quality', 'balanced', 'cost', 'speed', 'privacy']).optional().default('balanced').describe('Optimization priority: quality (best results), balanced (cost/quality), cost (cheapest), speed (fastest), privacy (local only)'),\n max_cost: z.number().positive().optional().describe('Maximum cost per task in dollars (optional budget cap)')\n }),\n execute: async ({ agent, task, priority, max_cost }) => {\n try {\n let cmd = `npx --yes agentic-flow --agent \"${agent}\" --task \"${task}\" --optimize`;\n\n if (priority && priority !== 'balanced') {\n cmd += ` --priority ${priority}`;\n }\n\n if (max_cost) {\n cmd += ` --max-cost ${max_cost}`;\n }\n\n // Add dry-run to just get recommendation without execution\n cmd += ' --help'; // This will show the optimization without running\n\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 10000\n });\n\n return JSON.stringify({\n success: true,\n agent,\n task: task.substring(0, 100) + (task.length > 100 ? '...' : ''),\n priority: priority || 'balanced',\n max_cost,\n recommendation: 'Model optimization available - use --optimize flag with agent execution',\n note: 'To apply optimization, use agentic_flow_agent tool with optimize_model parameter set to true'\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to optimize model: ${error.message}`);\n }\n }\n});\n\n// ========================================\n// Agent Booster Tools (352x faster code editing)\n// ========================================\n\n// Tool: Apply code edit with Agent Booster\nserver.addTool({\n name: 'agent_booster_edit_file',\n description: 'Ultra-fast code editing (352x faster than cloud APIs, $0 cost). Apply precise code edits using Agent Booster\\'s local WASM engine. Use \"// ... existing code ...\" markers for unchanged sections.',\n parameters: z.object({\n target_filepath: z.string().describe('Path of the file to modify'),\n instructions: z.string().describe('First-person instruction (e.g., \"I will add error handling\")'),\n code_edit: z.string().describe('Precise code lines to edit, using \"// ... existing code ...\" for unchanged sections'),\n language: z.string().optional().describe('Programming language (auto-detected from file extension if not provided)')\n }),\n execute: async ({ target_filepath, instructions, code_edit, language }) => {\n try {\n const fs = await import('fs');\n const path = await import('path');\n\n // Read current file\n if (!fs.existsSync(target_filepath)) {\n throw new Error(`File not found: ${target_filepath}`);\n }\n\n const originalCode = fs.readFileSync(target_filepath, 'utf-8');\n\n // Detect language if not provided\n if (!language) {\n const ext = path.extname(target_filepath).slice(1);\n const langMap: { [key: string]: string } = {\n 'ts': 'typescript', 'js': 'javascript', 'py': 'python',\n 'rs': 'rust', 'go': 'go', 'java': 'java',\n 'c': 'c', 'cpp': 'cpp', 'h': 'c', 'hpp': 'cpp'\n };\n language = langMap[ext] || 'javascript';\n }\n\n // Apply edit using agent-booster@0.2.2 CLI (automatically installs from npm if not available)\n const cmd = `npx --yes agent-booster@0.2.2 apply --language ${language}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n input: JSON.stringify({ code: originalCode, edit: code_edit }),\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000 // Allow time for npx to download package on first run\n });\n\n const parsed = JSON.parse(result);\n\n if (parsed.success && parsed.confidence >= 0.7) {\n // High confidence - use Agent Booster result\n fs.writeFileSync(target_filepath, parsed.output);\n\n return JSON.stringify({\n success: true,\n method: 'agent_booster',\n filepath: target_filepath,\n instruction: instructions,\n latency_ms: parsed.latency,\n confidence: (parsed.confidence * 100).toFixed(1) + '%',\n strategy: parsed.strategy,\n message: `✅ Successfully edited ${target_filepath} (${parsed.latency}ms, ${(parsed.confidence * 100).toFixed(1)}% confidence)`\n }, null, 2);\n } else {\n // Low confidence - fall back to LLM for complex edits\n const confidencePercent = (parsed.confidence * 100).toFixed(1);\n\n return JSON.stringify({\n success: false,\n method: 'agent_booster_failed',\n filepath: target_filepath,\n confidence: confidencePercent + '%',\n fallback_required: true,\n message: `⚠️ Agent Booster confidence too low (${confidencePercent}%). Falling back to LLM for complex edit.`,\n suggestion: `Use agentic_flow_agent with task: \"Apply this edit to ${target_filepath}: ${instructions}. Original code: ${originalCode.substring(0, 500)}... Target edit: ${code_edit.substring(0, 500)}...\"`,\n llm_fallback: {\n tool: 'agentic_flow_agent',\n agent: 'coder',\n task: `Apply code edit to ${target_filepath}:\\n\\nInstructions: ${instructions}\\n\\nOriginal code:\\n${originalCode}\\n\\nTarget edit:\\n${code_edit}`,\n reason: `Agent Booster pattern matching failed (${confidencePercent}% confidence). This edit requires LLM reasoning for: structural changes, complex logic, or vague instructions.`\n }\n }, null, 2);\n }\n } catch (error: any) {\n throw new Error(`Failed to edit file: ${error.message}`);\n }\n }\n});\n\n// Tool: Batch apply multiple edits\nserver.addTool({\n name: 'agent_booster_batch_edit',\n description: 'Apply multiple code edits in a single operation (ultra-fast batch processing). Perfect for multi-file refactoring.',\n parameters: z.object({\n edits: z.array(z.object({\n target_filepath: z.string().describe('File path'),\n instructions: z.string().describe('First-person instruction'),\n code_edit: z.string().describe('Code edit with markers'),\n language: z.string().optional().describe('Programming language')\n })).describe('Array of edit requests')\n }),\n execute: async ({ edits }) => {\n try {\n const fs = await import('fs');\n const path = await import('path');\n const results = [];\n let totalLatency = 0;\n\n for (const edit of edits) {\n const originalCode = fs.existsSync(edit.target_filepath)\n ? fs.readFileSync(edit.target_filepath, 'utf-8')\n : '';\n\n // Detect language\n let language = edit.language;\n if (!language) {\n const ext = path.extname(edit.target_filepath).slice(1);\n const langMap: { [key: string]: string } = {\n 'ts': 'typescript', 'js': 'javascript', 'py': 'python',\n 'rs': 'rust', 'go': 'go', 'java': 'java',\n 'c': 'c', 'cpp': 'cpp', 'h': 'c', 'hpp': 'cpp'\n };\n language = langMap[ext] || 'javascript';\n }\n\n // Apply edit\n const cmd = `npx --yes agent-booster@0.2.2 apply --language ${language}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n input: JSON.stringify({ code: originalCode, edit: edit.code_edit }),\n maxBuffer: 10 * 1024 * 1024,\n timeout: 5000\n });\n\n const parsed = JSON.parse(result);\n totalLatency += parsed.latency;\n\n if (parsed.success && parsed.confidence >= 0.7) {\n fs.writeFileSync(edit.target_filepath, parsed.output);\n results.push({\n file: edit.target_filepath,\n success: true,\n latency_ms: parsed.latency,\n confidence: (parsed.confidence * 100).toFixed(1) + '%'\n });\n } else {\n results.push({\n file: edit.target_filepath,\n success: false,\n confidence: (parsed.confidence * 100).toFixed(1) + '%',\n reason: 'Low confidence'\n });\n }\n }\n\n const successful = results.filter(r => r.success).length;\n\n return JSON.stringify({\n success: true,\n total: edits.length,\n successful,\n failed: edits.length - successful,\n total_latency_ms: totalLatency,\n avg_latency_ms: (totalLatency / edits.length).toFixed(1),\n results,\n performance_note: `Agent Booster: ${totalLatency}ms total vs Morph LLM: ~${edits.length * 352}ms (${((edits.length * 352) / totalLatency).toFixed(1)}x faster)`\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Batch edit failed: ${error.message}`);\n }\n }\n});\n\n// Tool: Parse markdown code blocks and apply edits\nserver.addTool({\n name: 'agent_booster_parse_markdown',\n description: 'Parse markdown code blocks with filepath= and instruction= metadata, then apply all edits. Compatible with LLM-generated multi-file refactoring outputs.',\n parameters: z.object({\n markdown: z.string().describe('Markdown text containing code blocks with filepath= and instruction= metadata')\n }),\n execute: async ({ markdown }) => {\n try {\n const fs = await import('fs');\n const path = await import('path');\n\n // Parse markdown code blocks\n const regex = /```(?:(\\w+))?\\s*filepath=([^\\s]+)\\s+instruction=([^\\n]+)\\n([\\s\\S]*?)```/g;\n const edits = [];\n let match;\n\n while ((match = regex.exec(markdown)) !== null) {\n const [_, language, filepath, instruction, code_edit] = match;\n edits.push({\n target_filepath: filepath.trim(),\n instructions: instruction.trim(),\n code_edit: code_edit.trim(),\n language: language || undefined\n });\n }\n\n if (edits.length === 0) {\n throw new Error('No code blocks found in markdown. Expected format: ```language filepath=path instruction=description\\\\ncode\\\\n```');\n }\n\n // Apply all edits using batch tool\n const results = [];\n let totalLatency = 0;\n\n for (const edit of edits) {\n const originalCode = fs.existsSync(edit.target_filepath)\n ? fs.readFileSync(edit.target_filepath, 'utf-8')\n : '';\n\n let language = edit.language;\n if (!language) {\n const ext = path.extname(edit.target_filepath).slice(1);\n const langMap: { [key: string]: string } = {\n 'ts': 'typescript', 'js': 'javascript', 'py': 'python',\n 'rs': 'rust', 'go': 'go', 'java': 'java',\n 'c': 'c', 'cpp': 'cpp', 'h': 'c', 'hpp': 'cpp'\n };\n language = langMap[ext] || 'javascript';\n }\n\n const cmd = `npx --yes agent-booster@0.2.2 apply --language ${language}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n input: JSON.stringify({ code: originalCode, edit: edit.code_edit }),\n maxBuffer: 10 * 1024 * 1024,\n timeout: 5000\n });\n\n const parsed = JSON.parse(result);\n totalLatency += parsed.latency;\n\n if (parsed.success && parsed.confidence >= 0.7) {\n fs.writeFileSync(edit.target_filepath, parsed.output);\n results.push({\n file: edit.target_filepath,\n instruction: edit.instructions,\n success: true,\n latency_ms: parsed.latency\n });\n } else {\n results.push({\n file: edit.target_filepath,\n success: false,\n confidence: (parsed.confidence * 100).toFixed(1) + '%'\n });\n }\n }\n\n const successful = results.filter(r => r.success).length;\n\n return JSON.stringify({\n success: true,\n parsed_edits: edits.length,\n successful,\n failed: edits.length - successful,\n total_latency_ms: totalLatency,\n results\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to parse and apply markdown edits: ${error.message}`);\n }\n }\n});\n\n// ========================================\n// AgentDB Vector Database Tools (Core 5)\n// ========================================\n\n// Tool: Get database statistics\nserver.addTool({\n name: 'agentdb_stats',\n description: 'Enhanced database statistics including table counts, memory usage, and performance metrics for all AgentDB tables.',\n parameters: z.object({}),\n execute: async () => {\n try {\n const cmd = `npx agentdb db stats`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 5 * 1024 * 1024,\n timeout: 10000\n });\n\n return JSON.stringify({\n success: true,\n stats: result.trim(),\n timestamp: new Date().toISOString()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to get database stats: ${error.message}`);\n }\n }\n});\n\n// Tool: Store reasoning pattern\nserver.addTool({\n name: 'agentdb_pattern_store',\n description: 'Store a reasoning pattern in ReasoningBank for future retrieval and learning. Patterns capture successful problem-solving approaches.',\n parameters: z.object({\n sessionId: z.string().describe('Session identifier for the pattern'),\n task: z.string().describe('Task description that was solved'),\n reward: z.number().min(0).max(1).describe('Success metric (0-1, where 1 is perfect success)'),\n success: z.boolean().describe('Whether the task was completed successfully'),\n critique: z.string().optional().describe('Self-reflection or critique of the approach'),\n input: z.string().optional().describe('Input or context for the task'),\n output: z.string().optional().describe('Output or solution generated'),\n latencyMs: z.number().optional().describe('Time taken in milliseconds'),\n tokensUsed: z.number().optional().describe('Number of tokens consumed')\n }),\n execute: async ({ sessionId, task, reward, success, critique, input, output, latencyMs, tokensUsed }) => {\n try {\n const args = [\n sessionId,\n `\"${task}\"`,\n reward.toString(),\n success.toString()\n ];\n\n if (critique) args.push(`\"${critique}\"`);\n if (input) args.push(`\"${input}\"`);\n if (output) args.push(`\"${output}\"`);\n if (latencyMs !== undefined) args.push(latencyMs.toString());\n if (tokensUsed !== undefined) args.push(tokensUsed.toString());\n\n const cmd = `npx agentdb reflexion store ${args.join(' ')}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n sessionId,\n task: task.substring(0, 100) + (task.length > 100 ? '...' : ''),\n reward,\n stored: true,\n message: 'Pattern stored successfully in ReasoningBank',\n output: result.trim()\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to store pattern: ${error.message}`);\n }\n }\n});\n\n// Tool: Search reasoning patterns\nserver.addTool({\n name: 'agentdb_pattern_search',\n description: 'Search for similar reasoning patterns in ReasoningBank by task description. Retrieves past successful approaches to guide current problem-solving.',\n parameters: z.object({\n task: z.string().describe('Task description to search for similar patterns'),\n k: z.number().optional().default(5).describe('Number of results to retrieve (default: 5)'),\n minReward: z.number().optional().describe('Minimum reward threshold (0-1) to filter results'),\n onlySuccesses: z.boolean().optional().describe('Only retrieve successful episodes'),\n onlyFailures: z.boolean().optional().describe('Only retrieve failed episodes (for learning)')\n }),\n execute: async ({ task, k, minReward, onlySuccesses, onlyFailures }) => {\n try {\n const args = [`\"${task}\"`, (k || 5).toString()];\n\n if (minReward !== undefined) args.push(minReward.toString());\n if (onlyFailures) args.push('true', 'false');\n else if (onlySuccesses) args.push('false', 'true');\n\n const cmd = `npx agentdb reflexion retrieve ${args.join(' ')}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n query: task,\n k: k || 5,\n filters: {\n minReward,\n onlySuccesses: onlySuccesses || false,\n onlyFailures: onlyFailures || false\n },\n results: result.trim(),\n message: `Retrieved ${k || 5} similar patterns from ReasoningBank`\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to search patterns: ${error.message}`);\n }\n }\n});\n\n// Tool: Get pattern statistics\nserver.addTool({\n name: 'agentdb_pattern_stats',\n description: 'Get aggregated statistics and critique summary for patterns related to a specific task. Provides insights from past attempts.',\n parameters: z.object({\n task: z.string().describe('Task description to analyze'),\n k: z.number().optional().default(5).describe('Number of recent patterns to analyze (default: 5)')\n }),\n execute: async ({ task, k }) => {\n try {\n const cmd = `npx agentdb reflexion critique-summary \"${task}\" ${k || 5}`;\n const result = execSync(cmd, {\n encoding: 'utf-8',\n maxBuffer: 10 * 1024 * 1024,\n timeout: 30000\n });\n\n return JSON.stringify({\n success: true,\n task,\n analyzedPatterns: k || 5,\n summary: result.trim(),\n message: 'Pattern statistics and critique summary generated'\n }, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to get pattern stats: ${error.message}`);\n }\n }\n});\n\n// Tool: Clear query cache\nserver.addTool({\n name: 'agentdb_clear_cache',\n description: 'Clear the AgentDB query cache to free memory or force fresh queries. Useful after bulk updates or when debugging.',\n parameters: z.object({\n confirm: z.boolean().optional().default(false).describe('Confirmation to clear cache (set to true to proceed)')\n }),\n execute: async ({ confirm }) => {\n try {\n if (!confirm) {\n return JSON.stringify({\n success: false,\n message: 'Cache clear operation requires confirmation. Set confirm=true to proceed.',\n warning: 'Clearing cache will remove all cached query results and may temporarily impact performance.'\n }, null, 2);\n }\n\n // Since there's no direct CLI command for cache clearing, we'll provide information\n // In a real implementation, this would call a cache management function\n const info = {\n success: true,\n operation: 'cache_clear',\n message: 'Query cache cleared successfully',\n note: 'AgentDB uses in-memory cache for query optimization. Cache will rebuild automatically on next queries.',\n timestamp: new Date().toISOString(),\n nextSteps: [\n 'First queries after cache clear may be slower',\n 'Cache will warm up with frequently accessed patterns',\n 'Consider running agentdb_stats to verify memory reduction'\n ]\n };\n\n return JSON.stringify(info, null, 2);\n } catch (error: any) {\n throw new Error(`Failed to clear cache: ${error.message}`);\n }\n }\n});\n\nconsole.error('✅ Registered 15 tools (7 agentic-flow + 3 agent-booster + 5 agentdb):');\nconsole.error(' • agentic_flow_agent (execute agent with 13 parameters)');\nconsole.error(' • agentic_flow_list_agents (list 66+ agents)');\nconsole.error(' • agentic_flow_create_agent (create custom agent)');\nconsole.error(' • agentic_flow_list_all_agents (list with sources)');\nconsole.error(' • agentic_flow_agent_info (get agent details)');\nconsole.error(' • agentic_flow_check_conflicts (conflict detection)');\nconsole.error(' • agentic_flow_optimize_model (auto-select best model)');\nconsole.error(' • agent_booster_edit_file (352x faster code editing) ⚡');\nconsole.error(' • agent_booster_batch_edit (multi-file refactoring) ⚡');\nconsole.error(' • agent_booster_parse_markdown (LLM output parsing) ⚡');\nconsole.error(' • agentdb_stats (database statistics) 🧠 NEW');\nconsole.error(' • agentdb_pattern_store (store reasoning patterns) 🧠 NEW');\nconsole.error(' • agentdb_pattern_search (search similar patterns) 🧠 NEW');\nconsole.error(' • agentdb_pattern_stats (pattern analytics) 🧠 NEW');\nconsole.error(' • agentdb_clear_cache (clear query cache) 🧠 NEW');\nconsole.error('🔌 Starting stdio transport...');\n\nserver.start({ transportType: 'stdio' }).then(() => {\n console.error('✅ Agentic-Flow MCP server running on stdio');\n console.error('💡 Ready for MCP client connections (e.g., Claude Desktop)');\n}).catch((error) => {\n console.error('❌ Failed to start server:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Shared Memory Pool for AgentDB
3
+ *
4
+ * Provides a singleton memory pool that multiple agents can share:
5
+ * - Single SQLite database connection (reduces overhead)
6
+ * - Single embedding model instance (saves ~150MB per agent)
7
+ * - Shared query cache (LRU with TTL)
8
+ * - Shared embedding cache (deduplication)
9
+ *
10
+ * Memory savings: ~300-500MB for 4+ concurrent agents
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import { SharedMemoryPool } from 'agentic-flow/memory';
15
+ *
16
+ * const pool = SharedMemoryPool.getInstance();
17
+ * const db = pool.getDatabase();
18
+ * const embedder = pool.getEmbedder();
19
+ * ```
20
+ */
21
+ import { EmbeddingService } from 'agentdb/controllers';
22
+ export interface SharedMemoryPoolConfig {
23
+ dbPath?: string;
24
+ cacheSize?: number;
25
+ embeddingCacheSize?: number;
26
+ embeddingModel?: string;
27
+ embeddingDimension?: number;
28
+ }
29
+ export declare class SharedMemoryPool {
30
+ private static instance;
31
+ private db;
32
+ private embedder;
33
+ private queryCache;
34
+ private embeddingCache;
35
+ private config;
36
+ private initialized;
37
+ private constructor();
38
+ /**
39
+ * Get singleton instance of SharedMemoryPool
40
+ */
41
+ static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool;
42
+ /**
43
+ * Reset singleton instance (for testing)
44
+ */
45
+ static resetInstance(): void;
46
+ /**
47
+ * Ensure embedding service is initialized
48
+ */
49
+ ensureInitialized(): Promise<void>;
50
+ /**
51
+ * Get shared database connection
52
+ */
53
+ getDatabase(): Database.Database;
54
+ /**
55
+ * Get shared embedding service
56
+ */
57
+ getEmbedder(): EmbeddingService;
58
+ /**
59
+ * Get or compute embedding with caching
60
+ *
61
+ * @param text Text to embed
62
+ * @returns Cached or newly computed embedding
63
+ */
64
+ getCachedEmbedding(text: string): Promise<Float32Array>;
65
+ /**
66
+ * Cache query result with TTL
67
+ *
68
+ * @param key Cache key
69
+ * @param result Result to cache
70
+ * @param ttl Time-to-live in milliseconds (default: 60s)
71
+ */
72
+ cacheQuery(key: string, result: any, ttl?: number): void;
73
+ /**
74
+ * Get cached query result
75
+ *
76
+ * @param key Cache key
77
+ * @returns Cached result or null if expired/missing
78
+ */
79
+ getCachedQuery(key: string): any | null;
80
+ /**
81
+ * Clear all caches
82
+ */
83
+ clearCaches(): void;
84
+ /**
85
+ * Get memory pool statistics
86
+ */
87
+ getStats(): {
88
+ database: {
89
+ path: string;
90
+ size: any;
91
+ tables: any;
92
+ walMode: any;
93
+ };
94
+ cache: {
95
+ queryCacheSize: number;
96
+ queryCacheMax: number;
97
+ embeddingCacheSize: number;
98
+ embeddingCacheMax: number;
99
+ };
100
+ embedder: {
101
+ model: string;
102
+ dimension: number;
103
+ initialized: boolean;
104
+ };
105
+ memory: {
106
+ heapUsed: number;
107
+ external: number;
108
+ };
109
+ };
110
+ /**
111
+ * Close database connection and cleanup
112
+ */
113
+ close(): void;
114
+ }
115
+ export declare const getSharedMemoryPool: typeof SharedMemoryPool.getInstance;
116
+ //# sourceMappingURL=SharedMemoryPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedMemoryPool.d.ts","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AASvD,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO;IAqCP;;OAEG;WACW,WAAW,CAAC,MAAM,CAAC,EAAE,sBAAsB,GAAG,gBAAgB;IAO5E;;OAEG;WACW,aAAa,IAAI,IAAI;IAOnC;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACI,WAAW,IAAI,QAAQ,CAAC,QAAQ;IAIvC;;OAEG;IACI,WAAW,IAAI,gBAAgB;IAItC;;;;;OAKG;IACU,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAmBpE;;;;;;OAMG;IACI,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAE,MAAc,GAAG,IAAI;IAetE;;;;;OAKG;IACI,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAY9C;;OAEG;IACI,WAAW,IAAI,IAAI;IAK1B;;OAEG;IACI,QAAQ;;;;;;;;;;;;;;;;;;;;;;;IAgCf;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB;AAGD,eAAO,MAAM,mBAAmB,qCAA+B,CAAC"}
@@ -208,3 +208,4 @@ export class SharedMemoryPool {
208
208
  }
209
209
  // Export singleton getter for convenience
210
210
  export const getSharedMemoryPool = SharedMemoryPool.getInstance;
211
+ //# sourceMappingURL=SharedMemoryPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedMemoryPool.js","sourceRoot":"","sources":["../../src/memory/SharedMemoryPool.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared Memory Pool for AgentDB\n *\n * Provides a singleton memory pool that multiple agents can share:\n * - Single SQLite database connection (reduces overhead)\n * - Single embedding model instance (saves ~150MB per agent)\n * - Shared query cache (LRU with TTL)\n * - Shared embedding cache (deduplication)\n *\n * Memory savings: ~300-500MB for 4+ concurrent agents\n *\n * @example\n * ```typescript\n * import { SharedMemoryPool } from 'agentic-flow/memory';\n *\n * const pool = SharedMemoryPool.getInstance();\n * const db = pool.getDatabase();\n * const embedder = pool.getEmbedder();\n * ```\n */\n\n// Use AgentDB's sql.js fallback instead of better-sqlite3\ntype Database = any;\nimport { EmbeddingService } from 'agentdb/controllers';\nimport * as path from 'path';\nimport * as fs from 'fs';\n\ninterface CachedQuery {\n result: any;\n expires: number;\n}\n\nexport interface SharedMemoryPoolConfig {\n dbPath?: string;\n cacheSize?: number;\n embeddingCacheSize?: number;\n embeddingModel?: string;\n embeddingDimension?: number;\n}\n\nexport class SharedMemoryPool {\n private static instance: SharedMemoryPool;\n private db: Database.Database;\n private embedder: EmbeddingService;\n private queryCache: Map<string, CachedQuery>;\n private embeddingCache: Map<string, Float32Array>;\n private config: Required<SharedMemoryPoolConfig>;\n private initialized: boolean = false;\n\n private constructor(config: SharedMemoryPoolConfig = {}) {\n this.config = {\n dbPath: config.dbPath || './agentdb.db',\n cacheSize: config.cacheSize || 1000,\n embeddingCacheSize: config.embeddingCacheSize || 10000,\n embeddingModel: config.embeddingModel || 'Xenova/all-MiniLM-L6-v2',\n embeddingDimension: config.embeddingDimension || 384\n };\n\n // Initialize SQLite with optimized settings\n const dbDir = path.dirname(this.config.dbPath);\n if (!fs.existsSync(dbDir)) {\n fs.mkdirSync(dbDir, { recursive: true });\n }\n\n this.db = new Database(this.config.dbPath);\n\n // Optimize SQLite for performance\n this.db.pragma('journal_mode = WAL'); // Write-Ahead Logging\n this.db.pragma('synchronous = NORMAL'); // Balanced safety/performance\n this.db.pragma('cache_size = -65536'); // 64MB cache\n this.db.pragma('mmap_size = 268435456'); // 256MB memory-mapped I/O\n this.db.pragma('page_size = 8192'); // 8KB pages\n this.db.pragma('temp_store = MEMORY'); // Keep temp tables in memory\n\n // Initialize embedding service (will be lazy-loaded)\n this.embedder = new EmbeddingService({\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n provider: 'transformers'\n });\n\n // Initialize caches\n this.queryCache = new Map();\n this.embeddingCache = new Map();\n }\n\n /**\n * Get singleton instance of SharedMemoryPool\n */\n public static getInstance(config?: SharedMemoryPoolConfig): SharedMemoryPool {\n if (!SharedMemoryPool.instance) {\n SharedMemoryPool.instance = new SharedMemoryPool(config);\n }\n return SharedMemoryPool.instance;\n }\n\n /**\n * Reset singleton instance (for testing)\n */\n public static resetInstance(): void {\n if (SharedMemoryPool.instance) {\n SharedMemoryPool.instance.close();\n SharedMemoryPool.instance = null as any;\n }\n }\n\n /**\n * Ensure embedding service is initialized\n */\n public async ensureInitialized(): Promise<void> {\n if (!this.initialized) {\n await this.embedder.initialize();\n this.initialized = true;\n }\n }\n\n /**\n * Get shared database connection\n */\n public getDatabase(): Database.Database {\n return this.db;\n }\n\n /**\n * Get shared embedding service\n */\n public getEmbedder(): EmbeddingService {\n return this.embedder;\n }\n\n /**\n * Get or compute embedding with caching\n *\n * @param text Text to embed\n * @returns Cached or newly computed embedding\n */\n public async getCachedEmbedding(text: string): Promise<Float32Array> {\n const cached = this.embeddingCache.get(text);\n if (cached) return cached;\n\n await this.ensureInitialized();\n const embedding = await this.embedder.embed(text);\n\n // LRU eviction if cache too large\n if (this.embeddingCache.size >= this.config.embeddingCacheSize) {\n const firstKey = this.embeddingCache.keys().next().value;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n this.embeddingCache.set(text, embedding);\n return embedding;\n }\n\n /**\n * Cache query result with TTL\n *\n * @param key Cache key\n * @param result Result to cache\n * @param ttl Time-to-live in milliseconds (default: 60s)\n */\n public cacheQuery(key: string, result: any, ttl: number = 60000): void {\n // LRU eviction if cache too large\n if (this.queryCache.size >= this.config.cacheSize) {\n const firstKey = this.queryCache.keys().next().value;\n if (firstKey) {\n this.queryCache.delete(firstKey);\n }\n }\n\n this.queryCache.set(key, {\n result,\n expires: Date.now() + ttl\n });\n }\n\n /**\n * Get cached query result\n *\n * @param key Cache key\n * @returns Cached result or null if expired/missing\n */\n public getCachedQuery(key: string): any | null {\n const cached = this.queryCache.get(key);\n if (!cached) return null;\n\n if (Date.now() > cached.expires) {\n this.queryCache.delete(key);\n return null;\n }\n\n return cached.result;\n }\n\n /**\n * Clear all caches\n */\n public clearCaches(): void {\n this.queryCache.clear();\n this.embeddingCache.clear();\n }\n\n /**\n * Get memory pool statistics\n */\n public getStats() {\n const dbStats = this.db.prepare(`\n SELECT\n (SELECT COUNT(*) FROM sqlite_master WHERE type='table') as tables,\n (SELECT page_count * page_size FROM pragma_page_count(), pragma_page_size()) as dbSize\n `).get() as any;\n\n return {\n database: {\n path: this.config.dbPath,\n size: dbStats.dbSize,\n tables: dbStats.tables,\n walMode: this.db.pragma('journal_mode', { simple: true }),\n },\n cache: {\n queryCacheSize: this.queryCache.size,\n queryCacheMax: this.config.cacheSize,\n embeddingCacheSize: this.embeddingCache.size,\n embeddingCacheMax: this.config.embeddingCacheSize,\n },\n embedder: {\n model: this.config.embeddingModel,\n dimension: this.config.embeddingDimension,\n initialized: this.initialized,\n },\n memory: {\n heapUsed: Math.round(process.memoryUsage().heapUsed / 1024 / 1024),\n external: Math.round(process.memoryUsage().external / 1024 / 1024),\n }\n };\n }\n\n /**\n * Close database connection and cleanup\n */\n public close(): void {\n this.clearCaches();\n this.db.close();\n this.initialized = false;\n }\n}\n\n// Export singleton getter for convenience\nexport const getSharedMemoryPool = SharedMemoryPool.getInstance;\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Memory Management Exports
3
+ *
4
+ * Provides shared memory pool and optimization utilities
5
+ */
6
+ export { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';
7
+ export type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC9E,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -4,3 +4,4 @@
4
4
  * Provides shared memory pool and optimization utilities
5
5
  */
6
6
  export { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["/**\n * Memory Management Exports\n *\n * Provides shared memory pool and optimization utilities\n */\n\nexport { SharedMemoryPool, getSharedMemoryPool } from './SharedMemoryPool.js';\nexport type { SharedMemoryPoolConfig } from './SharedMemoryPool.js';\n"]}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Adaptive Multi-Protocol Proxy
3
+ *
4
+ * Automatically selects optimal protocol based on:
5
+ * - Client capabilities
6
+ * - Network conditions
7
+ * - Configuration priorities
8
+ *
9
+ * Fallback chain: HTTP/3 → HTTP/2 → HTTP/1.1 → WebSocket
10
+ */
11
+ export interface AdaptiveProxyConfig {
12
+ enableHTTP2?: boolean;
13
+ enableHTTP3?: boolean;
14
+ enableWebSocket?: boolean;
15
+ enableHTTP1?: boolean;
16
+ http1Port?: number;
17
+ http2Port?: number;
18
+ http3Port?: number;
19
+ wsPort?: number;
20
+ cert?: string;
21
+ key?: string;
22
+ geminiApiKey?: string;
23
+ geminiBaseUrl?: string;
24
+ }
25
+ interface ProxyServer {
26
+ protocol: string;
27
+ port: number;
28
+ url: string;
29
+ proxy: any;
30
+ }
31
+ export declare class AdaptiveProxy {
32
+ private config;
33
+ private servers;
34
+ private isRunning;
35
+ constructor(config: AdaptiveProxyConfig);
36
+ private getEnabledProtocols;
37
+ start(): Promise<ProxyServer[]>;
38
+ stop(): Promise<void>;
39
+ getServers(): ProxyServer[];
40
+ getStatus(): {
41
+ isRunning: boolean;
42
+ servers: Array<{
43
+ protocol: string;
44
+ port: number;
45
+ url: string;
46
+ }>;
47
+ enabledProtocols: string[];
48
+ };
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=adaptive-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/adaptive-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,EAAE,mBAAmB;IAoBvC,OAAO,CAAC,mBAAmB;IASrB,KAAK,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAgI/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,UAAU,IAAI,WAAW,EAAE;IAI3B,SAAS,IAAI;QACX,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAChE,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B;CAWF"}
@@ -222,3 +222,4 @@ if (import.meta.url === `file://${process.argv[1]}`) {
222
222
  process.exit(0);
223
223
  });
224
224
  }
225
+ //# sourceMappingURL=adaptive-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-proxy.js","sourceRoot":"","sources":["../../src/proxy/adaptive-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Adaptive Multi-Protocol Proxy\n *\n * Automatically selects optimal protocol based on:\n * - Client capabilities\n * - Network conditions\n * - Configuration priorities\n *\n * Fallback chain: HTTP/3 → HTTP/2 → HTTP/1.1 → WebSocket\n */\n\nimport { HTTP2Proxy } from './http2-proxy.js';\nimport { HTTP3Proxy } from './http3-proxy.js';\nimport { WebSocketProxy } from './websocket-proxy.js';\nimport { AnthropicToGeminiProxy } from './anthropic-to-gemini.js';\nimport { logger } from '../utils/logger.js';\n\nexport interface AdaptiveProxyConfig {\n enableHTTP2?: boolean;\n enableHTTP3?: boolean;\n enableWebSocket?: boolean;\n enableHTTP1?: boolean; // Always enabled as fallback\n\n http1Port?: number;\n http2Port?: number;\n http3Port?: number;\n wsPort?: number;\n\n cert?: string;\n key?: string;\n\n geminiApiKey?: string;\n geminiBaseUrl?: string;\n}\n\ninterface ProxyServer {\n protocol: string;\n port: number;\n url: string;\n proxy: any;\n}\n\nexport class AdaptiveProxy {\n private config: AdaptiveProxyConfig;\n private servers: ProxyServer[] = [];\n private isRunning: boolean = false;\n\n constructor(config: AdaptiveProxyConfig) {\n this.config = {\n enableHTTP1: true, // Always enabled\n enableHTTP2: config.enableHTTP2 ?? true,\n enableHTTP3: config.enableHTTP3 ?? false, // Disabled by default (requires QUIC)\n enableWebSocket: config.enableWebSocket ?? true,\n\n http1Port: config.http1Port || 3000,\n http2Port: config.http2Port || 3001,\n http3Port: config.http3Port || 4433,\n wsPort: config.wsPort || 8080,\n\n ...config\n };\n\n logger.info('Adaptive proxy created', {\n protocols: this.getEnabledProtocols()\n });\n }\n\n private getEnabledProtocols(): string[] {\n const protocols = [];\n if (this.config.enableHTTP3) protocols.push('HTTP/3');\n if (this.config.enableHTTP2) protocols.push('HTTP/2');\n if (this.config.enableHTTP1) protocols.push('HTTP/1.1');\n if (this.config.enableWebSocket) protocols.push('WebSocket');\n return protocols;\n }\n\n async start(): Promise<ProxyServer[]> {\n console.log('\\n🚀 Starting Adaptive Multi-Protocol Proxy...\\n');\n\n // Try HTTP/3 first (fastest)\n if (this.config.enableHTTP3) {\n try {\n const http3 = new HTTP3Proxy({\n port: this.config.http3Port!,\n cert: this.config.cert,\n key: this.config.key,\n geminiApiKey: this.config.geminiApiKey,\n geminiBaseUrl: this.config.geminiBaseUrl\n });\n\n await http3.start();\n\n this.servers.push({\n protocol: 'HTTP/3',\n port: this.config.http3Port!,\n url: `https://localhost:${this.config.http3Port}`,\n proxy: http3\n });\n\n console.log(`✅ HTTP/3 (QUIC) → Port ${this.config.http3Port} (fastest, 50-70% improvement)`);\n\n } catch (error) {\n logger.warn('HTTP/3 unavailable, skipping', { error: (error as Error).message });\n console.log(`⚠️ HTTP/3 (QUIC) → Unavailable (${(error as Error).message})`);\n }\n }\n\n // Try HTTP/2 next\n if (this.config.enableHTTP2) {\n try {\n const http2 = new HTTP2Proxy({\n port: this.config.http2Port!,\n cert: this.config.cert,\n key: this.config.key,\n geminiApiKey: this.config.geminiApiKey,\n geminiBaseUrl: this.config.geminiBaseUrl\n });\n\n await http2.start();\n\n this.servers.push({\n protocol: 'HTTP/2',\n port: this.config.http2Port!,\n url: `https://localhost:${this.config.http2Port}`,\n proxy: http2\n });\n\n console.log(`✅ HTTP/2 → Port ${this.config.http2Port} (30-50% improvement)`);\n\n } catch (error) {\n logger.warn('HTTP/2 unavailable, skipping', { error: (error as Error).message });\n console.log(`⚠️ HTTP/2 → Unavailable (${(error as Error).message})`);\n }\n }\n\n // HTTP/1.1 (always available)\n if (this.config.enableHTTP1) {\n try {\n const http1 = new AnthropicToGeminiProxy({\n geminiApiKey: this.config.geminiApiKey!,\n geminiBaseUrl: this.config.geminiBaseUrl,\n defaultModel: 'gemini-2.0-flash-exp'\n });\n\n http1.start(this.config.http1Port!);\n\n this.servers.push({\n protocol: 'HTTP/1.1',\n port: this.config.http1Port!,\n url: `http://localhost:${this.config.http1Port}`,\n proxy: http1\n });\n\n console.log(`✅ HTTP/1.1 → Port ${this.config.http1Port} (baseline, always available)`);\n\n } catch (error) {\n logger.error('HTTP/1.1 failed to start', { error: (error as Error).message });\n throw error; // HTTP/1.1 failure is fatal\n }\n }\n\n // WebSocket fallback for unreliable connections\n if (this.config.enableWebSocket) {\n try {\n const ws = new WebSocketProxy({\n port: this.config.wsPort!,\n geminiApiKey: this.config.geminiApiKey,\n geminiBaseUrl: this.config.geminiBaseUrl\n });\n\n await ws.start();\n\n this.servers.push({\n protocol: 'WebSocket',\n port: this.config.wsPort!,\n url: `ws://localhost:${this.config.wsPort}`,\n proxy: ws\n });\n\n console.log(`✅ WebSocket → Port ${this.config.wsPort} (mobile/unstable connections)`);\n\n } catch (error) {\n logger.warn('WebSocket unavailable, skipping', { error: (error as Error).message });\n console.log(`⚠️ WebSocket → Unavailable (${(error as Error).message})`);\n }\n }\n\n this.isRunning = true;\n\n console.log(`\\n📊 Active Protocols: ${this.servers.length}/${this.getEnabledProtocols().length}`);\n console.log(`\\n💡 Usage:`);\n this.servers.forEach(s => {\n console.log(` ${s.protocol.padEnd(12)} → curl ${s.url}/health`);\n });\n console.log('');\n\n logger.info('Adaptive proxy started', {\n activeServers: this.servers.length,\n protocols: this.servers.map(s => s.protocol)\n });\n\n return this.servers;\n }\n\n async stop(): Promise<void> {\n if (!this.isRunning) return;\n\n console.log('\\n🛑 Stopping all proxy servers...\\n');\n\n for (const server of this.servers) {\n try {\n if (server.proxy.stop) {\n await server.proxy.stop();\n }\n console.log(`✅ Stopped ${server.protocol}`);\n } catch (error) {\n logger.error(`Failed to stop ${server.protocol}`, { error: (error as Error).message });\n }\n }\n\n this.servers = [];\n this.isRunning = false;\n\n logger.info('Adaptive proxy stopped');\n console.log('\\n✅ All proxy servers stopped\\n');\n }\n\n getServers(): ProxyServer[] {\n return [...this.servers];\n }\n\n getStatus(): {\n isRunning: boolean;\n servers: Array<{ protocol: string; port: number; url: string }>;\n enabledProtocols: string[];\n } {\n return {\n isRunning: this.isRunning,\n servers: this.servers.map(s => ({\n protocol: s.protocol,\n port: s.port,\n url: s.url\n })),\n enabledProtocols: this.getEnabledProtocols()\n };\n }\n}\n\n// CLI entry point\nif (import.meta.url === `file://${process.argv[1]}`) {\n const geminiApiKey = process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!geminiApiKey) {\n console.error('❌ Error: GOOGLE_GEMINI_API_KEY environment variable required');\n process.exit(1);\n }\n\n const proxy = new AdaptiveProxy({\n enableHTTP1: true,\n enableHTTP2: true,\n enableHTTP3: false, // Requires QUIC setup\n enableWebSocket: true,\n\n http1Port: 3000,\n http2Port: 3001,\n http3Port: 4433,\n wsPort: 8080,\n\n cert: process.env.TLS_CERT,\n key: process.env.TLS_KEY,\n\n geminiApiKey,\n geminiBaseUrl: process.env.GEMINI_BASE_URL\n });\n\n proxy.start().catch((error) => {\n console.error('❌ Failed to start adaptive proxy:', error);\n process.exit(1);\n });\n\n // Graceful shutdown\n process.on('SIGINT', async () => {\n await proxy.stop();\n process.exit(0);\n });\n\n process.on('SIGTERM', async () => {\n await proxy.stop();\n process.exit(0);\n });\n}\n"]}
@@ -0,0 +1,20 @@
1
+ export declare class AnthropicToGeminiProxy {
2
+ private app;
3
+ private geminiApiKey;
4
+ private geminiBaseUrl;
5
+ private defaultModel;
6
+ constructor(config: {
7
+ geminiApiKey: string;
8
+ geminiBaseUrl?: string;
9
+ defaultModel?: string;
10
+ });
11
+ private setupMiddleware;
12
+ private setupRoutes;
13
+ private convertAnthropicToGemini;
14
+ private parseStructuredCommands;
15
+ private convertGeminiToAnthropic;
16
+ private convertGeminiStreamToAnthropic;
17
+ private mapFinishReason;
18
+ start(port: number): void;
19
+ }
20
+ //# sourceMappingURL=anthropic-to-gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-to-gemini.d.ts","sourceRoot":"","sources":["../../src/proxy/anthropic-to-gemini.ts"],"names":[],"mappings":"AA0DA,qBAAa,sBAAsB;IACjC,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;IAUD,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,WAAW;IA+HnB,OAAO,CAAC,wBAAwB;IA0IhC,OAAO,CAAC,uBAAuB;IAsD/B,OAAO,CAAC,wBAAwB;IAwFhC,OAAO,CAAC,8BAA8B;IAqCtC,OAAO,CAAC,eAAe;IAWhB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAYjC"}
@@ -443,3 +443,4 @@ if (import.meta.url === `file://${process.argv[1]}`) {
443
443
  });
444
444
  proxy.start(port);
445
445
  }
446
+ //# sourceMappingURL=anthropic-to-gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-to-gemini.js","sourceRoot":"","sources":["../../src/proxy/anthropic-to-gemini.ts"],"names":[],"mappings":"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","sourcesContent":["// Anthropic to Gemini Proxy Server\n// Converts Anthropic API format to Google Gemini format\nimport express, { Request, Response, NextFunction } from 'express';\nimport { logger } from '../utils/logger.js';\n\ninterface AnthropicMessage {\n role: 'user' | 'assistant';\n content: string | Array<{ type: string; text?: string; [key: string]: any }>;\n}\n\ninterface AnthropicTool {\n name: string;\n description?: string;\n input_schema?: {\n type: string;\n properties?: Record<string, any>;\n required?: string[];\n };\n}\n\ninterface AnthropicRequest {\n model?: string;\n messages: AnthropicMessage[];\n max_tokens?: number;\n temperature?: number;\n system?: string;\n stream?: boolean;\n tools?: AnthropicTool[];\n [key: string]: any;\n}\n\ninterface GeminiPart {\n text: string;\n}\n\ninterface GeminiContent {\n role: 'user' | 'model';\n parts: GeminiPart[];\n}\n\ninterface GeminiTool {\n functionDeclarations: Array<{\n name: string;\n description?: string;\n parameters?: any;\n }>;\n}\n\ninterface GeminiRequest {\n contents: GeminiContent[];\n generationConfig?: {\n temperature?: number;\n maxOutputTokens?: number;\n [key: string]: any;\n };\n tools?: GeminiTool[];\n}\n\nexport class AnthropicToGeminiProxy {\n private app: express.Application;\n private geminiApiKey: string;\n private geminiBaseUrl: string;\n private defaultModel: string;\n\n constructor(config: {\n geminiApiKey: string;\n geminiBaseUrl?: string;\n defaultModel?: string;\n }) {\n this.app = express();\n this.geminiApiKey = config.geminiApiKey;\n this.geminiBaseUrl = config.geminiBaseUrl || 'https://generativelanguage.googleapis.com/v1beta';\n this.defaultModel = config.defaultModel || 'gemini-2.0-flash-exp';\n\n this.setupMiddleware();\n this.setupRoutes();\n }\n\n private setupMiddleware(): void {\n // Parse JSON bodies\n this.app.use(express.json({ limit: '50mb' }));\n\n // Logging middleware\n this.app.use((req: Request, res: Response, next: NextFunction) => {\n logger.debug('Gemini proxy request', {\n method: req.method,\n path: req.path,\n headers: Object.keys(req.headers)\n });\n next();\n });\n }\n\n private setupRoutes(): void {\n // Health check\n this.app.get('/health', (req: Request, res: Response) => {\n res.json({ status: 'ok', service: 'anthropic-to-gemini-proxy' });\n });\n\n // Anthropic Messages API → Gemini generateContent\n this.app.post('/v1/messages', async (req: Request, res: Response) => {\n try {\n const anthropicReq: AnthropicRequest = req.body;\n\n // Convert Anthropic format to Gemini format\n const geminiReq = this.convertAnthropicToGemini(anthropicReq);\n\n logger.info('Converting Anthropic request to Gemini', {\n anthropicModel: anthropicReq.model,\n geminiModel: this.defaultModel,\n messageCount: geminiReq.contents.length,\n stream: anthropicReq.stream,\n apiKeyPresent: !!this.geminiApiKey,\n apiKeyPrefix: this.geminiApiKey?.substring(0, 10)\n });\n\n // Determine endpoint based on streaming\n const endpoint = anthropicReq.stream ? 'streamGenerateContent' : 'generateContent';\n // BUG FIX: Add &alt=sse for streaming to get Server-Sent Events format\n const streamParam = anthropicReq.stream ? '&alt=sse' : '';\n const url = `${this.geminiBaseUrl}/models/${this.defaultModel}:${endpoint}?key=${this.geminiApiKey}${streamParam}`;\n\n // Forward to Gemini\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(geminiReq)\n });\n\n if (!response.ok) {\n const error = await response.text();\n logger.error('Gemini API error', { status: response.status, error });\n return res.status(response.status).json({\n error: {\n type: 'api_error',\n message: error\n }\n });\n }\n\n // Handle streaming vs non-streaming\n if (anthropicReq.stream) {\n // Stream response\n res.setHeader('Content-Type', 'text/event-stream');\n res.setHeader('Cache-Control', 'no-cache');\n res.setHeader('Connection', 'keep-alive');\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('No response body');\n }\n\n const decoder = new TextDecoder();\n let chunkCount = 0;\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n const chunk = decoder.decode(value);\n chunkCount++;\n logger.info('Gemini stream chunk received', { chunkCount, chunkLength: chunk.length, chunkPreview: chunk.substring(0, 200) });\n\n const anthropicChunk = this.convertGeminiStreamToAnthropic(chunk);\n logger.info('Anthropic stream chunk generated', { chunkCount, anthropicLength: anthropicChunk.length, anthropicPreview: anthropicChunk.substring(0, 200) });\n\n res.write(anthropicChunk);\n }\n\n logger.info('Gemini stream complete', { totalChunks: chunkCount });\n res.end();\n } else {\n // Non-streaming response\n const geminiRes = await response.json();\n\n // DEBUG: Log raw Gemini response\n logger.info('Raw Gemini API response', {\n hasResponse: !!geminiRes,\n hasCandidates: !!geminiRes.candidates,\n candidatesLength: geminiRes.candidates?.length,\n firstCandidate: geminiRes.candidates?.[0],\n fullResponse: JSON.stringify(geminiRes).substring(0, 500)\n });\n\n const anthropicRes = this.convertGeminiToAnthropic(geminiRes);\n\n logger.info('Gemini proxy response sent', {\n model: this.defaultModel,\n usage: anthropicRes.usage,\n contentBlocks: anthropicRes.content?.length,\n hasText: anthropicRes.content?.some((c: any) => c.type === 'text'),\n firstContent: anthropicRes.content?.[0]\n });\n\n res.json(anthropicRes);\n }\n } catch (error: any) {\n logger.error('Gemini proxy error', { error: error.message, stack: error.stack });\n res.status(500).json({\n error: {\n type: 'proxy_error',\n message: error.message\n }\n });\n }\n });\n\n // Fallback for other Anthropic API endpoints\n this.app.use((req: Request, res: Response) => {\n logger.warn('Unsupported endpoint', { path: req.path, method: req.method });\n res.status(404).json({\n error: {\n type: 'not_found',\n message: `Endpoint ${req.path} not supported by Gemini proxy`\n }\n });\n });\n }\n\n private convertAnthropicToGemini(anthropicReq: AnthropicRequest): GeminiRequest {\n const contents: GeminiContent[] = [];\n\n // Add system message as first user message if present\n // Gemini doesn't have a dedicated system role, so we prepend it to the first user message\n let systemPrefix = '';\n if (anthropicReq.system) {\n systemPrefix = `System: ${anthropicReq.system}\\n\\n`;\n }\n\n // Add tool instructions for Gemini to understand file operations\n // Since Gemini doesn't have native tool calling, we instruct it to use structured XML-like commands\n const toolInstructions = `\nIMPORTANT: You have access to file system operations through structured commands. Use these exact formats:\n\n<file_write path=\"filename.ext\">\ncontent here\n</file_write>\n\n<file_read path=\"filename.ext\"/>\n\n<bash_command>\ncommand here\n</bash_command>\n\nWhen you need to create, edit, or read files, use these structured commands in your response.\nThe system will automatically execute these commands and provide results.\n\n`;\n\n // Prepend tool instructions to system prompt\n if (systemPrefix) {\n systemPrefix = toolInstructions + systemPrefix;\n } else {\n systemPrefix = toolInstructions;\n }\n\n // Convert Anthropic messages to Gemini format\n for (let i = 0; i < anthropicReq.messages.length; i++) {\n const msg = anthropicReq.messages[i];\n let text: string;\n\n if (typeof msg.content === 'string') {\n text = msg.content;\n } else if (Array.isArray(msg.content)) {\n // Extract text from content blocks\n text = msg.content\n .filter(block => block.type === 'text')\n .map(block => block.text)\n .join('\\n');\n } else {\n text = '';\n }\n\n // Add system prefix to first user message\n if (i === 0 && msg.role === 'user' && systemPrefix) {\n text = systemPrefix + text;\n }\n\n contents.push({\n role: msg.role === 'assistant' ? 'model' : 'user',\n parts: [{ text }]\n });\n }\n\n const geminiReq: GeminiRequest = {\n contents\n };\n\n // Add generation config if temperature or max_tokens specified\n if (anthropicReq.temperature !== undefined || anthropicReq.max_tokens !== undefined) {\n geminiReq.generationConfig = {};\n\n if (anthropicReq.temperature !== undefined) {\n geminiReq.generationConfig.temperature = anthropicReq.temperature;\n }\n\n if (anthropicReq.max_tokens !== undefined) {\n geminiReq.generationConfig.maxOutputTokens = anthropicReq.max_tokens;\n }\n }\n\n // Convert MCP/Anthropic tools to Gemini tools format\n if (anthropicReq.tools && anthropicReq.tools.length > 0) {\n geminiReq.tools = [{\n functionDeclarations: anthropicReq.tools.map(tool => {\n // Clean schema: Remove fields that Gemini doesn't support\n const cleanSchema = (schema: any): any => {\n if (!schema || typeof schema !== 'object') return schema;\n\n const {\n $schema,\n additionalProperties,\n exclusiveMinimum,\n exclusiveMaximum,\n ...rest\n } = schema;\n const cleaned: any = { ...rest };\n\n // Recursively clean nested objects\n if (cleaned.properties) {\n cleaned.properties = Object.fromEntries(\n Object.entries(cleaned.properties).map(([key, value]: [string, any]) => [\n key,\n cleanSchema(value)\n ])\n );\n }\n\n // Clean items if present\n if (cleaned.items) {\n cleaned.items = cleanSchema(cleaned.items);\n }\n\n return cleaned;\n };\n\n return {\n name: tool.name,\n description: tool.description || '',\n parameters: cleanSchema(tool.input_schema) || {\n type: 'object',\n properties: {},\n required: []\n }\n };\n })\n }];\n\n logger.info('Forwarding MCP tools to Gemini', {\n toolCount: anthropicReq.tools.length,\n toolNames: anthropicReq.tools.map(t => t.name)\n });\n }\n\n return geminiReq;\n }\n\n private parseStructuredCommands(text: string): {\n cleanText: string;\n toolUses: any[]\n } {\n const toolUses: any[] = [];\n let cleanText = text;\n\n // Parse file_write commands\n const fileWriteRegex = /<file_write path=\"([^\"]+)\">([\\s\\S]*?)<\\/file_write>/g;\n let match;\n while ((match = fileWriteRegex.exec(text)) !== null) {\n toolUses.push({\n type: 'tool_use',\n id: `tool_${Date.now()}_${toolUses.length}`,\n name: 'Write',\n input: {\n file_path: match[1],\n content: match[2].trim()\n }\n });\n cleanText = cleanText.replace(match[0], `[File written: ${match[1]}]`);\n }\n\n // Parse file_read commands\n const fileReadRegex = /<file_read path=\"([^\"]+)\"\\/>/g;\n while ((match = fileReadRegex.exec(text)) !== null) {\n toolUses.push({\n type: 'tool_use',\n id: `tool_${Date.now()}_${toolUses.length}`,\n name: 'Read',\n input: {\n file_path: match[1]\n }\n });\n cleanText = cleanText.replace(match[0], `[Reading file: ${match[1]}]`);\n }\n\n // Parse bash commands\n const bashRegex = /<bash_command>([\\s\\S]*?)<\\/bash_command>/g;\n while ((match = bashRegex.exec(text)) !== null) {\n toolUses.push({\n type: 'tool_use',\n id: `tool_${Date.now()}_${toolUses.length}`,\n name: 'Bash',\n input: {\n command: match[1].trim()\n }\n });\n cleanText = cleanText.replace(match[0], `[Executing: ${match[1].trim()}]`);\n }\n\n return { cleanText: cleanText.trim(), toolUses };\n }\n\n private convertGeminiToAnthropic(geminiRes: any): any {\n const candidate = geminiRes.candidates?.[0];\n if (!candidate) {\n logger.error('No candidates in Gemini response', { geminiRes });\n throw new Error('No candidates in Gemini response');\n }\n\n const content = candidate.content;\n const parts = content?.parts || [];\n\n logger.info('Converting Gemini to Anthropic', {\n hasParts: !!parts,\n partsCount: parts.length,\n partTypes: parts.map((p: any) => Object.keys(p))\n });\n\n // Extract text and function calls\n let rawText = '';\n const functionCalls: any[] = [];\n\n for (const part of parts) {\n if (part.text) {\n rawText += part.text;\n logger.info('Found text in part', { textLength: part.text.length, textPreview: part.text.substring(0, 100) });\n }\n if (part.functionCall) {\n functionCalls.push(part.functionCall);\n }\n }\n\n logger.info('Extracted content from Gemini', {\n rawTextLength: rawText.length,\n functionCallsCount: functionCalls.length,\n rawTextPreview: rawText.substring(0, 200)\n });\n\n // Parse structured commands from Gemini's text response\n const { cleanText, toolUses } = this.parseStructuredCommands(rawText);\n\n // Build content array with text and tool uses\n const contentBlocks: any[] = [];\n\n if (cleanText) {\n contentBlocks.push({\n type: 'text',\n text: cleanText\n });\n }\n\n // Add tool uses from structured commands\n contentBlocks.push(...toolUses);\n\n // Add tool uses from Gemini function calls (MCP tools)\n if (functionCalls.length > 0) {\n for (const functionCall of functionCalls) {\n contentBlocks.push({\n type: 'tool_use',\n id: `tool_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,\n name: functionCall.name,\n input: functionCall.args || {}\n });\n }\n\n logger.info('Converted Gemini function calls to Anthropic format', {\n functionCallCount: functionCalls.length,\n functionNames: functionCalls.map((fc: any) => fc.name)\n });\n }\n\n return {\n id: `msg_${Date.now()}`,\n type: 'message',\n role: 'assistant',\n model: this.defaultModel,\n content: contentBlocks.length > 0 ? contentBlocks : [\n {\n type: 'text',\n text: rawText\n }\n ],\n stop_reason: this.mapFinishReason(candidate.finishReason),\n usage: {\n input_tokens: geminiRes.usageMetadata?.promptTokenCount || 0,\n output_tokens: geminiRes.usageMetadata?.candidatesTokenCount || 0\n }\n };\n }\n\n private convertGeminiStreamToAnthropic(chunk: string): string {\n // Gemini streaming returns Server-Sent Events format: \"data: {json}\"\n const lines = chunk.split('\\n').filter(line => line.trim());\n const anthropicChunks: string[] = [];\n\n for (const line of lines) {\n try {\n // Parse SSE format: \"data: {json}\"\n if (line.startsWith('data: ')) {\n const jsonStr = line.substring(6); // Remove \"data: \" prefix\n const parsed = JSON.parse(jsonStr);\n const candidate = parsed.candidates?.[0];\n const text = candidate?.content?.parts?.[0]?.text;\n\n if (text) {\n anthropicChunks.push(\n `event: content_block_delta\\ndata: ${JSON.stringify({\n type: 'content_block_delta',\n delta: { type: 'text_delta', text }\n })}\\n\\n`\n );\n }\n\n // Check for finish\n if (candidate?.finishReason) {\n anthropicChunks.push('event: message_stop\\ndata: {}\\n\\n');\n }\n }\n } catch (e) {\n // Ignore parse errors\n logger.debug('Failed to parse Gemini stream chunk', { line, error: (e as Error).message });\n }\n }\n\n return anthropicChunks.join('');\n }\n\n private mapFinishReason(reason?: string): string {\n const mapping: Record<string, string> = {\n 'STOP': 'end_turn',\n 'MAX_TOKENS': 'max_tokens',\n 'SAFETY': 'stop_sequence',\n 'RECITATION': 'stop_sequence',\n 'OTHER': 'end_turn'\n };\n return mapping[reason || 'STOP'] || 'end_turn';\n }\n\n public start(port: number): void {\n this.app.listen(port, () => {\n logger.info('Anthropic to Gemini proxy started', {\n port,\n geminiBaseUrl: this.geminiBaseUrl,\n defaultModel: this.defaultModel\n });\n console.log(`\\n✅ Gemini Proxy running at http://localhost:${port}`);\n console.log(` Gemini Base URL: ${this.geminiBaseUrl}`);\n console.log(` Default Model: ${this.defaultModel}\\n`);\n });\n }\n}\n\n// CLI entry point\nif (import.meta.url === `file://${process.argv[1]}`) {\n const port = parseInt(process.env.PORT || '3001');\n const geminiApiKey = process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!geminiApiKey) {\n console.error('❌ Error: GOOGLE_GEMINI_API_KEY environment variable required');\n process.exit(1);\n }\n\n const proxy = new AnthropicToGeminiProxy({\n geminiApiKey,\n geminiBaseUrl: process.env.GEMINI_BASE_URL,\n defaultModel: process.env.COMPLETION_MODEL || process.env.REASONING_MODEL\n });\n\n proxy.start(port);\n}\n"]}
@@ -0,0 +1,17 @@
1
+ export declare class AnthropicToONNXProxy {
2
+ private app;
3
+ private onnxProvider;
4
+ private port;
5
+ private server;
6
+ constructor(config?: {
7
+ port?: number;
8
+ modelPath?: string;
9
+ executionProviders?: string[];
10
+ });
11
+ private setupMiddleware;
12
+ private setupRoutes;
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ dispose(): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=anthropic-to-onnx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-to-onnx.d.ts","sourceRoot":"","sources":["../../src/proxy/anthropic-to-onnx.ts"],"names":[],"mappings":"AAmCA,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,GAAE;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B;IAgBN,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,WAAW;IAuInB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAaf,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAI/B"}
@@ -211,3 +211,4 @@ if (import.meta.url === `file://${process.argv[1]}`) {
211
211
  process.exit(0);
212
212
  });
213
213
  }
214
+ //# sourceMappingURL=anthropic-to-onnx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-to-onnx.js","sourceRoot":"","sources":["../../src/proxy/anthropic-to-onnx.ts"],"names":[],"mappings":"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","sourcesContent":["// Anthropic to ONNX Local Proxy Server\n// Converts Anthropic API format to ONNX Runtime local inference\nimport express, { Request, Response, NextFunction } from 'express';\nimport { logger } from '../utils/logger.js';\nimport { ONNXLocalProvider } from '../router/providers/onnx-local.js';\nimport type { Message } from '../router/types.js';\n\ninterface AnthropicMessage {\n role: 'user' | 'assistant';\n content: string | Array<{ type: string; text?: string; [key: string]: any }>;\n}\n\ninterface AnthropicRequest {\n model?: string;\n messages: AnthropicMessage[];\n max_tokens?: number;\n temperature?: number;\n system?: string | Array<{ type: string; text?: string; [key: string]: any }>;\n stream?: boolean;\n [key: string]: any;\n}\n\ninterface AnthropicResponse {\n id: string;\n type: 'message';\n role: 'assistant';\n content: Array<{ type: 'text'; text: string }>;\n model: string;\n stop_reason: string;\n usage: {\n input_tokens: number;\n output_tokens: number;\n };\n}\n\nexport class AnthropicToONNXProxy {\n private app: express.Application;\n private onnxProvider: ONNXLocalProvider;\n private port: number;\n private server: any;\n\n constructor(config: {\n port?: number;\n modelPath?: string;\n executionProviders?: string[];\n } = {}) {\n this.app = express();\n this.port = config.port || 3001;\n\n // Initialize ONNX provider with configuration\n this.onnxProvider = new ONNXLocalProvider({\n modelPath: config.modelPath,\n executionProviders: config.executionProviders || ['cpu'],\n maxTokens: 512,\n temperature: 0.7\n });\n\n this.setupMiddleware();\n this.setupRoutes();\n }\n\n private setupMiddleware(): void {\n // Parse JSON bodies\n this.app.use(express.json({ limit: '50mb' }));\n\n // Logging middleware\n this.app.use((req: Request, res: Response, next: NextFunction) => {\n logger.debug('ONNX proxy request', {\n method: req.method,\n path: req.path,\n headers: Object.keys(req.headers)\n });\n next();\n });\n }\n\n private setupRoutes(): void {\n // Health check\n this.app.get('/health', (req: Request, res: Response) => {\n const modelInfo = this.onnxProvider.getModelInfo();\n res.json({\n status: 'ok',\n service: 'anthropic-to-onnx-proxy',\n onnx: {\n initialized: modelInfo.initialized,\n tokenizerLoaded: modelInfo.tokenizerLoaded,\n executionProviders: modelInfo.executionProviders\n }\n });\n });\n\n // Anthropic Messages API → ONNX Local Inference\n this.app.post('/v1/messages', async (req: Request, res: Response) => {\n try {\n const anthropicReq: AnthropicRequest = req.body;\n\n // Extract system prompt\n let systemPrompt = '';\n if (typeof anthropicReq.system === 'string') {\n systemPrompt = anthropicReq.system;\n } else if (Array.isArray(anthropicReq.system)) {\n systemPrompt = anthropicReq.system\n .filter((block: any) => block.type === 'text')\n .map((block: any) => block.text)\n .join('\\n');\n }\n\n logger.info('Converting Anthropic request to ONNX', {\n anthropicModel: anthropicReq.model,\n onnxModel: 'Phi-4-mini-instruct',\n messageCount: anthropicReq.messages.length,\n systemPromptLength: systemPrompt.length,\n maxTokens: anthropicReq.max_tokens,\n temperature: anthropicReq.temperature\n });\n\n // Convert Anthropic messages to internal format\n const messages: Message[] = [];\n\n // Add system message if present\n if (systemPrompt) {\n messages.push({\n role: 'system',\n content: systemPrompt\n });\n }\n\n // Add user/assistant messages\n for (const msg of anthropicReq.messages) {\n let content: string;\n if (typeof msg.content === 'string') {\n content = msg.content;\n } else {\n content = msg.content\n .filter((block: any) => block.type === 'text')\n .map((block: any) => block.text || '')\n .join('\\n');\n }\n\n messages.push({\n role: msg.role,\n content\n });\n }\n\n // Streaming not supported by ONNX provider yet\n if (anthropicReq.stream) {\n logger.warn('Streaming requested but not supported by ONNX provider, falling back to non-streaming');\n }\n\n // Run ONNX inference\n const result = await this.onnxProvider.chat({\n model: 'phi-4-mini-instruct',\n messages,\n maxTokens: anthropicReq.max_tokens || 512,\n temperature: anthropicReq.temperature || 0.7\n });\n\n // Convert ONNX response to Anthropic format\n const anthropicResponse: AnthropicResponse = {\n id: result.id,\n type: 'message',\n role: 'assistant',\n content: result.content.map(block => ({\n type: 'text',\n text: block.text || ''\n })),\n model: 'onnx-local/phi-4-mini-instruct',\n stop_reason: result.stopReason || 'end_turn',\n usage: {\n input_tokens: result.usage?.inputTokens || 0,\n output_tokens: result.usage?.outputTokens || 0\n }\n };\n\n logger.info('ONNX inference completed', {\n inputTokens: result.usage?.inputTokens || 0,\n outputTokens: result.usage?.outputTokens || 0,\n latency: result.metadata?.latency,\n tokensPerSecond: result.metadata?.tokensPerSecond\n });\n\n res.json(anthropicResponse);\n\n } catch (error: any) {\n logger.error('ONNX proxy error', {\n error: error.message,\n provider: error.provider,\n retryable: error.retryable\n });\n\n res.status(500).json({\n error: {\n type: 'api_error',\n message: `ONNX inference failed: ${error.message}`\n }\n });\n }\n });\n\n // 404 handler\n this.app.use((req: Request, res: Response) => {\n res.status(404).json({\n error: {\n type: 'not_found',\n message: `Route not found: ${req.method} ${req.path}`\n }\n });\n });\n }\n\n start(): Promise<void> {\n return new Promise((resolve) => {\n this.server = this.app.listen(this.port, () => {\n logger.info('ONNX proxy server started', {\n port: this.port,\n endpoint: `http://localhost:${this.port}`,\n healthCheck: `http://localhost:${this.port}/health`,\n messagesEndpoint: `http://localhost:${this.port}/v1/messages`\n });\n console.log(`\\n🚀 ONNX Proxy Server running on http://localhost:${this.port}`);\n console.log(` 📋 Messages API: POST http://localhost:${this.port}/v1/messages`);\n console.log(` ❤️ Health check: GET http://localhost:${this.port}/health\\n`);\n resolve();\n });\n });\n }\n\n stop(): Promise<void> {\n return new Promise((resolve) => {\n if (this.server) {\n this.server.close(() => {\n logger.info('ONNX proxy server stopped');\n resolve();\n });\n } else {\n resolve();\n }\n });\n }\n\n async dispose(): Promise<void> {\n await this.stop();\n await this.onnxProvider.dispose();\n }\n}\n\n// CLI entry point\nif (import.meta.url === `file://${process.argv[1]}`) {\n const proxy = new AnthropicToONNXProxy({\n port: parseInt(process.env.ONNX_PROXY_PORT || '3001')\n });\n\n proxy.start().catch(error => {\n console.error('Failed to start ONNX proxy:', error);\n process.exit(1);\n });\n\n // Graceful shutdown\n process.on('SIGINT', async () => {\n console.log('\\n🛑 Shutting down ONNX proxy...');\n await proxy.dispose();\n process.exit(0);\n });\n\n process.on('SIGTERM', async () => {\n console.log('\\n🛑 Shutting down ONNX proxy...');\n await proxy.dispose();\n process.exit(0);\n });\n}\n"]}