agentic-flow 1.10.1 โ†’ 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 (554) 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/agentBoosterPreprocessor.d.ts +72 -0
  480. package/dist/utils/agentBoosterPreprocessor.d.ts.map +1 -0
  481. package/dist/utils/agentBoosterPreprocessor.js +1 -0
  482. package/dist/utils/agentBoosterPreprocessor.js.map +1 -0
  483. package/dist/utils/agentLoader.d.ts +22 -0
  484. package/dist/utils/agentLoader.d.ts.map +1 -0
  485. package/dist/utils/agentLoader.js +1 -0
  486. package/dist/utils/agentLoader.js.map +1 -0
  487. package/dist/utils/agentdb-runtime-patch.d.ts +28 -0
  488. package/dist/utils/agentdb-runtime-patch.d.ts.map +1 -0
  489. package/dist/utils/agentdb-runtime-patch.js +1 -0
  490. package/dist/utils/agentdb-runtime-patch.js.map +1 -0
  491. package/dist/utils/auth.d.ts +13 -0
  492. package/dist/utils/auth.d.ts.map +1 -0
  493. package/dist/utils/auth.js +1 -0
  494. package/dist/utils/auth.js.map +1 -0
  495. package/dist/utils/cli.d.ts +31 -0
  496. package/dist/utils/cli.d.ts.map +1 -0
  497. package/dist/utils/cli.js +1 -0
  498. package/dist/utils/cli.js.map +1 -0
  499. package/dist/utils/compression-middleware.d.ts +55 -0
  500. package/dist/utils/compression-middleware.d.ts.map +1 -0
  501. package/dist/utils/compression-middleware.js +1 -0
  502. package/dist/utils/compression-middleware.js.map +1 -0
  503. package/dist/utils/connection-pool.d.ts +30 -0
  504. package/dist/utils/connection-pool.d.ts.map +1 -0
  505. package/dist/utils/connection-pool.js +1 -0
  506. package/dist/utils/connection-pool.js.map +1 -0
  507. package/dist/utils/logger.d.ts +19 -0
  508. package/dist/utils/logger.d.ts.map +1 -0
  509. package/dist/utils/logger.js +1 -0
  510. package/dist/utils/logger.js.map +1 -0
  511. package/dist/utils/math.d.ts +12 -0
  512. package/dist/utils/math.d.ts.map +1 -0
  513. package/dist/utils/math.js +1 -0
  514. package/dist/utils/math.js.map +1 -0
  515. package/dist/utils/mcpCommands.d.ts +2 -0
  516. package/dist/utils/mcpCommands.d.ts.map +1 -0
  517. package/dist/utils/mcpCommands.js +1 -0
  518. package/dist/utils/mcpCommands.js.map +1 -0
  519. package/dist/utils/model-downloader.d.ts +63 -0
  520. package/dist/utils/model-downloader.d.ts.map +1 -0
  521. package/dist/utils/model-downloader.js +1 -0
  522. package/dist/utils/model-downloader.js.map +1 -0
  523. package/dist/utils/modelCapabilities.d.ts +30 -0
  524. package/dist/utils/modelCapabilities.d.ts.map +1 -0
  525. package/dist/utils/modelCapabilities.js +1 -0
  526. package/dist/utils/modelCapabilities.js.map +1 -0
  527. package/dist/utils/modelOptimizer.d.ts +207 -0
  528. package/dist/utils/modelOptimizer.d.ts.map +1 -0
  529. package/dist/utils/modelOptimizer.js +1 -0
  530. package/dist/utils/modelOptimizer.js.map +1 -0
  531. package/dist/utils/rate-limiter.d.ts +17 -0
  532. package/dist/utils/rate-limiter.d.ts.map +1 -0
  533. package/dist/utils/rate-limiter.js +1 -0
  534. package/dist/utils/rate-limiter.js.map +1 -0
  535. package/dist/utils/reasoningbankCommands.d.ts +6 -0
  536. package/dist/utils/reasoningbankCommands.d.ts.map +1 -0
  537. package/dist/utils/reasoningbankCommands.js +1 -0
  538. package/dist/utils/reasoningbankCommands.js.map +1 -0
  539. package/dist/utils/response-cache.d.ts +94 -0
  540. package/dist/utils/response-cache.d.ts.map +1 -0
  541. package/dist/utils/response-cache.js +1 -0
  542. package/dist/utils/response-cache.js.map +1 -0
  543. package/dist/utils/retry.d.ts +9 -0
  544. package/dist/utils/retry.d.ts.map +1 -0
  545. package/dist/utils/retry.js +1 -0
  546. package/dist/utils/retry.js.map +1 -0
  547. package/dist/utils/streaming-optimizer.d.ts +37 -0
  548. package/dist/utils/streaming-optimizer.d.ts.map +1 -0
  549. package/dist/utils/streaming-optimizer.js +1 -0
  550. package/dist/utils/streaming-optimizer.js.map +1 -0
  551. package/package.json +1 -1
  552. package/docs/PHASE2-IMPLEMENTATION-SUMMARY.md +0 -275
  553. package/docs/PHASE2-PHASE3-COMPLETE-SUMMARY.md +0 -453
  554. package/docs/PHASE3-IMPLEMENTATION-SUMMARY.md +0 -357
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/router/providers/openrouter.ts"],"names":[],"mappings":"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","sourcesContent":["// OpenRouter provider implementation\nimport axios, { AxiosInstance } from 'axios';\nimport {\n LLMProvider,\n ChatParams,\n ChatResponse,\n StreamChunk,\n ProviderConfig,\n ProviderError,\n ContentBlock,\n Tool\n} from '../types.js';\nimport { mapModelId } from '../model-mapping.js';\n\nexport class OpenRouterProvider implements LLMProvider {\n name = 'openrouter';\n type = 'openrouter' as const;\n supportsStreaming = true;\n supportsTools = true;\n supportsMCP = false; // Requires translation\n\n private client: AxiosInstance;\n private config: ProviderConfig;\n\n constructor(config: ProviderConfig) {\n this.config = config;\n\n if (!config.apiKey) {\n throw new Error('OpenRouter API key is required');\n }\n\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://openrouter.ai/api/v1',\n headers: {\n 'Authorization': `Bearer ${config.apiKey}`,\n 'HTTP-Referer': 'https://github.com/ruvnet/agentic-flow',\n 'X-Title': 'Agentic Flow Multi-Model Router',\n 'Content-Type': 'application/json'\n },\n timeout: config.timeout || 180000\n });\n }\n\n validateCapabilities(features: string[]): boolean {\n const supported = ['chat', 'streaming', 'tools'];\n return features.every(f => supported.includes(f));\n }\n\n async chat(params: ChatParams): Promise<ChatResponse> {\n try {\n const requestBody = this.formatRequest(params);\n\n const response = await this.client.post('/chat/completions', requestBody);\n\n return this.formatResponse(response.data, params.model);\n } catch (error: any) {\n throw this.handleError(error);\n }\n }\n\n async *stream(params: ChatParams): AsyncGenerator<StreamChunk> {\n try {\n const requestBody = this.formatRequest(params, true);\n\n const response = await this.client.post('/chat/completions', requestBody, {\n responseType: 'stream'\n });\n\n for await (const chunk of response.data) {\n const lines = chunk.toString().split('\\n').filter((line: string) => line.trim() !== '');\n\n for (const line of lines) {\n if (line.startsWith('data: ')) {\n const data = line.slice(6);\n\n if (data === '[DONE]') {\n yield { type: 'message_stop' };\n return;\n }\n\n try {\n const parsed = JSON.parse(data);\n const streamChunk = this.formatStreamChunk(parsed);\n if (streamChunk) {\n yield streamChunk;\n }\n } catch (e) {\n // Skip invalid JSON\n }\n }\n }\n }\n } catch (error: any) {\n throw this.handleError(error);\n }\n }\n\n private formatRequest(params: ChatParams, stream = false): any {\n const messages = params.messages.map(msg => ({\n role: msg.role,\n content: typeof msg.content === 'string'\n ? msg.content\n : msg.content.map(block => {\n if (block.type === 'text') return { type: 'text', text: block.text };\n if (block.type === 'tool_use') return {\n type: 'function',\n function: {\n name: block.name,\n arguments: JSON.stringify(block.input)\n }\n };\n if (block.type === 'tool_result') return {\n type: 'function_result',\n content: block.content,\n is_error: block.is_error\n };\n return block;\n })\n }));\n\n // Map model ID to OpenRouter format\n const openrouterModel = mapModelId(params.model, 'openrouter');\n\n const body: any = {\n model: openrouterModel,\n messages,\n temperature: params.temperature ?? 0.7,\n max_tokens: params.maxTokens,\n stream\n };\n\n // Add tools if provided\n if (params.tools && params.tools.length > 0) {\n body.tools = params.tools.map(tool => ({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.input_schema\n }\n }));\n\n if (params.toolChoice) {\n if (params.toolChoice === 'auto' || params.toolChoice === 'none') {\n body.tool_choice = params.toolChoice;\n } else if (typeof params.toolChoice === 'object') {\n body.tool_choice = {\n type: 'function',\n function: { name: params.toolChoice.name }\n };\n }\n }\n }\n\n // Add OpenRouter-specific preferences\n if (this.config.preferences) {\n if (this.config.preferences.requireParameters) {\n body.require_parameters = true;\n }\n if (this.config.preferences.dataCollection) {\n body['X-Data-Collection'] = this.config.preferences.dataCollection;\n }\n if (this.config.preferences.order) {\n body.provider = {\n order: this.config.preferences.order\n };\n }\n }\n\n return body;\n }\n\n private formatResponse(data: any, model: string): ChatResponse {\n const choice = data.choices[0];\n const message = choice.message;\n\n const content: ContentBlock[] = [];\n\n // Handle text content\n if (message.content) {\n content.push({\n type: 'text',\n text: message.content\n });\n }\n\n // Handle tool calls\n if (message.tool_calls) {\n for (const toolCall of message.tool_calls) {\n content.push({\n type: 'tool_use',\n id: toolCall.id,\n name: toolCall.function.name,\n input: JSON.parse(toolCall.function.arguments)\n });\n }\n }\n\n const stopReason = this.mapFinishReason(choice.finish_reason);\n\n return {\n id: data.id,\n model: data.model || model,\n content,\n stopReason,\n usage: {\n inputTokens: data.usage?.prompt_tokens || 0,\n outputTokens: data.usage?.completion_tokens || 0\n },\n metadata: {\n provider: 'openrouter',\n cost: this.calculateCost(data.usage),\n latency: 0 // Will be set by router\n }\n };\n }\n\n private formatStreamChunk(data: any): StreamChunk | null {\n const choice = data.choices?.[0];\n if (!choice) return null;\n\n const delta = choice.delta;\n\n if (delta?.content) {\n return {\n type: 'content_block_delta',\n delta: {\n type: 'text_delta',\n text: delta.content\n }\n };\n }\n\n if (delta?.tool_calls) {\n const toolCall = delta.tool_calls[0];\n return {\n type: 'content_block_delta',\n delta: {\n type: 'input_json_delta',\n partial_json: toolCall.function?.arguments || ''\n }\n };\n }\n\n if (choice.finish_reason) {\n return {\n type: 'message_stop',\n usage: data.usage ? {\n inputTokens: data.usage.prompt_tokens || 0,\n outputTokens: data.usage.completion_tokens || 0\n } : undefined\n };\n }\n\n return null;\n }\n\n private mapFinishReason(reason: string): ChatResponse['stopReason'] {\n switch (reason) {\n case 'stop': return 'end_turn';\n case 'length': return 'max_tokens';\n case 'tool_calls': return 'tool_use';\n default: return 'end_turn';\n }\n }\n\n private calculateCost(usage?: { prompt_tokens?: number; completion_tokens?: number }): number {\n if (!usage) return 0;\n\n // OpenRouter pricing varies by model\n // Using average pricing: $0.01/1K input, $0.03/1K output\n const inputCost = (usage.prompt_tokens || 0) * 0.00001;\n const outputCost = (usage.completion_tokens || 0) * 0.00003;\n\n return inputCost + outputCost;\n }\n\n private handleError(error: any): ProviderError {\n const providerError = new Error(\n error.response?.data?.error?.message || error.message || 'OpenRouter request failed'\n ) as ProviderError;\n\n providerError.provider = 'openrouter';\n providerError.statusCode = error.response?.status;\n providerError.retryable = error.response?.status >= 500 || error.code === 'ECONNABORTED';\n\n return providerError;\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import { LLMProvider, RouterConfig, ChatParams, ChatResponse, StreamChunk, ProviderType, RouterMetrics } from './types.js';
2
+ export declare class ModelRouter {
3
+ private config;
4
+ private providers;
5
+ private metrics;
6
+ constructor(configPath?: string);
7
+ private loadConfig;
8
+ private createConfigFromEnv;
9
+ private substituteEnvVars;
10
+ private initializeProviders;
11
+ private initializeMetrics;
12
+ chat(params: ChatParams, agentType?: string): Promise<ChatResponse>;
13
+ stream(params: ChatParams, agentType?: string): AsyncGenerator<StreamChunk>;
14
+ private selectProvider;
15
+ private getDefaultProvider;
16
+ private selectByRules;
17
+ private matchesRule;
18
+ private selectByCost;
19
+ private selectByPerformance;
20
+ private handleProviderError;
21
+ private updateMetrics;
22
+ getMetrics(): RouterMetrics;
23
+ getConfig(): RouterConfig;
24
+ getProviders(): Map<ProviderType, LLMProvider>;
25
+ }
26
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EAEd,MAAM,YAAY,CAAC;AAMpB,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,OAAO,CAAgB;gBAEnB,UAAU,CAAC,EAAE,MAAM;IAM/B,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,mBAAmB;IAyC3B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;IAwD3B,OAAO,CAAC,iBAAiB;IAUnB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBlE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC;YAiBpE,cAAc;IA8B5B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,mBAAmB;YAqBb,mBAAmB;IA4BjC,OAAO,CAAC,aAAa;IA6CrB,UAAU,IAAI,aAAa;IAI3B,SAAS,IAAI,YAAY;IAIzB,YAAY,IAAI,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC;CAG/C"}
@@ -347,3 +347,4 @@ export class ModelRouter {
347
347
  return new Map(this.providers);
348
348
  }
