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,311 @@
1
+ /**
2
+ * Lazy Authentication with Session Caching
3
+ * Reduces auth overhead by 5-10% through session caching and lazy validation
4
+ * Phase 3 Optimization
5
+ */
6
+ /**
7
+ * Lazy Authentication Manager
8
+ * Caches validated sessions to avoid repeated authentication overhead
9
+ */
10
+ export class LazyAuthManager {
11
+ config;
12
+ sessions = new Map();
13
+ stats;
14
+ cleanupTimer;
15
+ validationQueue = new Set();
16
+ constructor(config) {
17
+ this.config = {
18
+ enabled: config.enabled,
19
+ ttl: config.ttl || 3600000, // 1 hour default
20
+ maxSessions: config.maxSessions || 1000,
21
+ checkInterval: config.checkInterval || 60000 // 1 minute
22
+ };
23
+ this.stats = {
24
+ totalValidations: 0,
25
+ cacheHits: 0,
26
+ cacheMisses: 0,
27
+ sessionsActive: 0,
28
+ sessionsCleaned: 0,
29
+ avgValidationTime: 0
30
+ };
31
+ if (this.config.enabled) {
32
+ this.startCleanupTimer();
33
+ }
34
+ }
35
+ /**
36
+ * Authenticate a token (lazy validation)
37
+ */
38
+ async authenticate(token, validateFn) {
39
+ if (!this.config.enabled) {
40
+ // No caching, always validate
41
+ const userId = await validateFn(token);
42
+ return this.createSession(token, userId, true);
43
+ }
44
+ // Check cache first
45
+ const cached = this.sessions.get(token);
46
+ if (cached && !this.isExpired(cached)) {
47
+ this.stats.cacheHits++;
48
+ cached.lastAccessedAt = Date.now();
49
+ return cached;
50
+ }
51
+ this.stats.cacheMisses++;
52
+ // Lazy validation: check if already being validated
53
+ if (this.validationQueue.has(token)) {
54
+ // Wait for ongoing validation
55
+ return this.waitForValidation(token);
56
+ }
57
+ // Perform validation
58
+ return this.validateAndCache(token, validateFn);
59
+ }
60
+ /**
61
+ * Validate token and cache the session
62
+ */
63
+ async validateAndCache(token, validateFn) {
64
+ this.validationQueue.add(token);
65
+ try {
66
+ const startTime = Date.now();
67
+ const userId = await validateFn(token);
68
+ const validationTime = Date.now() - startTime;
69
+ // Update average validation time
70
+ this.updateAvgValidationTime(validationTime);
71
+ this.stats.totalValidations++;
72
+ // Create and cache session
73
+ const session = this.createSession(token, userId, true);
74
+ this.cacheSession(session);
75
+ return session;
76
+ }
77
+ catch (error) {
78
+ return null;
79
+ }
80
+ finally {
81
+ this.validationQueue.delete(token);
82
+ }
83
+ }
84
+ /**
85
+ * Wait for ongoing validation
86
+ */
87
+ async waitForValidation(token) {
88
+ // Poll for validation completion (max 5 seconds)
89
+ const maxAttempts = 50;
90
+ let attempts = 0;
91
+ while (this.validationQueue.has(token) && attempts < maxAttempts) {
92
+ await new Promise(resolve => setTimeout(resolve, 100));
93
+ attempts++;
94
+ }
95
+ // Check cache after validation
96
+ const session = this.sessions.get(token);
97
+ return session && !this.isExpired(session) ? session : null;
98
+ }
99
+ /**
100
+ * Create a session object
101
+ */
102
+ createSession(token, userId, validated) {
103
+ const now = Date.now();
104
+ return {
105
+ token,
106
+ userId,
107
+ validated,
108
+ createdAt: now,
109
+ lastAccessedAt: now,
110
+ expiresAt: now + this.config.ttl
111
+ };
112
+ }
113
+ /**
114
+ * Cache a session
115
+ */
116
+ cacheSession(session) {
117
+ // Check max sessions limit
118
+ if (this.sessions.size >= this.config.maxSessions) {
119
+ this.evictOldest();
120
+ }
121
+ this.sessions.set(session.token, session);
122
+ this.stats.sessionsActive = this.sessions.size;
123
+ }
124
+ /**
125
+ * Check if session is expired
126
+ */
127
+ isExpired(session) {
128
+ return Date.now() > session.expiresAt;
129
+ }
130
+ /**
131
+ * Evict oldest session (LRU)
132
+ */
133
+ evictOldest() {
134
+ let oldest = null;
135
+ let oldestToken = null;
136
+ for (const [token, session] of this.sessions) {
137
+ if (!oldest || session.lastAccessedAt < oldest.lastAccessedAt) {
138
+ oldest = session;
139
+ oldestToken = token;
140
+ }
141
+ }
142
+ if (oldestToken) {
143
+ this.sessions.delete(oldestToken);
144
+ this.stats.sessionsCleaned++;
145
+ }
146
+ }
147
+ /**
148
+ * Update average validation time
149
+ */
150
+ updateAvgValidationTime(newTime) {
151
+ const total = this.stats.totalValidations;
152
+ const currentAvg = this.stats.avgValidationTime;
153
+ this.stats.avgValidationTime = (currentAvg * total + newTime) / (total + 1);
154
+ }
155
+ /**
156
+ * Start cleanup timer for expired sessions
157
+ */
158
+ startCleanupTimer() {
159
+ this.cleanupTimer = setInterval(() => {
160
+ this.cleanup();
161
+ }, this.config.checkInterval);
162
+ }
163
+ /**
164
+ * Clean up expired sessions
165
+ */
166
+ cleanup() {
167
+ const now = Date.now();
168
+ let cleaned = 0;
169
+ for (const [token, session] of this.sessions) {
170
+ if (now > session.expiresAt) {
171
+ this.sessions.delete(token);
172
+ cleaned++;
173
+ }
174
+ }
175
+ this.stats.sessionsCleaned += cleaned;
176
+ this.stats.sessionsActive = this.sessions.size;
177
+ }
178
+ /**
179
+ * Invalidate a session
180
+ */
181
+ invalidate(token) {
182
+ return this.sessions.delete(token);
183
+ }
184
+ /**
185
+ * Invalidate all sessions for a user
186
+ */
187
+ invalidateUser(userId) {
188
+ let count = 0;
189
+ for (const [token, session] of this.sessions) {
190
+ if (session.userId === userId) {
191
+ this.sessions.delete(token);
192
+ count++;
193
+ }
194
+ }
195
+ return count;
196
+ }
197
+ /**
198
+ * Get session if exists and valid
199
+ */
200
+ getSession(token) {
201
+ const session = this.sessions.get(token);
202
+ if (!session || this.isExpired(session)) {
203
+ return null;
204
+ }
205
+ session.lastAccessedAt = Date.now();
206
+ return session;
207
+ }
208
+ /**
209
+ * Get statistics
210
+ */
211
+ getStats() {
212
+ return { ...this.stats };
213
+ }
214
+ /**
215
+ * Get cache hit rate
216
+ */
217
+ getCacheHitRate() {
218
+ const total = this.stats.cacheHits + this.stats.cacheMisses;
219
+ return total > 0 ? (this.stats.cacheHits / total) * 100 : 0;
220
+ }
221
+ /**
222
+ * Reset statistics
223
+ */
224
+ resetStats() {
225
+ this.stats = {
226
+ totalValidations: 0,
227
+ cacheHits: 0,
228
+ cacheMisses: 0,
229
+ sessionsActive: this.sessions.size,
230
+ sessionsCleaned: 0,
231
+ avgValidationTime: 0
232
+ };
233
+ }
234
+ /**
235
+ * Clear all sessions
236
+ */
237
+ clear() {
238
+ this.sessions.clear();
239
+ this.stats.sessionsActive = 0;
240
+ }
241
+ /**
242
+ * Destroy manager and cleanup
243
+ */
244
+ destroy() {
245
+ if (this.cleanupTimer) {
246
+ clearInterval(this.cleanupTimer);
247
+ }
248
+ this.clear();
249
+ }
250
+ }
251
+ /**
252
+ * Token-based authentication helper
253
+ */
254
+ export class TokenAuth {
255
+ authManager;
256
+ validateFn;
257
+ constructor(authManager, validateFn) {
258
+ this.authManager = authManager;
259
+ this.validateFn = validateFn;
260
+ }
261
+ /**
262
+ * Authenticate a request
263
+ */
264
+ async authenticate(authHeader) {
265
+ // Extract token from header
266
+ const token = this.extractToken(authHeader);
267
+ if (!token) {
268
+ return null;
269
+ }
270
+ return this.authManager.authenticate(token, this.validateFn);
271
+ }
272
+ /**
273
+ * Extract token from Authorization header
274
+ */
275
+ extractToken(authHeader) {
276
+ if (!authHeader) {
277
+ return null;
278
+ }
279
+ // Support "Bearer <token>" and raw token
280
+ if (authHeader.startsWith('Bearer ')) {
281
+ return authHeader.substring(7);
282
+ }
283
+ return authHeader;
284
+ }
285
+ /**
286
+ * Invalidate token
287
+ */
288
+ invalidate(token) {
289
+ return this.authManager.invalidate(token);
290
+ }
291
+ /**
292
+ * Get statistics
293
+ */
294
+ getStats() {
295
+ return this.authManager.getStats();
296
+ }
297
+ }
298
+ /**
299
+ * Calculate auth overhead reduction
300
+ */
301
+ export function calculateAuthSavings(stats) {
302
+ const hitRate = stats.cacheHits / (stats.cacheHits + stats.cacheMisses);
303
+ const savingsPercentage = hitRate * 100;
304
+ const avgSavedTime = stats.avgValidationTime * hitRate;
305
+ const totalSavedTime = stats.avgValidationTime * stats.cacheHits;
306
+ return {
307
+ savingsPercentage,
308
+ avgSavedTime,
309
+ totalSavedTime
310
+ };
311
+ }
@@ -0,0 +1,19 @@
1
+ interface LogContext {
2
+ agent?: string;
3
+ task?: string;
4
+ duration?: number;
5
+ error?: unknown;
6
+ [key: string]: any;
7
+ }
8
+ declare class Logger {
9
+ private context;
10
+ setContext(ctx: Record<string, any>): void;
11
+ private log;
12
+ debug(message: string, data?: LogContext): void;
13
+ info(message: string, data?: LogContext): void;
14
+ warn(message: string, data?: LogContext): void;
15
+ error(message: string, data?: LogContext): void;
16
+ }
17
+ export declare const logger: Logger;
18
+ export {};
19
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,OAAO,CAA2B;IAE1C,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAInC,OAAO,CAAC,GAAG;IA4BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU;IAQxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU;IAQvC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU;IAQvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU;CAGzC;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -55,3 +55,4 @@ class Logger {
55
55
  }