349
349
  }
350
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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","sourcesContent":["// Multi-model router core implementation\nimport { readFileSync, existsSync } from 'fs';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport {\n LLMProvider,\n RouterConfig,\n ChatParams,\n ChatResponse,\n StreamChunk,\n ProviderType,\n RouterMetrics,\n ProviderError\n} from './types.js';\nimport { OpenRouterProvider } from './providers/openrouter.js';\nimport { AnthropicProvider } from './providers/anthropic.js';\nimport { ONNXLocalProvider } from './providers/onnx-local.js';\nimport { GeminiProvider } from './providers/gemini.js';\n\nexport class ModelRouter {\n private config: RouterConfig;\n private providers: Map<ProviderType, LLMProvider> = new Map();\n private metrics: RouterMetrics;\n\n constructor(configPath?: string) {\n this.config = this.loadConfig(configPath);\n this.initializeProviders();\n this.metrics = this.initializeMetrics();\n }\n\n private loadConfig(configPath?: string): RouterConfig {\n const paths = [\n configPath,\n process.env.AGENTIC_FLOW_ROUTER_CONFIG,\n join(homedir(), '.agentic-flow', 'router.config.json'),\n join(process.cwd(), 'router.config.json'),\n join(process.cwd(), 'config', 'router.config.json'),\n join(process.cwd(), 'router.config.example.json')\n ].filter(Boolean) as string[];\n\n for (const path of paths) {\n if (existsSync(path)) {\n const content = readFileSync(path, 'utf-8');\n const config = JSON.parse(content);\n\n // Substitute environment variables\n return this.substituteEnvVars(config);\n }\n }\n\n // If no config file found, create config from environment variables\n return this.createConfigFromEnv();\n }\n\n private createConfigFromEnv(): RouterConfig {\n // Create minimal config from environment variables\n const config: any = {\n version: '1.0',\n defaultProvider: (process.env.PROVIDER as any) || 'anthropic',\n routing: { mode: 'manual' as const },\n providers: {} as any\n };\n\n // Add Anthropic if API key exists\n if (process.env.ANTHROPIC_API_KEY) {\n config.providers.anthropic = {\n apiKey: process.env.ANTHROPIC_API_KEY,\n baseUrl: process.env.ANTHROPIC_BASE_URL\n };\n }\n\n // Add OpenRouter if API key exists\n if (process.env.OPENROUTER_API_KEY) {\n config.providers.openrouter = {\n apiKey: process.env.OPENROUTER_API_KEY,\n baseUrl: process.env.OPENROUTER_BASE_URL\n };\n }\n\n // Add Gemini if API key exists\n if (process.env.GOOGLE_GEMINI_API_KEY) {\n config.providers.gemini = {\n apiKey: process.env.GOOGLE_GEMINI_API_KEY\n };\n }\n\n // ONNX is always available (no API key needed)\n config.providers.onnx = {\n modelPath: process.env.ONNX_MODEL_PATH,\n executionProviders: ['cpu']\n };\n\n return config as RouterConfig;\n }\n\n private substituteEnvVars(obj: any): any {\n if (typeof obj === 'string') {\n // Replace ${VAR_NAME} with environment variable value\n return obj.replace(/\\$\\{([^}]+)\\}/g, (_, key) => {\n const [varName, defaultValue] = key.split(':-');\n return process.env[varName] || defaultValue || '';\n });\n }\n\n if (Array.isArray(obj)) {\n return obj.map(item => this.substituteEnvVars(item));\n }\n\n if (obj && typeof obj === 'object') {\n const result: any = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = this.substituteEnvVars(value);\n }\n return result;\n }\n\n return obj;\n }\n\n private initializeProviders(): void {\n const verbose = process.env.ROUTER_VERBOSE === 'true';\n\n // Initialize Anthropic\n if (this.config.providers.anthropic) {\n try {\n const provider = new AnthropicProvider(this.config.providers.anthropic);\n this.providers.set('anthropic', provider);\n if (verbose) console.log('โœ… Anthropic provider initialized');\n } catch (error) {\n if (verbose) console.error('โŒ Failed to initialize Anthropic:', error);\n }\n }\n\n // Initialize OpenRouter\n if (this.config.providers.openrouter) {\n try {\n const provider = new OpenRouterProvider(this.config.providers.openrouter);\n this.providers.set('openrouter', provider);\n if (verbose) console.log('โœ… OpenRouter provider initialized');\n } catch (error) {\n if (verbose) console.error('โŒ Failed to initialize OpenRouter:', error);\n }\n }\n\n // Initialize ONNX Local\n if (this.config.providers.onnx) {\n try {\n const provider = new ONNXLocalProvider({\n modelPath: this.config.providers.onnx.modelPath || './models/phi-4/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx',\n executionProviders: this.config.providers.onnx.executionProviders || ['cpu'],\n maxTokens: this.config.providers.onnx.maxTokens || 100,\n temperature: this.config.providers.onnx.temperature || 0.7\n });\n this.providers.set('onnx', provider);\n if (verbose) console.log('โœ… ONNX Local provider initialized');\n } catch (error) {\n if (verbose) console.error('โŒ Failed to initialize ONNX:', error);\n }\n }\n\n // Initialize Gemini\n if (this.config.providers.gemini) {\n try {\n const provider = new GeminiProvider(this.config.providers.gemini);\n this.providers.set('gemini', provider);\n if (verbose) console.log('โœ… Gemini provider initialized');\n } catch (error) {\n if (verbose) console.error('โŒ Failed to initialize Gemini:', error);\n }\n }\n\n // TODO: Initialize other providers (OpenAI, Ollama, LiteLLM)\n // Will be implemented in Phase 1\n }\n\n private initializeMetrics(): RouterMetrics {\n return {\n totalRequests: 0,\n totalCost: 0,\n totalTokens: { input: 0, output: 0 },\n providerBreakdown: {},\n agentBreakdown: {}\n };\n }\n\n async chat(params: ChatParams, agentType?: string): Promise<ChatResponse> {\n const startTime = Date.now();\n const provider = await this.selectProvider(params, agentType);\n\n try {\n const response = await provider.chat(params);\n\n // Update metrics\n this.updateMetrics(provider.name, response, Date.now() - startTime, agentType);\n\n // Add metadata\n response.metadata = {\n ...response.metadata,\n provider: provider.name,\n latency: Date.now() - startTime\n };\n\n return response;\n } catch (error) {\n return this.handleProviderError(error as ProviderError, params, agentType);\n }\n }\n\n async *stream(params: ChatParams, agentType?: string): AsyncGenerator<StreamChunk> {\n const provider = await this.selectProvider(params, agentType);\n\n if (!provider.stream) {\n throw new Error(`Provider ${provider.name} does not support streaming`);\n }\n\n try {\n const iterator = provider.stream(params);\n for await (const chunk of iterator) {\n yield chunk;\n }\n } catch (error) {\n throw error;\n }\n }\n\n private async selectProvider(params: ChatParams, agentType?: string): Promise<LLMProvider> {\n // If provider is explicitly specified in params, use it\n if (params.provider) {\n const forcedProvider = this.providers.get(params.provider as ProviderType);\n if (forcedProvider) {\n return forcedProvider;\n }\n console.warn(`โš ๏ธ Requested provider '${params.provider}' not available, falling back to routing logic`);\n }\n\n const routingMode = this.config.routing?.mode || 'manual';\n\n switch (routingMode) {\n case 'manual':\n return this.getDefaultProvider();\n\n case 'rule-based':\n return this.selectByRules(params, agentType);\n\n case 'cost-optimized':\n return this.selectByCost(params);\n\n case 'performance-optimized':\n return this.selectByPerformance(params);\n\n default:\n return this.getDefaultProvider();\n }\n }\n\n private getDefaultProvider(): LLMProvider {\n const provider = this.providers.get(this.config.defaultProvider);\n if (!provider) {\n throw new Error(`Default provider ${this.config.defaultProvider} not initialized`);\n }\n return provider;\n }\n\n private selectByRules(params: ChatParams, agentType?: string): LLMProvider {\n const rules = this.config.routing?.rules || [];\n\n for (const rule of rules) {\n if (this.matchesRule(rule.condition, params, agentType)) {\n const provider = this.providers.get(rule.action.provider);\n if (provider) {\n console.log(`๐ŸŽฏ Routing via rule: ${rule.reason || 'matched condition'}`);\n return provider;\n }\n }\n }\n\n return this.getDefaultProvider();\n }\n\n private matchesRule(condition: any, params: ChatParams, agentType?: string): boolean {\n if (condition.agentType && agentType) {\n if (!condition.agentType.includes(agentType)) {\n return false;\n }\n }\n\n if (condition.requiresTools !== undefined) {\n if (condition.requiresTools && (!params.tools || params.tools.length === 0)) {\n return false;\n }\n }\n\n // TODO: Add more condition matching logic\n\n return true;\n }\n\n private selectByCost(params: ChatParams): LLMProvider {\n // For now, prefer cheaper providers\n // TODO: Implement actual cost calculation\n const providerOrder: ProviderType[] = ['openrouter', 'anthropic', 'openai'];\n\n for (const providerType of providerOrder) {\n const provider = this.providers.get(providerType);\n if (provider) {\n console.log(`๐Ÿ’ฐ Cost-optimized routing: selected ${provider.name}`);\n return provider;\n }\n }\n\n return this.getDefaultProvider();\n }\n\n private selectByPerformance(params: ChatParams): LLMProvider {\n // For now, use metrics to select fastest provider\n let fastestProvider: LLMProvider | null = null;\n let lowestLatency = Infinity;\n\n for (const [providerType, provider] of this.providers) {\n const breakdown = this.metrics.providerBreakdown[providerType];\n if (breakdown && breakdown.avgLatency < lowestLatency) {\n lowestLatency = breakdown.avgLatency;\n fastestProvider = provider;\n }\n }\n\n if (fastestProvider) {\n console.log(`โšก Performance-optimized routing: selected ${fastestProvider.name}`);\n return fastestProvider;\n }\n\n return this.getDefaultProvider();\n }\n\n private async handleProviderError(\n error: ProviderError,\n params: ChatParams,\n agentType?: string\n ): Promise<ChatResponse> {\n console.error(`โŒ Provider error from ${error.provider}:`, error.message);\n\n // Try fallback chain\n const fallbackChain = this.config.fallbackChain || [];\n\n for (const providerType of fallbackChain) {\n if (providerType === error.provider) continue; // Skip failed provider\n\n const provider = this.providers.get(providerType);\n if (provider) {\n console.log(`๐Ÿ”„ Falling back to ${provider.name}`);\n try {\n return await provider.chat(params);\n } catch (fallbackError) {\n console.error(`โŒ Fallback provider ${provider.name} also failed`);\n continue;\n }\n }\n }\n\n throw error; // No fallback succeeded\n }\n\n private updateMetrics(\n providerName: string,\n response: ChatResponse,\n latency: number,\n agentType?: string\n ): void {\n this.metrics.totalRequests++;\n\n if (response.usage) {\n this.metrics.totalTokens.input += response.usage.inputTokens;\n this.metrics.totalTokens.output += response.usage.outputTokens;\n }\n\n if (response.metadata?.cost) {\n this.metrics.totalCost += response.metadata.cost;\n }\n\n // Provider breakdown\n if (!this.metrics.providerBreakdown[providerName]) {\n this.metrics.providerBreakdown[providerName] = {\n requests: 0,\n cost: 0,\n avgLatency: 0,\n errors: 0\n };\n }\n\n const breakdown = this.metrics.providerBreakdown[providerName];\n breakdown.requests++;\n breakdown.cost += response.metadata?.cost || 0;\n breakdown.avgLatency = (breakdown.avgLatency * (breakdown.requests - 1) + latency) / breakdown.requests;\n\n // Agent breakdown\n if (agentType) {\n if (!this.metrics.agentBreakdown) {\n this.metrics.agentBreakdown = {};\n }\n if (!this.metrics.agentBreakdown[agentType]) {\n this.metrics.agentBreakdown[agentType] = { requests: 0, cost: 0 };\n }\n this.metrics.agentBreakdown[agentType].requests++;\n this.metrics.agentBreakdown[agentType].cost += response.metadata?.cost || 0;\n }\n }\n\n getMetrics(): RouterMetrics {\n return { ...this.metrics };\n }\n\n getConfig(): RouterConfig {\n return { ...this.config };\n }\n\n getProviders(): Map<ProviderType, LLMProvider> {\n return new Map(this.providers);\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Comprehensive Integration Test for agentic-flow with Claude Agent SDK + ONNX
4
+ *
5
+ * Tests:
6
+ * 1. Router initialization with all providers
7
+ * 2. ONNX local inference integration
8
+ * 3. Rule-based routing (privacy โ†’ ONNX)
9
+ * 4. Multi-provider fallback chain
10
+ * 5. Cost tracking and metrics
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=test-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-integration.d.ts","sourceRoot":"","sources":["../../src/router/test-integration.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -138,3 +138,4 @@ runIntegrationTests().catch(error => {
138
138
  console.error('Fatal error:', error);
139
139
  process.exit(1);
140
140
  });
141
+ //# sourceMappingURL=test-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-integration.js","sourceRoot":"","sources":["../../src/router/test-integration.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Comprehensive Integration Test for agentic-flow with Claude Agent SDK + ONNX\n *\n * Tests:\n * 1. Router initialization with all providers\n * 2. ONNX local inference integration\n * 3. Rule-based routing (privacy โ†’ ONNX)\n * 4. Multi-provider fallback chain\n * 5. Cost tracking and metrics\n */\n\nimport { ModelRouter } from './router.js';\n\nasync function runIntegrationTests() {\n console.log('๐Ÿงช agentic-flow Integration Test Suite\\n');\n console.log('Testing: Claude Agent SDK + ONNX Runtime Integration');\n console.log('='.repeat(60) + '\\n');\n\n try {\n // Test 1: Router Initialization\n console.log('Test 1: Router Initialization');\n console.log('==============================');\n\n const router = new ModelRouter();\n const config = router.getConfig();\n\n console.log(`โœ… Router initialized`);\n console.log(` Default Provider: ${config.defaultProvider}`);\n console.log(` Fallback Chain: ${config.fallbackChain?.join(' โ†’ ')}`);\n console.log(` Routing Mode: ${config.routing?.mode}`);\n console.log('');\n\n // Test 2: ONNX Provider Integration\n console.log('Test 2: ONNX Local Inference');\n console.log('==============================');\n\n const onnxResponse = await router.chat({\n model: 'microsoft/Phi-4-mini-instruct-onnx',\n messages: [\n { role: 'user', content: 'What is 2+2?' }\n ],\n maxTokens: 20\n });\n\n console.log(`โœ… ONNX inference successful`);\n console.log(` Provider: ${onnxResponse.metadata?.provider}`);\n console.log(` Response: ${onnxResponse.content[0].type === 'text' ? onnxResponse.content[0].text : 'N/A'}`);\n console.log(` Latency: ${onnxResponse.metadata?.latency}ms`);\n console.log(` Cost: $${onnxResponse.metadata?.cost || 0}`);\n console.log(` Tokens: ${onnxResponse.usage?.inputTokens} in / ${onnxResponse.usage?.outputTokens} out`);\n console.log('');\n\n // Test 3: Rule-Based Routing (Privacy โ†’ ONNX)\n console.log('Test 3: Privacy-Based Routing');\n console.log('==============================');\n\n const privacyResponse = await router.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'Sensitive medical question: What is diabetes?' }\n ],\n maxTokens: 30,\n metadata: { privacy: 'high', localOnly: true }\n });\n\n console.log(`โœ… Privacy routing successful`);\n console.log(` Provider: ${privacyResponse.metadata?.provider}`);\n console.log(` Expected: onnx (local inference)`);\n console.log(` Cost: $${privacyResponse.metadata?.cost || 0}`);\n console.log('');\n\n // Test 4: Cost-Optimized Routing\n console.log('Test 4: Cost-Optimized Routing');\n console.log('================================');\n\n const costResponse = await router.chat({\n model: 'claude-3-5-sonnet-20241022',\n messages: [\n { role: 'user', content: 'Simple task: Count to 3' }\n ],\n maxTokens: 20\n }, 'researcher');\n\n console.log(`โœ… Cost routing successful`);\n console.log(` Provider: ${costResponse.metadata?.provider}`);\n console.log(` Cost: $${costResponse.metadata?.cost || 0}`);\n console.log('');\n\n // Test 5: Metrics & Analytics\n console.log('Test 5: Metrics & Analytics');\n console.log('============================');\n\n const metrics = router.getMetrics();\n console.log(`๐Ÿ“Š Total Requests: ${metrics.totalRequests}`);\n console.log(`๐Ÿ’ฐ Total Cost: $${metrics.totalCost.toFixed(4)}`);\n console.log(`๐Ÿ“ Total Tokens: ${metrics.totalTokens.input} in / ${metrics.totalTokens.output} out`);\n console.log('');\n\n console.log('Provider Breakdown:');\n for (const [provider, stats] of Object.entries(metrics.providerBreakdown)) {\n console.log(` ${provider}:`);\n console.log(` Requests: ${stats.requests}`);\n console.log(` Cost: $${stats.cost.toFixed(4)}`);\n console.log(` Avg Latency: ${stats.avgLatency.toFixed(0)}ms`);\n }\n console.log('');\n\n // Test 6: Integration Architecture\n console.log('Test 6: Architecture Validation');\n console.log('=================================');\n\n console.log('โœ… Components Verified:');\n console.log(' [โœ“] ModelRouter - Multi-provider orchestration');\n console.log(' [โœ“] ONNXLocalProvider - Local CPU inference');\n console.log(' [โœ“] AnthropicProvider - Cloud API fallback');\n console.log(' [โœ“] OpenRouterProvider - Multi-model routing');\n console.log(' [โœ“] Rule-based routing - Privacy/cost optimization');\n console.log(' [โœ“] Metrics tracking - Cost & performance monitoring');\n console.log('');\n\n // Final Summary\n console.log('\\n' + '='.repeat(60));\n console.log('๐ŸŽ‰ Integration Test Suite Complete!');\n console.log('='.repeat(60));\n\n console.log('\\nโœ… All Tests Passed!');\n console.log('');\n console.log('Integration Confirmed:');\n console.log(' โœ“ agentic-flow multi-model router');\n console.log(' โœ“ Claude Agent SDK (Anthropic + OpenRouter)');\n console.log(' โœ“ ONNX Runtime local inference');\n console.log(' โœ“ Privacy-based routing rules');\n console.log(' โœ“ Cost optimization');\n console.log(' โœ“ Performance metrics');\n console.log('');\n\n console.log('Architecture Summary:');\n console.log(' โ€ข Router orchestrates 3+ providers');\n console.log(' โ€ข ONNX provides free local inference');\n console.log(' โ€ข Anthropic/OpenRouter for cloud fallback');\n console.log(' โ€ข Rule-based routing for privacy/cost');\n console.log(' โ€ข Complete metrics & cost tracking');\n console.log('');\n\n console.log('Cost Analysis:');\n console.log(` โ€ข ONNX Local: $0.00 (100% free)`);\n console.log(` โ€ข Total Spent: $${metrics.totalCost.toFixed(4)}`);\n console.log(` โ€ข Privacy Requests: Routed to ONNX (free)`);\n console.log('');\n\n } catch (error) {\n console.error('\\nโŒ Integration Test Failed!');\n console.error('===============================');\n console.error(error);\n process.exit(1);\n }\n}\n\n// Run tests\nrunIntegrationTests().catch(error => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Comprehensive benchmark for ONNX local inference
4
+ * Tests CPU performance against targets
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=test-onnx-benchmark.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-benchmark.d.ts","sourceRoot":"","sources":["../../src/router/test-onnx-benchmark.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -143,3 +143,4 @@ runBenchmark().catch(error => {
143
143
  console.error('โŒ Benchmark failed:', error);
144
144
  process.exit(1);
145
145
  });