56
56
  }
57
57
  export const logger = new Logger();
58
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM;IACF,OAAO,GAAwB,EAAE,CAAC;IAE1C,UAAU,CAAC,GAAwB;QACjC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC;IAC7C,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAAiB;QAC7D,gEAAgE;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG;YACf,SAAS;YACT,KAAK;YACL,OAAO;YACP,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,IAAI;SACR,CAAC;QAEF,yCAAyC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,MAAM,MAAM,GAAG,IAAI,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;gBACrE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,EAAE;gBACpD,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAiB;QACtC,sEAAsE;QACtE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAiB;QACrC,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAiB;QACrC,sCAAsC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAiB;QACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC","sourcesContent":["// Structured logging utility\ntype LogLevel = 'debug' | 'info' | 'warn' | 'error';\n\ninterface LogContext {\n agent?: string;\n task?: string;\n duration?: number;\n error?: unknown;\n [key: string]: any;\n}\n\nclass Logger {\n private context: Record<string, any> = {};\n\n setContext(ctx: Record<string, any>) {\n this.context = { ...this.context, ...ctx };\n }\n\n private log(level: LogLevel, message: string, data?: LogContext) {\n // Skip all logs if QUIET mode is enabled (unless it's an error)\n if (process.env.QUIET === 'true' && level !== 'error') {\n return;\n }\n\n const timestamp = new Date().toISOString();\n const logEntry = {\n timestamp,\n level,\n message,\n ...this.context,\n ...data\n };\n\n // Structured JSON logging for production\n if (process.env.NODE_ENV === 'production') {\n console.log(JSON.stringify(logEntry));\n } else {\n // Human-readable for development\n const prefix = `[${timestamp}] ${level.toUpperCase()}`;\n const contextStr = Object.keys({ ...this.context, ...data }).length > 0\n ? ` ${JSON.stringify({ ...this.context, ...data })}`\n : '';\n console.log(`${prefix}: ${message}${contextStr}`);\n }\n }\n\n debug(message: string, data?: LogContext) {\n // Skip debug logs unless DEBUG or VERBOSE environment variable is set\n if (!process.env.DEBUG && !process.env.VERBOSE) {\n return;\n }\n this.log('debug', message, data);\n }\n\n info(message: string, data?: LogContext) {\n // Skip info logs unless VERBOSE is set\n if (!process.env.DEBUG && !process.env.VERBOSE) {\n return;\n }\n this.log('info', message, data);\n }\n\n warn(message: string, data?: LogContext) {\n // Skip warnings unless VERBOSE is set\n if (!process.env.DEBUG && !process.env.VERBOSE) {\n return;\n }\n this.log('warn', message, data);\n }\n\n error(message: string, data?: LogContext) {\n this.log('error', message, data);\n }\n}\n\nexport const logger = new Logger();\n"]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Simple math utility functions
3
+ */
4
+ /**
5
+ * Adds 2 and 2 together
6
+ * @returns The sum of 2 + 2
7
+ * @example
8
+ * const result = addTwoPlusTwo();
9
+ * console.log(result); // Output: 4
10
+ */
11
+ export declare const addTwoPlusTwo: () => number;
12
+ //# sourceMappingURL=math.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,QAAO,MAEhC,CAAC"}
@@ -11,3 +11,4 @@
11
11
  export const addTwoPlusTwo = () => {
12
12
  return 2 + 2;
13
13
  };