146
+ //# sourceMappingURL=test-onnx-benchmark.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-benchmark.js","sourceRoot":"","sources":["../../src/router/test-onnx-benchmark.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Comprehensive benchmark for ONNX local inference\n * Tests CPU performance against targets\n */\n\nimport { ONNXLocalProvider } from './providers/onnx-local.js';\n\ninterface BenchmarkResult {\n test: string;\n tokens: number;\n latency: number;\n tokensPerSecond: number;\n}\n\nasync function runBenchmark() {\n console.log('๐Ÿ ONNX Local Inference Benchmark (Phi-4 CPU)\\n');\n console.log('Target: 15-25 tokens/sec on CPU');\n console.log('================================================\\n');\n\n const provider = new ONNXLocalProvider({\n modelPath: './models/phi-4/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx',\n executionProviders: ['cpu'],\n maxTokens: 50,\n temperature: 0.7\n });\n\n const results: BenchmarkResult[] = [];\n\n // Test 1: Short response\n console.log('Test 1: Short Response (Math)');\n console.log('==============================');\n\n const test1Start = Date.now();\n const response1 = await provider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'What is 2+2?' }\n ],\n maxTokens: 20\n });\n const test1Latency = Date.now() - test1Start;\n const test1TPS = (response1.usage?.outputTokens || 0) / (test1Latency / 1000);\n\n console.log(`โœ… Response: ${response1.content[0].type === 'text' ? response1.content[0].text : ''}`);\n console.log(`โฑ๏ธ ${test1Latency}ms | ${test1TPS.toFixed(1)} tokens/sec\\n`);\n\n results.push({\n test: 'Short Math',\n tokens: response1.usage?.outputTokens || 0,\n latency: test1Latency,\n tokensPerSecond: test1TPS\n });\n\n // Test 2: Medium response\n console.log('Test 2: Medium Response (Reasoning)');\n console.log('=====================================');\n\n const test2Start = Date.now();\n const response2 = await provider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'Explain why the sky is blue in one sentence.' }\n ],\n maxTokens: 30\n });\n const test2Latency = Date.now() - test2Start;\n const test2TPS = (response2.usage?.outputTokens || 0) / (test2Latency / 1000);\n\n console.log(`โœ… Response: ${response2.content[0].type === 'text' ? response2.content[0].text : ''}`);\n console.log(`โฑ๏ธ ${test2Latency}ms | ${test2TPS.toFixed(1)} tokens/sec\\n`);\n\n results.push({\n test: 'Medium Reasoning',\n tokens: response2.usage?.outputTokens || 0,\n latency: test2Latency,\n tokensPerSecond: test2TPS\n });\n\n // Test 3: Longer response\n console.log('Test 3: Longer Response (Creative)');\n console.log('====================================');\n\n const test3Start = Date.now();\n const response3 = await provider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'List 5 programming languages.' }\n ],\n maxTokens: 50\n });\n const test3Latency = Date.now() - test3Start;\n const test3TPS = (response3.usage?.outputTokens || 0) / (test3Latency / 1000);\n\n console.log(`โœ… Response: ${response3.content[0].type === 'text' ? response3.content[0].text : ''}`);\n console.log(`โฑ๏ธ ${test3Latency}ms | ${test3TPS.toFixed(1)} tokens/sec\\n`);\n\n results.push({\n test: 'Longer Creative',\n tokens: response3.usage?.outputTokens || 0,\n latency: test3Latency,\n tokensPerSecond: test3TPS\n });\n\n // Test 4: Multi-turn conversation\n console.log('Test 4: Multi-Turn Conversation');\n console.log('================================');\n\n const test4Start = Date.now();\n const response4 = await provider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'Hello!' },\n { role: 'assistant', content: 'Hello! How can I help you today?' },\n { role: 'user', content: 'Tell me a fun fact about computers.' }\n ],\n maxTokens: 40\n });\n const test4Latency = Date.now() - test4Start;\n const test4TPS = (response4.usage?.outputTokens || 0) / (test4Latency / 1000);\n\n console.log(`โœ… Response: ${response4.content[0].type === 'text' ? response4.content[0].text : ''}`);\n console.log(`โฑ๏ธ ${test4Latency}ms | ${test4TPS.toFixed(1)} tokens/sec\\n`);\n\n results.push({\n test: 'Multi-Turn',\n tokens: response4.usage?.outputTokens || 0,\n latency: test4Latency,\n tokensPerSecond: test4TPS\n });\n\n // Summary\n console.log('\\n๐Ÿ“Š Benchmark Summary');\n console.log('====================\\n');\n\n const avgTPS = results.reduce((sum, r) => sum + r.tokensPerSecond, 0) / results.length;\n const avgLatency = results.reduce((sum, r) => sum + r.latency, 0) / results.length;\n const totalTokens = results.reduce((sum, r) => sum + r.tokens, 0);\n\n console.table(results.map(r => ({\n Test: r.test,\n Tokens: r.tokens,\n 'Latency (ms)': r.latency,\n 'Tokens/Sec': r.tokensPerSecond.toFixed(1)\n })));\n\n console.log(`\\n๐Ÿ“ˆ Performance Metrics:`);\n console.log(` Average Tokens/Sec: ${avgTPS.toFixed(1)}`);\n console.log(` Average Latency: ${avgLatency.toFixed(0)}ms`);\n console.log(` Total Tokens Generated: ${totalTokens}`);\n\n console.log(`\\n๐ŸŽฏ Target Validation:`);\n const targetMin = 15;\n const targetMax = 25;\n\n if (avgTPS >= targetMin && avgTPS <= targetMax * 1.5) {\n console.log(` โœ… PASS: ${avgTPS.toFixed(1)} tokens/sec is within acceptable range`);\n } else if (avgTPS < targetMin) {\n console.log(` โš ๏ธ SLOW: ${avgTPS.toFixed(1)} tokens/sec is below target (${targetMin}+)`);\n } else {\n console.log(` ๐Ÿš€ FAST: ${avgTPS.toFixed(1)} tokens/sec exceeds target!`);\n }\n\n console.log(`\\n๐Ÿ’ฐ Cost Savings:`);\n console.log(` Local Inference: $0.00`);\n console.log(` Anthropic Equivalent: ~$${(totalTokens * 0.00003).toFixed(4)}`);\n console.log(` Savings: 100%`);\n\n console.log(`\\n๐Ÿ”’ Privacy:`);\n console.log(` โœ… All processing local`);\n console.log(` โœ… No data sent to cloud`);\n console.log(` โœ… GDPR/HIPAA compliant`);\n\n await provider.dispose();\n}\n\nrunBenchmark().catch(error => {\n console.error('โŒ Benchmark failed:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ONNX Integration Test - Validates agentic-flow works with ONNX
4
+ *
5
+ * Tests ONNX provider integration with the multi-model router
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=test-onnx-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-integration.d.ts","sourceRoot":"","sources":["../../src/router/test-onnx-integration.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -126,3 +126,4 @@ testONNXIntegration().catch(error => {
126
126
  console.error('Fatal error:', error);
127
127
  process.exit(1);
128
128
  });