14
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/utils/math.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAW,EAAE;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC;AACf,CAAC,CAAC","sourcesContent":["/**\n * Simple math utility functions\n */\n\n/**\n * Adds 2 and 2 together\n * @returns The sum of 2 + 2\n * @example\n * const result = addTwoPlusTwo();\n * console.log(result); // Output: 4\n */\nexport const addTwoPlusTwo = (): number => {\n return 2 + 2;\n};\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function handleMCPCommand(command: string, server?: string): Promise<void>;
2
+ //# sourceMappingURL=mcpCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpCommands.d.ts","sourceRoot":"","sources":["../../src/utils/mcpCommands.ts"],"names":[],"mappings":"AAsCA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7F"}
@@ -212,3 +212,4 @@ function getExampleTools(serverName) {
212
212
  return [];
213
213
  }
214
214
  }
215
+ //# sourceMappingURL=mcpCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpCommands.js","sourceRoot":"","sources":["../../src/utils/mcpCommands.ts"],"names":[],"mappings":"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","sourcesContent":["// MCP server management commands\nimport { spawn, exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\ninterface MCPServerConfig {\n name: string;\n command: string;\n args: string[];\n description: string;\n toolCount: number;\n}\n\nconst MCP_SERVERS: Record<string, MCPServerConfig> = {\n 'claude-flow': {\n name: 'claude-flow',\n command: 'npx',\n args: ['claude-flow@alpha', 'mcp', 'start'],\n description: '101 tools (neural networks, GitHub, workflows, DAA)',\n toolCount: 101\n },\n 'flow-nexus': {\n name: 'flow-nexus',\n command: 'npx',\n args: ['flow-nexus@latest', 'mcp', 'start'],\n description: '96 cloud tools (sandboxes, distributed swarms, templates)',\n toolCount: 96\n },\n 'agentic-payments': {\n name: 'agentic-payments',\n command: 'npx',\n args: ['-y', 'agentic-payments', 'mcp'],\n description: 'Payment authorization and multi-agent consensus',\n toolCount: 10\n }\n};\n\nexport async function handleMCPCommand(command: string, server: string = 'all'): Promise<void> {\n switch (command) {\n case 'start':\n await startMCPServers(server);\n break;\n case 'stop':\n await stopMCPServers(server);\n break;\n case 'status':\n await checkMCPStatus(server);\n break;\n case 'list':\n await listMCPTools(server);\n break;\n default:\n console.error(`āŒ Unknown MCP command: ${command}`);\n console.error('Available commands: start, stop, status, list');\n process.exit(1);\n }\n}\n\nasync function startMCPServers(server: string): Promise<void> {\n console.log(`\\nšŸš€ Starting MCP Server(s): ${server}\\n`);\n\n const serversToStart = server === 'all'\n ? Object.keys(MCP_SERVERS)\n : [server];\n\n for (const serverName of serversToStart) {\n const config = MCP_SERVERS[serverName];\n if (!config) {\n console.error(`āŒ Unknown server: ${serverName}`);\n continue;\n }\n\n console.log(`šŸ“¦ ${config.name}`);\n console.log(` ${config.description}`);\n console.log(` Command: ${config.command} ${config.args.join(' ')}`);\n console.log(` Status: Starting as subprocess...\\n`);\n\n // Start server in background\n const child = spawn(config.command, config.args, {\n detached: true,\n stdio: 'inherit',\n env: {\n ...process.env,\n MCP_AUTO_START: 'true'\n }\n });\n\n child.unref(); // Allow parent to exit independently\n }\n\n console.log(`\\nāœ… MCP server(s) started in background`);\n console.log(`šŸ’” Tip: Use 'npx agentic-flow mcp status' to check server status\\n`);\n}\n\nasync function stopMCPServers(server: string): Promise<void> {\n console.log(`\\nšŸ›‘ Stopping MCP Server(s): ${server}\\n`);\n\n const serversToStop = server === 'all'\n ? Object.keys(MCP_SERVERS)\n : [server];\n\n for (const serverName of serversToStop) {\n const config = MCP_SERVERS[serverName];\n if (!config) {\n console.error(`āŒ Unknown server: ${serverName}`);\n continue;\n }\n\n try {\n // Try to kill processes by name\n const killCommand = process.platform === 'win32'\n ? `taskkill /F /IM node.exe /FI \"WINDOWTITLE eq ${serverName}*\"`\n : `pkill -f \"${serverName}\"`;\n\n await execAsync(killCommand);\n console.log(`āœ… Stopped ${config.name}`);\n } catch (error: any) {\n if (error.code === 1) {\n console.log(`āš ļø ${config.name} not running`);\n } else {\n console.error(`āŒ Error stopping ${config.name}:`, error.message);\n }\n }\n }\n\n console.log();\n}\n\nasync function checkMCPStatus(server: string): Promise<void> {\n console.log(`\\nšŸ“Š MCP Server Status: ${server}\\n`);\n\n const serversToCheck = server === 'all'\n ? Object.keys(MCP_SERVERS)\n : [server];\n\n for (const serverName of serversToCheck) {\n const config = MCP_SERVERS[serverName];\n if (!config) {\n console.error(`āŒ Unknown server: ${serverName}`);\n continue;\n }\n\n console.log(`šŸ“¦ ${config.name}`);\n console.log(` Description: ${config.description}`);\n console.log(` Tool Count: ${config.toolCount}`);\n\n try {\n // Check if process is running\n const checkCommand = process.platform === 'win32'\n ? `tasklist /FI \"IMAGENAME eq node.exe\" /FO CSV | findstr /C:\"${serverName}\"`\n : `pgrep -f \"${serverName}\"`;\n\n const { stdout } = await execAsync(checkCommand);\n const isRunning = stdout.trim().length > 0;\n\n console.log(` Status: ${isRunning ? 'āœ… Running' : 'āš ļø Not running'}`);\n } catch (error) {\n console.log(` Status: āš ļø Not running`);\n }\n console.log();\n }\n}\n\nasync function listMCPTools(server: string): Promise<void> {\n console.log(`\\nšŸ“‹ MCP Tools Available\\n`);\n\n const serversToList = server === 'all'\n ? Object.keys(MCP_SERVERS)\n : [server];\n\n let totalTools = 0;\n\n for (const serverName of serversToList) {\n const config = MCP_SERVERS[serverName];\n if (!config) {\n console.error(`āŒ Unknown server: ${serverName}`);\n continue;\n }\n\n console.log(`\\nšŸ“¦ ${config.name.toUpperCase()} (${config.toolCount} tools)`);\n console.log(` ${config.description}`);\n console.log();\n\n totalTools += config.toolCount;\n\n // Show example tools based on server\n const examples = getExampleTools(serverName);\n examples.forEach(tool => {\n console.log(` • ${tool}`);\n });\n }\n\n // Add in-SDK tools\n console.log(`\\nšŸ“¦ CLAUDE-FLOW-SDK (6 in-process tools)`);\n console.log(` Fast, zero-latency tools running in-process`);\n console.log();\n console.log(` • memory_store - Store values in persistent memory`);\n console.log(` • memory_retrieve - Retrieve values from memory`);\n console.log(` • memory_list - List all memory keys`);\n console.log(` • swarm_init - Initialize agent swarms`);\n console.log(` • agent_spawn - Spawn specialized agents`);\n console.log(` • coordination_sync - Synchronize agent coordination`);\n\n totalTools += 6;\n\n console.log(`\\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);\n console.log(`šŸ“Š TOTAL: ${totalTools} MCP tools available`);\n console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n`);\n\n console.log(`šŸ’” Usage: Tools are automatically available to agents`);\n console.log(` npx agentic-flow --agent coder --task \"Your task\"\\n`);\n}\n\nfunction getExampleTools(serverName: string): string[] {\n switch (serverName) {\n case 'claude-flow':\n return [\n 'swarm_init - Initialize multi-agent swarms',\n 'agent_spawn - Create specialized AI agents',\n 'task_orchestrate - Orchestrate complex tasks',\n 'neural_train - Train neural networks with WASM',\n 'github_repo_analyze - Analyze GitHub repositories',\n 'workflow_create - Create automated workflows',\n 'daa_agent_create - Create autonomous agents',\n 'performance_report - Generate performance metrics',\n '... and 93 more tools'\n ];\n case 'flow-nexus':\n return [\n 'sandbox_create - Create isolated E2B sandboxes',\n 'sandbox_execute - Execute code in sandboxes',\n 'swarm_init - Initialize cloud-based swarms',\n 'neural_train - Distributed neural training',\n 'workflow_create - Event-driven workflows',\n 'template_deploy - Deploy project templates',\n 'user_login - Authenticate Flow Nexus users',\n 'storage_upload - Cloud file storage',\n '... and 88 more tools'\n ];\n case 'agentic-payments':\n return [\n 'create_active_mandate - Create payment authorization',\n 'sign_mandate - Sign with Ed25519 cryptography',\n 'verify_mandate - Verify payment signatures',\n 'revoke_mandate - Revoke authorizations',\n 'verify_consensus - Multi-agent consensus',\n 'generate_agent_identity - Create agent identities',\n '... and 4 more tools'\n ];\n default:\n return [];\n }\n}\n"]}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Automatic Model Downloader for ONNX Phi-4
3
+ *
4
+ * Downloads Phi-4 ONNX model from HuggingFace on first use
5
+ */
6
+ export interface DownloadProgress {
7
+ downloaded: number;
8
+ total: number;
9
+ percentage: number;
10
+ }
11
+ export interface ModelInfo {
12
+ repo: string;
13
+ filename: string;
14
+ localPath: string;
15
+ sha256?: string;
16
+ }
17
+ export declare class ModelDownloader {
18
+ private baseUrl;
19
+ /**
20
+ * Phi-4 Mini ONNX INT4 quantized model (CPU optimized)
21
+ * Size: ~52MB model + ~4.86GB data = ~4.9GB total
22
+ * Note: Requires TWO files - model.onnx and model.onnx.data
23
+ */
24
+ private phi4Model;
25
+ private phi4ModelData;
26
+ /**
27
+ * Check if model exists locally
28
+ */
29
+ isModelDownloaded(modelPath?: string): boolean;
30
+ /**
31
+ * Get model download URL
32
+ */
33
+ private getDownloadUrl;
34
+ /**
35
+ * Download model with progress tracking
36
+ */
37
+ downloadModel(modelInfo?: ModelInfo, onProgress?: (progress: DownloadProgress) => void): Promise<string>;
38
+ /**
39
+ * Download Phi-4 ONNX model if needed (downloads BOTH .onnx and .onnx.data files)
40
+ */
41
+ ensurePhi4Model(onProgress?: (progress: DownloadProgress) => void): Promise<string>;
42
+ /**
43
+ * Verify model file integrity (optional)
44
+ */
45
+ verifyModel(modelPath: string, expectedSha256?: string): Promise<boolean>;
46
+ /**
47
+ * Get model info
48
+ */
49
+ getModelInfo(): ModelInfo;
50
+ /**
51
+ * Format download progress for display
52
+ */
53
+ static formatProgress(progress: DownloadProgress): string;
54
+ }
55
+ /**
56
+ * Global singleton instance
57
+ */
58
+ export declare const modelDownloader: ModelDownloader;
59
+ /**
60
+ * Convenience function for downloading Phi-4 model
61
+ */
62
+ export declare function ensurePhi4Model(onProgress?: (progress: DownloadProgress) => void): Promise<string>;
63
+ //# sourceMappingURL=model-downloader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-downloader.d.ts","sourceRoot":"","sources":["../../src/utils/model-downloader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAA4B;IAE3C;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAIf;IAEF,OAAO,CAAC,aAAa,CAInB;IAEF;;OAEG;IACH,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAK9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACG,aAAa,CACjB,SAAS,CAAC,EAAE,SAAS,EACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,CAAC;IAkFlB;;OAEG;IACG,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IA+BzF;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyB/E;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;CAI1D;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAErD;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,CAAC,CAEjB"}
@@ -180,3 +180,4 @@ export const modelDownloader = new ModelDownloader();
180
180
  export async function ensurePhi4Model(onProgress) {
181
181
  return modelDownloader.ensurePhi4Model(onProgress);
182
182
  }
183
+ //# sourceMappingURL=model-downloader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-downloader.js","sourceRoot":"","sources":["../../src/utils/model-downloader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Automatic Model Downloader for ONNX Phi-4\n *\n * Downloads Phi-4 ONNX model from HuggingFace on first use\n */\n\nimport { createWriteStream, existsSync, mkdirSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { pipeline } from 'stream/promises';\nimport { createHash } from 'crypto';\nimport { readFileSync } from 'fs';\n\nexport interface DownloadProgress {\n downloaded: number;\n total: number;\n percentage: number;\n}\n\nexport interface ModelInfo {\n repo: string;\n filename: string;\n localPath: string;\n sha256?: string;\n}\n\nexport class ModelDownloader {\n private baseUrl = 'https://huggingface.co';\n\n /**\n * Phi-4 Mini ONNX INT4 quantized model (CPU optimized)\n * Size: ~52MB model + ~4.86GB data = ~4.9GB total\n * Note: Requires TWO files - model.onnx and model.onnx.data\n */\n private phi4Model: ModelInfo = {\n repo: 'microsoft/Phi-4-mini-instruct-onnx',\n filename: 'cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx',\n localPath: './models/phi-4-mini/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx'\n };\n\n private phi4ModelData: ModelInfo = {\n repo: 'microsoft/Phi-4-mini-instruct-onnx',\n filename: 'cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx.data',\n localPath: './models/phi-4-mini/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx.data'\n };\n\n /**\n * Check if model exists locally\n */\n isModelDownloaded(modelPath?: string): boolean {\n const path = modelPath || this.phi4Model.localPath;\n return existsSync(path);\n }\n\n /**\n * Get model download URL\n */\n private getDownloadUrl(model: ModelInfo): string {\n return `${this.baseUrl}/${model.repo}/resolve/main/${model.filename}`;\n }\n\n /**\n * Download model with progress tracking\n */\n async downloadModel(\n modelInfo?: ModelInfo,\n onProgress?: (progress: DownloadProgress) => void\n ): Promise<string> {\n const model = modelInfo || this.phi4Model;\n\n // Check if already downloaded\n if (this.isModelDownloaded(model.localPath)) {\n console.log(`āœ… Model already exists at ${model.localPath}`);\n return model.localPath;\n }\n\n // Create directory\n const dir = dirname(model.localPath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n const url = this.getDownloadUrl(model);\n console.log(`šŸ“¦ Downloading Phi-4 ONNX model from HuggingFace...`);\n console.log(` URL: ${url}`);\n console.log(` Destination: ${model.localPath}`);\n\n try {\n const response = await fetch(url);\n\n if (!response.ok) {\n throw new Error(`Download failed: ${response.statusText}`);\n }\n\n const totalSize = parseInt(response.headers.get('content-length') || '0', 10);\n let downloadedSize = 0;\n\n if (!response.body) {\n throw new Error('Response body is null');\n }\n\n const fileStream = createWriteStream(model.localPath);\n\n // Track progress\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) break;\n\n if (value) {\n chunks.push(value);\n downloadedSize += value.length;\n\n if (onProgress && totalSize > 0) {\n onProgress({\n downloaded: downloadedSize,\n total: totalSize,\n percentage: (downloadedSize / totalSize) * 100\n });\n }\n\n // Write chunk\n fileStream.write(value);\n }\n }\n\n fileStream.end();\n\n // Wait for file stream to finish\n await new Promise<void>((resolve, reject) => {\n fileStream.on('finish', () => resolve());\n fileStream.on('error', reject);\n });\n\n console.log(`āœ… Model downloaded successfully`);\n console.log(` Size: ${(downloadedSize / (1024 * 1024)).toFixed(2)} MB`);\n console.log(` Path: ${model.localPath}`);\n\n return model.localPath;\n\n } catch (error) {\n console.error(`āŒ Model download failed:`, error);\n throw new Error(`Failed to download model: ${error}`);\n }\n }\n\n /**\n * Download Phi-4 ONNX model if needed (downloads BOTH .onnx and .onnx.data files)\n */\n async ensurePhi4Model(onProgress?: (progress: DownloadProgress) => void): Promise<string> {\n const mainFileExists = this.isModelDownloaded(this.phi4Model.localPath);\n const dataFileExists = this.isModelDownloaded(this.phi4ModelData.localPath);\n\n if (mainFileExists && dataFileExists) {\n return this.phi4Model.localPath;\n }\n\n console.log(`šŸ” Phi-4-mini ONNX model not found locally`);\n console.log(`šŸ“„ Starting automatic download...`);\n console.log(` This is a one-time download (~4.9GB total)`);\n console.log(` Model: microsoft/Phi-4-mini-instruct-onnx (INT4 quantized)`);\n console.log(` Files: model.onnx (~52MB) + model.onnx.data (~4.86GB)`);\n console.log(``);\n\n // Download main model file if missing\n if (!mainFileExists) {\n console.log(`šŸ“¦ Downloading model.onnx...`);\n await this.downloadModel(this.phi4Model, onProgress);\n console.log(``);\n }\n\n // Download data file if missing\n if (!dataFileExists) {\n console.log(`šŸ“¦ Downloading model.onnx.data (this is the large 4.86GB file)...`);\n await this.downloadModel(this.phi4ModelData, onProgress);\n }\n\n return this.phi4Model.localPath;\n }\n\n /**\n * Verify model file integrity (optional)\n */\n async verifyModel(modelPath: string, expectedSha256?: string): Promise<boolean> {\n if (!expectedSha256) {\n return true; // Skip verification if no hash provided\n }\n\n try {\n const fileBuffer = readFileSync(modelPath);\n const hash = createHash('sha256').update(fileBuffer).digest('hex');\n\n if (hash !== expectedSha256) {\n console.error(`āŒ Model verification failed`);\n console.error(` Expected: ${expectedSha256}`);\n console.error(` Got: ${hash}`);\n return false;\n }\n\n console.log(`āœ… Model verification passed`);\n return true;\n\n } catch (error) {\n console.error(`āŒ Model verification error:`, error);\n return false;\n }\n }\n\n /**\n * Get model info\n */\n getModelInfo(): ModelInfo {\n return this.phi4Model;\n }\n\n /**\n * Format download progress for display\n */\n static formatProgress(progress: DownloadProgress): string {\n const mb = (bytes: number) => (bytes / (1024 * 1024)).toFixed(2);\n return `${progress.percentage.toFixed(1)}% (${mb(progress.downloaded)}/${mb(progress.total)} MB)`;\n }\n}\n\n/**\n * Global singleton instance\n */\nexport const modelDownloader = new ModelDownloader();\n\n/**\n * Convenience function for downloading Phi-4 model\n */\nexport async function ensurePhi4Model(\n onProgress?: (progress: DownloadProgress) => void\n): Promise<string> {\n return modelDownloader.ensurePhi4Model(onProgress);\n}\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Model Capability Detection
3
+ * Determines if a model supports native tool calling or requires emulation
4
+ */
5
+ export interface ModelCapabilities {
6
+ supportsNativeTools: boolean;
7
+ supportsStreaming: boolean;
8
+ contextWindow: number;
9
+ requiresEmulation: boolean;
10
+ emulationStrategy: 'none' | 'react' | 'prompt' | 'hybrid';
11
+ costPerMillionTokens: number;
12
+ provider: string;
13
+ }
14
+ /**
15
+ * Detect capabilities of a model
16
+ */
17
+ export declare function detectModelCapabilities(modelId: string): ModelCapabilities;
18
+ /**
19
+ * Check if model can handle a specific number of tools
20
+ */
21
+ export declare function canHandleToolCount(modelId: string, toolCount: number): boolean;
22
+ /**
23
+ * Recommend optimal strategy for a model
24
+ */
25
+ export declare function recommendStrategy(modelId: string, toolCount: number, taskComplexity: 'simple' | 'medium' | 'complex'): 'native' | 'react' | 'prompt' | 'hybrid';
26
+ /**
27
+ * Get human-readable capability report
28
+ */
29
+ export declare function getCapabilityReport(modelId: string): string;
30
+ //# sourceMappingURL=modelCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCapabilities.d.ts","sourceRoot":"","sources":["../../src/utils/modelCapabilities.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,iBAAiB;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4LD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CA0C1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAU9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAC9C,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAiB1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAuB3D"}
@@ -274,3 +274,4 @@ export function getCapabilityReport(modelId) {
274
274
  report += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`;
275
275
  return report;
276
276
  }
277
+ //# sourceMappingURL=modelCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelCapabilities.js","sourceRoot":"","sources":["../../src/utils/modelCapabilities.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model Capability Detection\n * Determines if a model supports native tool calling or requires emulation\n */\n\nexport interface ModelCapabilities {\n supportsNativeTools: boolean;\n supportsStreaming: boolean;\n contextWindow: number;\n requiresEmulation: boolean;\n emulationStrategy: 'none' | 'react' | 'prompt' | 'hybrid';\n costPerMillionTokens: number;\n provider: string;\n}\n\n/**\n * Database of known model capabilities\n * Updated periodically as new models are released\n */\nconst MODEL_CAPABILITIES: Record<string, Partial<ModelCapabilities>> = {\n // OpenRouter - Native Tool Support\n 'deepseek/deepseek-chat': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.15\n },\n 'deepseek/deepseek-chat-v3': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.15\n },\n 'meta-llama/llama-3.3-70b-instruct': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.40\n },\n 'qwen/qwen-2.5-coder-32b-instruct': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.23\n },\n 'mistralai/mistral-small-3.1-24b-instruct': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.30\n },\n\n // OpenAI Models (via OpenRouter/Requesty)\n 'openai/gpt-4o': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 2.50\n },\n 'openai/gpt-4o-mini': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.15\n },\n 'openai/gpt-4-turbo': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 10.00\n },\n\n // OpenRouter - No Native Tool Support (Require Emulation)\n 'mistralai/mistral-7b-instruct': {\n supportsNativeTools: false,\n contextWindow: 32000,\n requiresEmulation: true,\n emulationStrategy: 'react', // Best for this model\n costPerMillionTokens: 0.07\n },\n 'meta-llama/llama-2-13b-chat': {\n supportsNativeTools: false,\n contextWindow: 4096,\n requiresEmulation: true,\n emulationStrategy: 'prompt', // Simple prompting works best\n costPerMillionTokens: 0.05\n },\n 'google/gemma-7b-it': {\n supportsNativeTools: false,\n contextWindow: 8192,\n requiresEmulation: true,\n emulationStrategy: 'prompt',\n costPerMillionTokens: 0.07\n },\n 'thudm/glm-4-9b:free': {\n supportsNativeTools: false, // Free tier limited\n contextWindow: 32000,\n requiresEmulation: true,\n emulationStrategy: 'react',\n costPerMillionTokens: 0.0 // FREE\n },\n\n // Anthropic - Native Tool Support\n 'claude-3-5-sonnet-20241022': {\n supportsNativeTools: true,\n contextWindow: 200000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 3.0\n },\n 'claude-3-5-haiku-20241022': {\n supportsNativeTools: true,\n contextWindow: 200000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.80\n },\n\n // Gemini - Native Tool Support\n 'gemini-2.0-flash-exp': {\n supportsNativeTools: true,\n contextWindow: 1000000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.0 // FREE tier\n },\n\n // OpenAI - Native Tool Support\n 'gpt-4o': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 2.50\n },\n 'gpt-4o-mini': {\n supportsNativeTools: true,\n contextWindow: 128000,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.15\n },\n 'gpt-3.5-turbo': {\n supportsNativeTools: true,\n contextWindow: 16385,\n requiresEmulation: false,\n emulationStrategy: 'none',\n costPerMillionTokens: 0.50\n }\n};\n\n/**\n * Pattern matching for model families\n */\nconst MODEL_PATTERNS: Array<{\n pattern: RegExp;\n capabilities: Partial<ModelCapabilities>;\n}> = [\n {\n pattern: /^claude-3/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /^gpt-(4|3\\.5)/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /^gemini-/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /deepseek\\/deepseek-(chat|coder)/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /llama-3\\.(3|2|1)-.*instruct/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /qwen.*2\\.5/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n {\n pattern: /mistral.*large|mistral.*small/,\n capabilities: { supportsNativeTools: true, requiresEmulation: false }\n },\n // Older models typically don't support tools\n {\n pattern: /llama-2|mistral-7b|gemma-.*7b/,\n capabilities: { supportsNativeTools: false, requiresEmulation: true, emulationStrategy: 'react' }\n }\n];\n\n/**\n * Detect capabilities of a model\n */\nexport function detectModelCapabilities(modelId: string): ModelCapabilities {\n // Direct lookup\n if (MODEL_CAPABILITIES[modelId]) {\n return {\n supportsNativeTools: false,\n supportsStreaming: true,\n contextWindow: 4096,\n requiresEmulation: true,\n emulationStrategy: 'prompt',\n costPerMillionTokens: 0.5,\n provider: 'unknown',\n ...MODEL_CAPABILITIES[modelId]\n };\n }\n\n // Pattern matching\n for (const { pattern, capabilities } of MODEL_PATTERNS) {\n if (pattern.test(modelId)) {\n return {\n supportsNativeTools: false,\n supportsStreaming: true,\n contextWindow: 4096,\n requiresEmulation: true,\n emulationStrategy: 'prompt',\n costPerMillionTokens: 0.5,\n provider: 'unknown',\n ...capabilities\n };\n }\n }\n\n // Unknown model - assume needs emulation (conservative)\n console.warn(`āš ļø Unknown model: ${modelId}. Assuming no native tool support.`);\n return {\n supportsNativeTools: false,\n supportsStreaming: true,\n contextWindow: 4096,\n requiresEmulation: true,\n emulationStrategy: 'prompt',\n costPerMillionTokens: 0.5,\n provider: 'unknown'\n };\n}\n\n/**\n * Check if model can handle a specific number of tools\n */\nexport function canHandleToolCount(modelId: string, toolCount: number): boolean {\n const capabilities = detectModelCapabilities(modelId);\n\n // Estimate: Each tool ~100 tokens of schema\n const estimatedTokens = toolCount * 100;\n\n // Need at least 20% of context window free for actual conversation\n const maxToolTokens = capabilities.contextWindow * 0.8;\n\n return estimatedTokens <= maxToolTokens;\n}\n\n/**\n * Recommend optimal strategy for a model\n */\nexport function recommendStrategy(\n modelId: string,\n toolCount: number,\n taskComplexity: 'simple' | 'medium' | 'complex'\n): 'native' | 'react' | 'prompt' | 'hybrid' {\n const capabilities = detectModelCapabilities(modelId);\n\n if (capabilities.supportsNativeTools) {\n return 'native';\n }\n\n // For emulation, choose based on context and complexity\n if (toolCount > 10 || taskComplexity === 'complex') {\n return 'react'; // More robust for complex scenarios\n }\n\n if (capabilities.contextWindow < 8000) {\n return 'prompt'; // Simpler for small context windows\n }\n\n return 'react'; // Default to ReAct pattern\n}\n\n/**\n * Get human-readable capability report\n */\nexport function getCapabilityReport(modelId: string): string {\n const cap = detectModelCapabilities(modelId);\n\n let report = `\\nšŸ“Š Model Capabilities: ${modelId}\\n`;\n report += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n`;\n report += `Native Tool Support: ${cap.supportsNativeTools ? 'āœ… Yes' : 'āŒ No'}\\n`;\n report += `Context Window: ${cap.contextWindow.toLocaleString()} tokens\\n`;\n report += `Streaming: ${cap.supportsStreaming ? 'āœ… Yes' : 'āŒ No'}\\n`;\n report += `Cost per 1M tokens: $${cap.costPerMillionTokens}\\n`;\n\n if (cap.requiresEmulation) {\n report += `\\nāš™ļø Emulation Required\\n`;\n report += `Recommended Strategy: ${cap.emulationStrategy.toUpperCase()}\\n`;\n report += `\\nNote: This model will use prompt-based tool emulation.\\n`;\n report += `Expect 70-85% reliability vs 95%+ for native tool support.\\n`;\n } else {\n report += `\\nāœ… No Emulation Needed\\n`;\n report += `This model natively supports function calling.\\n`;\n }\n\n report += `━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\\n`;\n\n return report;\n}\n"]}