129
+ //# sourceMappingURL=test-onnx-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-integration.js","sourceRoot":"","sources":["../../src/router/test-onnx-integration.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,KAAK,UAAU,mBAAmB;IAChC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,qCAAqC;QACrC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAE9C,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,4BAA4B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAEnD,6BAA6B;QAC7B,MAAM,YAAY,GAAI,MAAc,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,0BAA0B,YAAY,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAE7C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC;YACvC,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;aAC1C;YACD,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtG,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,CAAC,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,4BAA4B;QAC5B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,wBAAwB,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAC/D,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,6CAA6C,WAAW,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;YAC5F,OAAO,CAAC,GAAG,CAAC,uBAAuB,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAEnC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,eAAe,aAAa,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAElB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,WAAW;AACX,mBAAmB,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IAClC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * ONNX Integration Test - Validates agentic-flow works with ONNX\n *\n * Tests ONNX provider integration with the multi-model router\n */\n\nimport { ModelRouter } from './router.js';\n\nasync function testONNXIntegration() {\n console.log('๐Ÿงช agentic-flow + ONNX Runtime Integration Test\\n');\n console.log('='.repeat(60));\n console.log('Testing: Multi-Model Router with ONNX Local Inference');\n console.log('='.repeat(60) + '\\n');\n\n try {\n // Initialize router (ONNX-only mode)\n console.log('Step 1: Router Initialization');\n console.log('==============================');\n\n const router = new ModelRouter();\n const config = router.getConfig();\n\n console.log(`โœ… Router initialized successfully`);\n console.log(` Version: ${config.version}`);\n console.log(` Default Provider: ${config.defaultProvider}`);\n console.log(` Fallback Chain: ${config.fallbackChain?.join(' โ†’ ')}`);\n console.log(` Routing Mode: ${config.routing?.mode}`);\n console.log(` Providers Configured: ${Object.keys(config.providers).length}`);\n console.log('');\n\n // Test ONNX provider\n console.log('Step 2: ONNX Provider Direct Test');\n console.log('===================================');\n\n // Get ONNX provider directly\n const onnxProvider = (router as any).providers.get('onnx');\n\n if (!onnxProvider) {\n throw new Error('ONNX provider not initialized');\n }\n\n console.log(`โœ… ONNX provider found: ${onnxProvider.name}`);\n console.log(` Type: ${onnxProvider.type}`);\n console.log(` Supports Streaming: ${onnxProvider.supportsStreaming}`);\n console.log(` Supports Tools: ${onnxProvider.supportsTools}`);\n console.log('');\n\n // Test inference\n console.log('Step 3: ONNX Inference Test');\n console.log('=============================');\n\n const response = await onnxProvider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'What is 2+2?' }\n ],\n maxTokens: 20\n });\n\n console.log(`โœ… Inference successful`);\n console.log(` Response: ${response.content[0].type === 'text' ? response.content[0].text : 'N/A'}`);\n console.log(` Model: ${response.model}`);\n console.log(` Latency: ${response.metadata?.latency}ms`);\n console.log(` Tokens/Sec: ${response.metadata?.tokensPerSecond}`);\n console.log(` Cost: $${response.metadata?.cost || 0}`);\n console.log(` Input Tokens: ${response.usage?.inputTokens}`);\n console.log(` Output Tokens: ${response.usage?.outputTokens}`);\n console.log('');\n\n // Test router configuration\n console.log('Step 4: Router Configuration Validation');\n console.log('=========================================');\n\n const onnxConfig = config.providers.onnx;\n console.log(`โœ… ONNX Configuration:`);\n console.log(` Model Path: ${onnxConfig?.modelPath || 'default'}`);\n console.log(` Execution Providers: ${onnxConfig?.executionProviders?.join(', ')}`);\n console.log(` Max Tokens: ${onnxConfig?.maxTokens}`);\n console.log(` Temperature: ${onnxConfig?.temperature}`);\n console.log(` Local Inference: ${onnxConfig?.localInference}`);\n console.log(` GPU Acceleration: ${onnxConfig?.gpuAcceleration}`);\n console.log('');\n\n // Test routing rules\n console.log('Step 5: Privacy Routing Rule Validation');\n console.log('=========================================');\n\n const privacyRule = config.routing?.rules?.find(r =>\n r.condition.privacy === 'high' && r.action.provider === 'onnx'\n );\n\n if (privacyRule) {\n console.log(`โœ… Privacy routing rule configured:`);\n console.log(` Condition: privacy = high, localOnly = ${privacyRule.condition.localOnly}`);\n console.log(` Action: Route to ${privacyRule.action.provider}`);\n console.log(` Reason: ${privacyRule.reason}`);\n } else {\n console.log(`โš ๏ธ Privacy routing rule not found (optional)`);\n }\n console.log('');\n\n // Architecture summary\n console.log('\\n' + '='.repeat(60));\n console.log('โœ… Integration Test Complete!');\n console.log('='.repeat(60) + '\\n');\n\n console.log('Integration Confirmed:');\n console.log(' โœ“ agentic-flow multi-model router working');\n console.log(' โœ“ ONNX Runtime provider integrated');\n console.log(' โœ“ Local CPU inference operational');\n console.log(' โœ“ Configuration loaded successfully');\n console.log(' โœ“ Privacy routing rules configured');\n console.log('');\n\n console.log('Architecture Details:');\n console.log(' โ€ข Router: ModelRouter class');\n console.log(' โ€ข ONNX Provider: ONNXLocalProvider');\n console.log(' โ€ข Model: Microsoft Phi-4-mini-instruct-onnx (INT4)');\n console.log(' โ€ข Execution: CPU-only local inference');\n console.log(' โ€ข KV Cache: 32-layer autoregressive generation');\n console.log(' โ€ข Cost: $0.00 per request (100% free)');\n console.log('');\n\n console.log('Performance:');\n console.log(` โ€ข Latency: ${response.metadata?.latency}ms`);\n console.log(` โ€ข Throughput: ${response.metadata?.tokensPerSecond} tokens/sec`);\n console.log(` โ€ข Privacy: 100% local processing`);\n console.log(` โ€ข Cost: $0.00 (free inference)`);\n console.log('');\n\n console.log('Use Cases:');\n console.log(' โ€ข Privacy-sensitive data processing');\n console.log(' โ€ข GDPR/HIPAA compliant inference');\n console.log(' โ€ข Offline operation (no internet)');\n console.log(' โ€ข Zero-cost development/testing');\n console.log(' โ€ข Medical/legal document analysis');\n console.log('');\n\n } catch (error) {\n console.error('\\nโŒ Integration Test Failed!');\n console.error('==============================');\n console.error(error);\n process.exit(1);\n }\n}\n\n// Run test\ntestONNXIntegration().catch(error => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test ONNX local inference with Phi-4 model
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=test-onnx-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-local.d.ts","sourceRoot":"","sources":["../../src/router/test-onnx-local.ts"],"names":[],"mappings":";AACA;;GAEG"}
@@ -35,3 +35,4 @@ async function testONNXLocal() {
35
35
  }
36
36
  }
37
37
  testONNXLocal();
38
+ //# sourceMappingURL=test-onnx-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx-local.js","sourceRoot":"","sources":["../../src/router/test-onnx-local.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,KAAK,UAAU,aAAa;IAC1B,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;YACrC,SAAS,EAAE,4EAA4E;YACvF,kBAAkB,EAAE,CAAC,KAAK,CAAC;YAC3B,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;YACnC,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE;aAC1C;YACD,SAAS,EAAE,EAAE;SACd,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,KAAK,EAAE,WAAW,SAAS,QAAQ,CAAC,KAAK,EAAE,YAAY,MAAM,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEjF,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEhC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAE3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,aAAa,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n/**\n * Test ONNX local inference with Phi-4 model\n */\n\nimport { ONNXLocalProvider } from './providers/onnx-local.js';\n\nasync function testONNXLocal() {\n console.log('๐Ÿงช Testing ONNX Local Inference (Phi-4 CPU)\\n');\n\n try {\n const provider = new ONNXLocalProvider({\n modelPath: './models/phi-4/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx',\n executionProviders: ['cpu'],\n maxTokens: 50\n });\n\n console.log('Test: Simple Inference');\n console.log('======================');\n\n const response = await provider.chat({\n model: 'phi-4',\n messages: [\n { role: 'user', content: 'What is 2+2?' }\n ],\n maxTokens: 20\n });\n\n console.log('\\n๐Ÿ“ฅ Response:');\n console.log(` Text: ${response.content[0].type === 'text' ? response.content[0].text : ''}`);\n console.log(` Latency: ${response.metadata?.latency}ms`);\n console.log(` Tokens: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);\n console.log(` Cost: $${response.metadata?.cost}`);\n console.log(` Providers: ${response.metadata?.executionProviders?.join(', ')}`);\n\n console.log('\\nโœ… Test passed!');\n\n await provider.dispose();\n\n } catch (error) {\n console.error('\\nโŒ Test failed:', error);\n process.exit(1);\n }\n}\n\ntestONNXLocal();\n"]}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test script for ONNX Runtime integration
4
+ * Tests CPU inference with Phi-3 model
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=test-onnx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx.d.ts","sourceRoot":"","sources":["../../src/router/test-onnx.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -146,3 +146,4 @@ testONNXProvider().catch(error => {
146
146
  console.error('Fatal error:', error);
147
147
  process.exit(1);
148
148
  });
149
+ //# sourceMappingURL=test-onnx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-onnx.js","sourceRoot":"","sources":["../../src/router/test-onnx.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Test script for ONNX Runtime integration\n * Tests CPU inference with Phi-3 model\n */\n\nimport { ONNXProvider } from './providers/onnx.js';\n\nasync function testONNXProvider() {\n console.log('๐Ÿงช Testing ONNX Runtime Provider\\n');\n\n try {\n // Test 1: Initialize ONNX provider\n console.log('Test 1: Provider Initialization');\n console.log('================================');\n\n const provider = new ONNXProvider({\n modelId: 'Xenova/Phi-3-mini-4k-instruct',\n maxTokens: 100,\n temperature: 0.7\n });\n\n console.log(`โœ… Provider initialized: ${provider.name}`);\n console.log(`๐Ÿ“Š Supports streaming: ${provider.supportsStreaming}`);\n console.log(`๐Ÿ”ง Supports tools: ${provider.supportsTools}\\n`);\n\n // Test 2: Simple chat completion\n console.log('Test 2: Chat Completion (CPU)');\n console.log('==============================');\n\n const chatParams = {\n model: 'Xenova/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'Say \"Hello from ONNX Runtime!\" and nothing else.'\n }\n ],\n maxTokens: 50,\n temperature: 0.5\n };\n\n console.log(`๐Ÿ“ค Sending request...`);\n console.log(`๐Ÿ“ Prompt: ${chatParams.messages[0].content}\\n`);\n\n const startTime = Date.now();\n const response = await provider.chat(chatParams);\n const latency = Date.now() - startTime;\n\n console.log('๐Ÿ“ฅ Response received:');\n console.log(` Provider: ${response.metadata?.provider}`);\n console.log(` Model: ${response.model}`);\n console.log(` Latency: ${latency}ms`);\n console.log(` Stop Reason: ${response.stopReason}`);\n console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);\n console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0} (FREE - Local inference)`);\n console.log(` Execution Providers: ${response.metadata?.executionProviders?.join(', ')}`);\n console.log(`\\n Content:`);\n\n for (const block of response.content) {\n if (block.type === 'text') {\n console.log(` ${block.text}`);\n }\n }\n\n console.log('\\nโœ… Test 2 passed!\\n');\n\n // Test 3: Multi-turn conversation\n console.log('Test 3: Multi-Turn Conversation');\n console.log('================================');\n\n const conversationParams = {\n model: 'Xenova/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'What is 2+2?'\n },\n {\n role: 'assistant' as const,\n content: '4'\n },\n {\n role: 'user' as const,\n content: 'What about 2+3?'\n }\n ],\n maxTokens: 50,\n temperature: 0.3\n };\n\n console.log(`๐Ÿ“ค Multi-turn conversation...`);\n const convResponse = await provider.chat(conversationParams);\n\n console.log('๐Ÿ“ฅ Response:');\n console.log(` Content: ${convResponse.content[0].type === 'text' ? convResponse.content[0].text : 'N/A'}`);\n console.log('\\nโœ… Test 3 passed!\\n');\n\n // Test 4: Model info\n console.log('Test 4: Model Information');\n console.log('=========================');\n\n const modelInfo = provider.getModelInfo();\n console.log(`๐Ÿ“Š Model ID: ${modelInfo.modelId}`);\n console.log(`๐Ÿ”ง Execution Providers: ${modelInfo.executionProviders.join(', ')}`);\n console.log(`โšก GPU Support: ${modelInfo.supportsGPU ? 'Yes' : 'No (CPU only)'}`);\n console.log(`โœ“ Initialized: ${modelInfo.initialized}`);\n console.log('\\nโœ… Test 4 passed!\\n');\n\n // Test 5: Performance benchmark\n console.log('Test 5: Performance Benchmark');\n console.log('=============================');\n\n const benchmarkParams = {\n model: 'Xenova/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'Count from 1 to 5.'\n }\n ],\n maxTokens: 50,\n temperature: 0.5\n };\n\n const benchmarkRuns = 3;\n const latencies: number[] = [];\n\n for (let i = 0; i < benchmarkRuns; i++) {\n const start = Date.now();\n await provider.chat(benchmarkParams);\n const duration = Date.now() - start;\n latencies.push(duration);\n console.log(` Run ${i + 1}: ${duration}ms`);\n }\n\n const avgLatency = latencies.reduce((a, b) => a + b, 0) / latencies.length;\n const tokensPerSec = (50 / avgLatency) * 1000;\n\n console.log(`\\n๐Ÿ“Š Benchmark Results:`);\n console.log(` Average Latency: ${avgLatency.toFixed(0)}ms`);\n console.log(` Tokens/Second: ${tokensPerSec.toFixed(1)}`);\n console.log('\\nโœ… Test 5 passed!\\n');\n\n // Cleanup\n await provider.dispose();\n\n // Final summary\n console.log('๐ŸŽ‰ All ONNX Tests Passed!');\n console.log('=========================');\n console.log(`โœ… Provider initialization working`);\n console.log(`โœ… CPU inference functional`);\n console.log(`โœ… Chat completion successful`);\n console.log(`โœ… Multi-turn conversations working`);\n console.log(`โœ… Performance: ${tokensPerSec.toFixed(1)} tokens/sec`);\n console.log(`โœ… Cost: $0.00 (100% free local inference)`);\n console.log(`\\n๐Ÿ’ก Next Steps:`);\n console.log(` 1. Integrate ONNX provider into router`);\n console.log(` 2. Add GPU support (CUDA/DirectML)`);\n console.log(` 3. Implement model caching`);\n console.log(` 4. Add streaming support`);\n\n } catch (error) {\n console.error('\\nโŒ Test Failed!');\n console.error('===============');\n console.error(error);\n process.exit(1);\n }\n}\n\n// Run tests\ntestONNXProvider().catch(error => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=test-openrouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-openrouter.d.ts","sourceRoot":"","sources":["../../src/router/test-openrouter.ts"],"names":[],"mappings":""}
@@ -119,3 +119,4 @@ testOpenRouter().catch(error => {
119
119
  console.error('Fatal error:', error);
120
120
  process.exit(1);
121
121
  });
122
+ //# sourceMappingURL=test-openrouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-openrouter.js","sourceRoot":"","sources":["../../src/router/test-openrouter.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n// Test script for OpenRouter integration\nimport { ModelRouter } from './router.js';\nimport { ChatParams } from './types.js';\n\nasync function testOpenRouter() {\n console.log('๐Ÿงช Testing OpenRouter Integration\\n');\n\n try {\n // Initialize router\n console.log('๐Ÿ“ฆ Initializing router...');\n const router = new ModelRouter();\n\n const config = router.getConfig();\n console.log(`โœ… Router initialized with default provider: ${config.defaultProvider}\\n`);\n\n // Test 1: Simple chat completion\n console.log('Test 1: Simple Chat Completion');\n console.log('================================');\n\n const chatParams: ChatParams = {\n model: config.providers.anthropic?.models?.default || 'claude-3-5-sonnet-20241022',\n messages: [\n {\n role: 'user',\n content: 'Say \"Hello from Multi-Model Router!\" and nothing else.'\n }\n ],\n temperature: 0.7,\n maxTokens: 100\n };\n\n console.log(`๐Ÿ“ค Sending request to model: ${chatParams.model}`);\n console.log(`๐Ÿ“ Prompt: ${chatParams.messages[0].content}\\n`);\n\n const startTime = Date.now();\n const response = await router.chat(chatParams);\n const latency = Date.now() - startTime;\n\n console.log('๐Ÿ“ฅ Response received:');\n console.log(` Provider: ${response.metadata?.provider}`);\n console.log(` Model: ${response.model}`);\n console.log(` Latency: ${latency}ms`);\n console.log(` Stop Reason: ${response.stopReason}`);\n console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);\n console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0}`);\n console.log(`\\n Content:`);\n\n for (const block of response.content) {\n if (block.type === 'text') {\n console.log(` ${block.text}`);\n }\n }\n\n console.log('\\nโœ… Test 1 passed!\\n');\n\n // Test 2: Different model via OpenRouter\n console.log('Test 2: Alternative Model');\n console.log('=========================');\n\n const altParams: ChatParams = {\n model: 'claude-3-5-haiku-20241022',\n messages: [\n {\n role: 'user',\n content: 'Respond with just the word \"SUCCESS\" if you can read this.'\n }\n ],\n temperature: 0.5,\n maxTokens: 50\n };\n\n console.log(`๐Ÿ“ค Testing model: ${altParams.model}\\n`);\n\n const altResponse = await router.chat(altParams);\n\n console.log('๐Ÿ“ฅ Response:');\n console.log(` Model: ${altResponse.model}`);\n console.log(` Content: ${altResponse.content[0].type === 'text' ? altResponse.content[0].text : 'N/A'}`);\n\n console.log('\\nโœ… Test 2 passed!\\n');\n\n // Test 3: Show metrics\n console.log('Test 3: Router Metrics');\n console.log('=====================');\n\n const metrics = router.getMetrics();\n\n console.log(`๐Ÿ“Š Total Requests: ${metrics.totalRequests}`);\n console.log(`๐Ÿ’ฐ Total Cost: $${metrics.totalCost.toFixed(6)}`);\n console.log(`๐Ÿ“ Total Tokens: ${metrics.totalTokens.input} in / ${metrics.totalTokens.output} out`);\n console.log('\\nProvider Breakdown:');\n\n for (const [provider, stats] of Object.entries(metrics.providerBreakdown)) {\n console.log(` ${provider}:`);\n console.log(` Requests: ${stats.requests}`);\n console.log(` Cost: $${stats.cost.toFixed(6)}`);\n console.log(` Avg Latency: ${stats.avgLatency.toFixed(0)}ms`);\n }\n\n console.log('\\nโœ… Test 3 passed!\\n');\n\n // Test 4: Rule-based routing (if configured)\n if (config.routing?.mode === 'rule-based') {\n console.log('Test 4: Rule-Based Routing');\n console.log('==========================');\n\n const ruleParams: ChatParams = {\n model: config.providers.anthropic?.models?.default || 'claude-3-5-sonnet-20241022',\n messages: [\n {\n role: 'user',\n content: 'This is a test for rule-based routing'\n }\n ]\n };\n\n const ruleResponse = await router.chat(ruleParams, 'researcher');\n\n console.log(`๐Ÿ“ฅ Routed to: ${ruleResponse.metadata?.provider}`);\n console.log(`๐Ÿ“ Response: ${ruleResponse.content[0].type === 'text' ? ruleResponse.content[0].text?.substring(0, 100) : 'N/A'}...`);\n\n console.log('\\nโœ… Test 4 passed!\\n');\n }\n\n // Final summary\n console.log('๐ŸŽ‰ All Tests Passed!');\n console.log('===================');\n console.log(`โœ… OpenRouter integration working`);\n console.log(`โœ… Router configuration loaded`);\n console.log(`โœ… Chat completion successful`);\n console.log(`โœ… Metrics tracking functional`);\n console.log(`\\n๐Ÿ“Š Final Metrics:`);\n console.log(` Total Requests: ${metrics.totalRequests}`);\n console.log(` Total Cost: $${metrics.totalCost.toFixed(6)}`);\n console.log(` Providers Used: ${Object.keys(metrics.providerBreakdown).join(', ')}`);\n\n } catch (error) {\n console.error('\\nโŒ Test Failed!');\n console.error('===============');\n console.error(error);\n process.exit(1);\n }\n}\n\n// Run tests\ntestOpenRouter().catch(error => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n"]}
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test script for Phi-4 ONNX provider with HuggingFace API fallback
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=test-phi4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-phi4.d.ts","sourceRoot":"","sources":["../../src/router/test-phi4.ts"],"names":[],"mappings":";AACA;;GAEG"}
@@ -135,3 +135,4 @@ testPhi4Provider().catch(error => {
135
135
  console.error('Fatal error:', error);
136
136
  process.exit(1);
137
137
  });
138
+ //# sourceMappingURL=test-phi4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-phi4.js","sourceRoot":"","sources":["../../src/router/test-phi4.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Test script for Phi-4 ONNX provider with HuggingFace API fallback\n */\n\nimport { ONNXPhi4Provider } from './providers/onnx-phi4.js';\n\nasync function testPhi4Provider() {\n console.log('๐Ÿงช Testing Phi-4 ONNX Provider (via HuggingFace API)\\n');\n\n try {\n // Test 1: Initialize provider\n console.log('Test 1: Provider Initialization');\n console.log('================================');\n\n const provider = new ONNXPhi4Provider({\n modelId: 'microsoft/Phi-3-mini-4k-instruct',\n huggingfaceApiKey: process.env.HUGGINGFACE_API_KEY\n });\n\n const info = provider.getModelInfo();\n console.log(`โœ… Provider initialized`);\n console.log(`๐Ÿ“Š Model: ${info.modelId}`);\n console.log(`๐Ÿ”ง Mode: ${info.mode}`);\n console.log(`โšก Supports local: ${info.supportsLocalInference}\\n`);\n\n // Test 2: Simple chat completion\n console.log('Test 2: Chat Completion');\n console.log('=======================');\n\n const chatParams = {\n model: 'microsoft/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'What is 2+2? Answer in one sentence.'\n }\n ],\n maxTokens: 50,\n temperature: 0.3\n };\n\n console.log(`๐Ÿ“ค Sending request...`);\n console.log(`๐Ÿ“ Question: ${chatParams.messages[0].content}\\n`);\n\n const startTime = Date.now();\n const response = await provider.chat(chatParams);\n const latency = Date.now() - startTime;\n\n console.log('๐Ÿ“ฅ Response received:');\n console.log(` Provider: ${response.metadata?.provider}`);\n console.log(` Model: ${response.model}`);\n console.log(` Mode: ${response.metadata?.mode}`);\n console.log(` Latency: ${latency}ms`);\n console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);\n console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0}`);\n console.log(`\\n Content:`);\n\n for (const block of response.content) {\n if (block.type === 'text') {\n console.log(` ${block.text}`);\n }\n }\n\n console.log('\\nโœ… Test 2 passed!\\n');\n\n // Test 3: Reasoning test\n console.log('Test 3: Reasoning Test');\n console.log('======================');\n\n const reasoningParams = {\n model: 'microsoft/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'If a train travels at 60mph for 2 hours, how far does it go?'\n }\n ],\n maxTokens: 100,\n temperature: 0.5\n };\n\n console.log(`๐Ÿ“ค Testing reasoning...`);\n const reasoningResponse = await provider.chat(reasoningParams);\n\n console.log('๐Ÿ“ฅ Response:');\n console.log(` ${reasoningResponse.content[0].type === 'text' ? reasoningResponse.content[0].text : 'N/A'}`);\n console.log('\\nโœ… Test 3 passed!\\n');\n\n // Test 4: Model info\n console.log('Test 4: Model Information');\n console.log('=========================');\n\n const modelInfo = provider.getModelInfo();\n console.log(`๐Ÿ“Š Model ID: ${modelInfo.modelId}`);\n console.log(`๐Ÿ”ง Inference Mode: ${modelInfo.mode}`);\n console.log(`๐Ÿ“ Model Path: ${modelInfo.modelPath}`);\n console.log(`๐Ÿ”‘ API Key: ${modelInfo.apiKey || 'Not set'}`);\n console.log(`โšก Local ONNX Ready: ${modelInfo.supportsLocalInference}`);\n console.log('\\nโœ… Test 4 passed!\\n');\n\n // Test 5: Performance benchmark\n console.log('Test 5: Performance Benchmark');\n console.log('=============================');\n\n const benchmarkParams = {\n model: 'microsoft/Phi-3-mini-4k-instruct',\n messages: [\n {\n role: 'user' as const,\n content: 'Count from 1 to 5.'\n }\n ],\n maxTokens: 30,\n temperature: 0.5\n };\n\n const benchmarkRuns = 3;\n const latencies: number[] = [];\n\n for (let i = 0; i < benchmarkRuns; i++) {\n const start = Date.now();\n await provider.chat(benchmarkParams);\n const duration = Date.now() - start;\n latencies.push(duration);\n console.log(` Run ${i + 1}: ${duration}ms`);\n }\n\n const avgLatency = latencies.reduce((a, b) => a + b, 0) / latencies.length;\n\n console.log(`\\n๐Ÿ“Š Benchmark Results:`);\n console.log(` Average Latency: ${avgLatency.toFixed(0)}ms`);\n console.log(` Min Latency: ${Math.min(...latencies)}ms`);\n console.log(` Max Latency: ${Math.max(...latencies)}ms`);\n console.log('\\nโœ… Test 5 passed!\\n');\n\n // Final summary\n console.log('๐ŸŽ‰ All Phi-4 Tests Passed!');\n console.log('==========================');\n console.log(`โœ… Provider initialization working`);\n console.log(`โœ… HuggingFace API inference functional`);\n console.log(`โœ… Chat completion successful`);\n console.log(`โœ… Reasoning capability verified`);\n console.log(`โœ… Performance: ${avgLatency.toFixed(0)}ms average`);\n console.log(`\\n๐Ÿ’ก Next Steps:`);\n console.log(` 1. Free up disk space (need 5GB)`);\n console.log(` 2. Download model.onnx.data`);\n console.log(` 3. Switch to local ONNX inference`);\n console.log(` 4. Benchmark local vs API performance`);\n\n } catch (error) {\n console.error('\\nโŒ Test Failed!');\n console.error('===============');\n console.error(error);\n process.exit(1);\n }\n}\n\n// Run tests\ntestPhi4Provider().catch(error => {\n console.error('Fatal error:', error);\n process.exit(1);\n});\n"]}