agentic-flow 1.0.0

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 (383) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +222 -0
  2. package/.claude/agents/README.md +89 -0
  3. package/.claude/agents/analysis/code-analyzer.md +209 -0
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
  6. package/.claude/agents/base-template-generator.md +42 -0
  7. package/.claude/agents/consensus/README.md +253 -0
  8. package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
  9. package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
  10. package/.claude/agents/consensus/gossip-coordinator.md +63 -0
  11. package/.claude/agents/consensus/performance-benchmarker.md +851 -0
  12. package/.claude/agents/consensus/quorum-manager.md +823 -0
  13. package/.claude/agents/consensus/raft-manager.md +63 -0
  14. package/.claude/agents/consensus/security-manager.md +622 -0
  15. package/.claude/agents/core/coder.md +211 -0
  16. package/.claude/agents/core/planner.md +116 -0
  17. package/.claude/agents/core/researcher.md +136 -0
  18. package/.claude/agents/core/reviewer.md +272 -0
  19. package/.claude/agents/core/tester.md +266 -0
  20. package/.claude/agents/data/ml/data-ml-model.md +193 -0
  21. package/.claude/agents/development/backend/dev-backend-api.md +142 -0
  22. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
  23. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
  24. package/.claude/agents/flow-nexus/app-store.md +88 -0
  25. package/.claude/agents/flow-nexus/authentication.md +69 -0
  26. package/.claude/agents/flow-nexus/challenges.md +81 -0
  27. package/.claude/agents/flow-nexus/neural-network.md +88 -0
  28. package/.claude/agents/flow-nexus/payments.md +83 -0
  29. package/.claude/agents/flow-nexus/sandbox.md +76 -0
  30. package/.claude/agents/flow-nexus/swarm.md +76 -0
  31. package/.claude/agents/flow-nexus/user-tools.md +96 -0
  32. package/.claude/agents/flow-nexus/workflow.md +84 -0
  33. package/.claude/agents/github/code-review-swarm.md +538 -0
  34. package/.claude/agents/github/github-modes.md +173 -0
  35. package/.claude/agents/github/issue-tracker.md +319 -0
  36. package/.claude/agents/github/multi-repo-swarm.md +553 -0
  37. package/.claude/agents/github/pr-manager.md +191 -0
  38. package/.claude/agents/github/project-board-sync.md +509 -0
  39. package/.claude/agents/github/release-manager.md +367 -0
  40. package/.claude/agents/github/release-swarm.md +583 -0
  41. package/.claude/agents/github/repo-architect.md +398 -0
  42. package/.claude/agents/github/swarm-issue.md +573 -0
  43. package/.claude/agents/github/swarm-pr.md +428 -0
  44. package/.claude/agents/github/sync-coordinator.md +452 -0
  45. package/.claude/agents/github/workflow-automation.md +635 -0
  46. package/.claude/agents/goal/agent.md +816 -0
  47. package/.claude/agents/goal/goal-planner.md +73 -0
  48. package/.claude/agents/optimization/README.md +250 -0
  49. package/.claude/agents/optimization/benchmark-suite.md +665 -0
  50. package/.claude/agents/optimization/load-balancer.md +431 -0
  51. package/.claude/agents/optimization/performance-monitor.md +672 -0
  52. package/.claude/agents/optimization/resource-allocator.md +674 -0
  53. package/.claude/agents/optimization/topology-optimizer.md +808 -0
  54. package/.claude/agents/payments/agentic-payments.md +126 -0
  55. package/.claude/agents/sparc/architecture.md +472 -0
  56. package/.claude/agents/sparc/pseudocode.md +318 -0
  57. package/.claude/agents/sparc/refinement.md +525 -0
  58. package/.claude/agents/sparc/specification.md +276 -0
  59. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
  60. package/.claude/agents/sublinear/consensus-coordinator.md +338 -0
  61. package/.claude/agents/sublinear/matrix-optimizer.md +185 -0
  62. package/.claude/agents/sublinear/pagerank-analyzer.md +299 -0
  63. package/.claude/agents/sublinear/performance-optimizer.md +368 -0
  64. package/.claude/agents/sublinear/trading-predictor.md +246 -0
  65. package/.claude/agents/swarm/README.md +190 -0
  66. package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
  67. package/.claude/agents/swarm/hierarchical-coordinator.md +256 -0
  68. package/.claude/agents/swarm/mesh-coordinator.md +392 -0
  69. package/.claude/agents/templates/automation-smart-agent.md +205 -0
  70. package/.claude/agents/templates/coordinator-swarm-init.md +90 -0
  71. package/.claude/agents/templates/github-pr-manager.md +177 -0
  72. package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
  73. package/.claude/agents/templates/memory-coordinator.md +187 -0
  74. package/.claude/agents/templates/migration-plan.md +746 -0
  75. package/.claude/agents/templates/orchestrator-task.md +139 -0
  76. package/.claude/agents/templates/performance-analyzer.md +199 -0
  77. package/.claude/agents/templates/sparc-coordinator.md +183 -0
  78. package/.claude/agents/test-neural.md +14 -0
  79. package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
  80. package/.claude/agents/testing/validation/production-validator.md +395 -0
  81. package/.claude/commands/agents/README.md +10 -0
  82. package/.claude/commands/agents/agent-capabilities.md +21 -0
  83. package/.claude/commands/agents/agent-coordination.md +28 -0
  84. package/.claude/commands/agents/agent-spawning.md +28 -0
  85. package/.claude/commands/agents/agent-types.md +26 -0
  86. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
  87. package/.claude/commands/analysis/README.md +9 -0
  88. package/.claude/commands/analysis/bottleneck-detect.md +162 -0
  89. package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
  90. package/.claude/commands/analysis/performance-report.md +25 -0
  91. package/.claude/commands/analysis/token-efficiency.md +45 -0
  92. package/.claude/commands/analysis/token-usage.md +25 -0
  93. package/.claude/commands/automation/README.md +9 -0
  94. package/.claude/commands/automation/auto-agent.md +122 -0
  95. package/.claude/commands/automation/self-healing.md +106 -0
  96. package/.claude/commands/automation/session-memory.md +90 -0
  97. package/.claude/commands/automation/smart-agents.md +73 -0
  98. package/.claude/commands/automation/smart-spawn.md +25 -0
  99. package/.claude/commands/automation/workflow-select.md +25 -0
  100. package/.claude/commands/claude-flow-help.md +103 -0
  101. package/.claude/commands/claude-flow-memory.md +107 -0
  102. package/.claude/commands/claude-flow-swarm.md +205 -0
  103. package/.claude/commands/coordination/README.md +9 -0
  104. package/.claude/commands/coordination/agent-spawn.md +25 -0
  105. package/.claude/commands/coordination/init.md +44 -0
  106. package/.claude/commands/coordination/orchestrate.md +43 -0
  107. package/.claude/commands/coordination/spawn.md +45 -0
  108. package/.claude/commands/coordination/swarm-init.md +85 -0
  109. package/.claude/commands/coordination/task-orchestrate.md +25 -0
  110. package/.claude/commands/flow-nexus/app-store.md +124 -0
  111. package/.claude/commands/flow-nexus/challenges.md +120 -0
  112. package/.claude/commands/flow-nexus/login-registration.md +65 -0
  113. package/.claude/commands/flow-nexus/neural-network.md +134 -0
  114. package/.claude/commands/flow-nexus/payments.md +116 -0
  115. package/.claude/commands/flow-nexus/sandbox.md +83 -0
  116. package/.claude/commands/flow-nexus/swarm.md +87 -0
  117. package/.claude/commands/flow-nexus/user-tools.md +152 -0
  118. package/.claude/commands/flow-nexus/workflow.md +115 -0
  119. package/.claude/commands/github/README.md +11 -0
  120. package/.claude/commands/github/code-review-swarm.md +514 -0
  121. package/.claude/commands/github/code-review.md +25 -0
  122. package/.claude/commands/github/github-modes.md +147 -0
  123. package/.claude/commands/github/github-swarm.md +121 -0
  124. package/.claude/commands/github/issue-tracker.md +292 -0
  125. package/.claude/commands/github/issue-triage.md +25 -0
  126. package/.claude/commands/github/multi-repo-swarm.md +519 -0
  127. package/.claude/commands/github/pr-enhance.md +26 -0
  128. package/.claude/commands/github/pr-manager.md +170 -0
  129. package/.claude/commands/github/project-board-sync.md +471 -0
  130. package/.claude/commands/github/release-manager.md +338 -0
  131. package/.claude/commands/github/release-swarm.md +544 -0
  132. package/.claude/commands/github/repo-analyze.md +25 -0
  133. package/.claude/commands/github/repo-architect.md +367 -0
  134. package/.claude/commands/github/swarm-issue.md +482 -0
  135. package/.claude/commands/github/swarm-pr.md +285 -0
  136. package/.claude/commands/github/sync-coordinator.md +301 -0
  137. package/.claude/commands/github/workflow-automation.md +442 -0
  138. package/.claude/commands/hive-mind/README.md +17 -0
  139. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
  140. package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
  141. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
  142. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
  143. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
  144. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
  145. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
  146. package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
  147. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
  148. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
  149. package/.claude/commands/hive-mind/hive-mind.md +27 -0
  150. package/.claude/commands/hooks/README.md +11 -0
  151. package/.claude/commands/hooks/overview.md +58 -0
  152. package/.claude/commands/hooks/post-edit.md +117 -0
  153. package/.claude/commands/hooks/post-task.md +112 -0
  154. package/.claude/commands/hooks/pre-edit.md +113 -0
  155. package/.claude/commands/hooks/pre-task.md +111 -0
  156. package/.claude/commands/hooks/session-end.md +118 -0
  157. package/.claude/commands/hooks/setup.md +103 -0
  158. package/.claude/commands/memory/README.md +9 -0
  159. package/.claude/commands/memory/memory-persist.md +25 -0
  160. package/.claude/commands/memory/memory-search.md +25 -0
  161. package/.claude/commands/memory/memory-usage.md +25 -0
  162. package/.claude/commands/memory/neural.md +47 -0
  163. package/.claude/commands/memory/usage.md +46 -0
  164. package/.claude/commands/monitoring/README.md +9 -0
  165. package/.claude/commands/monitoring/agent-metrics.md +25 -0
  166. package/.claude/commands/monitoring/agents.md +44 -0
  167. package/.claude/commands/monitoring/real-time-view.md +25 -0
  168. package/.claude/commands/monitoring/status.md +46 -0
  169. package/.claude/commands/monitoring/swarm-monitor.md +25 -0
  170. package/.claude/commands/optimization/README.md +9 -0
  171. package/.claude/commands/optimization/auto-topology.md +62 -0
  172. package/.claude/commands/optimization/cache-manage.md +25 -0
  173. package/.claude/commands/optimization/parallel-execute.md +25 -0
  174. package/.claude/commands/optimization/parallel-execution.md +50 -0
  175. package/.claude/commands/optimization/topology-optimize.md +25 -0
  176. package/.claude/commands/pair/README.md +261 -0
  177. package/.claude/commands/pair/commands.md +546 -0
  178. package/.claude/commands/pair/config.md +510 -0
  179. package/.claude/commands/pair/examples.md +512 -0
  180. package/.claude/commands/pair/modes.md +348 -0
  181. package/.claude/commands/pair/session.md +407 -0
  182. package/.claude/commands/pair/start.md +209 -0
  183. package/.claude/commands/sparc/analyzer.md +52 -0
  184. package/.claude/commands/sparc/architect.md +53 -0
  185. package/.claude/commands/sparc/ask.md +97 -0
  186. package/.claude/commands/sparc/batch-executor.md +54 -0
  187. package/.claude/commands/sparc/code.md +89 -0
  188. package/.claude/commands/sparc/coder.md +54 -0
  189. package/.claude/commands/sparc/debug.md +83 -0
  190. package/.claude/commands/sparc/debugger.md +54 -0
  191. package/.claude/commands/sparc/designer.md +53 -0
  192. package/.claude/commands/sparc/devops.md +109 -0
  193. package/.claude/commands/sparc/docs-writer.md +80 -0
  194. package/.claude/commands/sparc/documenter.md +54 -0
  195. package/.claude/commands/sparc/innovator.md +54 -0
  196. package/.claude/commands/sparc/integration.md +83 -0
  197. package/.claude/commands/sparc/mcp.md +117 -0
  198. package/.claude/commands/sparc/memory-manager.md +54 -0
  199. package/.claude/commands/sparc/optimizer.md +54 -0
  200. package/.claude/commands/sparc/orchestrator.md +132 -0
  201. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -0
  202. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -0
  203. package/.claude/commands/sparc/researcher.md +54 -0
  204. package/.claude/commands/sparc/reviewer.md +54 -0
  205. package/.claude/commands/sparc/security-review.md +80 -0
  206. package/.claude/commands/sparc/sparc-modes.md +174 -0
  207. package/.claude/commands/sparc/sparc.md +111 -0
  208. package/.claude/commands/sparc/spec-pseudocode.md +80 -0
  209. package/.claude/commands/sparc/supabase-admin.md +348 -0
  210. package/.claude/commands/sparc/swarm-coordinator.md +54 -0
  211. package/.claude/commands/sparc/tdd.md +54 -0
  212. package/.claude/commands/sparc/tester.md +54 -0
  213. package/.claude/commands/sparc/tutorial.md +79 -0
  214. package/.claude/commands/sparc/workflow-manager.md +54 -0
  215. package/.claude/commands/sparc.md +166 -0
  216. package/.claude/commands/stream-chain/pipeline.md +121 -0
  217. package/.claude/commands/stream-chain/run.md +70 -0
  218. package/.claude/commands/swarm/README.md +15 -0
  219. package/.claude/commands/swarm/analysis.md +95 -0
  220. package/.claude/commands/swarm/development.md +96 -0
  221. package/.claude/commands/swarm/examples.md +168 -0
  222. package/.claude/commands/swarm/maintenance.md +102 -0
  223. package/.claude/commands/swarm/optimization.md +117 -0
  224. package/.claude/commands/swarm/research.md +136 -0
  225. package/.claude/commands/swarm/swarm-analysis.md +8 -0
  226. package/.claude/commands/swarm/swarm-background.md +8 -0
  227. package/.claude/commands/swarm/swarm-init.md +19 -0
  228. package/.claude/commands/swarm/swarm-modes.md +8 -0
  229. package/.claude/commands/swarm/swarm-monitor.md +8 -0
  230. package/.claude/commands/swarm/swarm-spawn.md +19 -0
  231. package/.claude/commands/swarm/swarm-status.md +8 -0
  232. package/.claude/commands/swarm/swarm-strategies.md +8 -0
  233. package/.claude/commands/swarm/swarm.md +27 -0
  234. package/.claude/commands/swarm/testing.md +131 -0
  235. package/.claude/commands/training/README.md +9 -0
  236. package/.claude/commands/training/model-update.md +25 -0
  237. package/.claude/commands/training/neural-patterns.md +74 -0
  238. package/.claude/commands/training/neural-train.md +25 -0
  239. package/.claude/commands/training/pattern-learn.md +25 -0
  240. package/.claude/commands/training/specialization.md +63 -0
  241. package/.claude/commands/truth/start.md +143 -0
  242. package/.claude/commands/verify/check.md +50 -0
  243. package/.claude/commands/verify/start.md +128 -0
  244. package/.claude/commands/workflows/README.md +9 -0
  245. package/.claude/commands/workflows/development.md +78 -0
  246. package/.claude/commands/workflows/research.md +63 -0
  247. package/.claude/commands/workflows/workflow-create.md +25 -0
  248. package/.claude/commands/workflows/workflow-execute.md +25 -0
  249. package/.claude/commands/workflows/workflow-export.md +25 -0
  250. package/.claude/helpers/checkpoint-manager.sh +251 -0
  251. package/.claude/helpers/github-safe.js +106 -0
  252. package/.claude/helpers/github-setup.sh +28 -0
  253. package/.claude/helpers/quick-start.sh +19 -0
  254. package/.claude/helpers/setup-mcp.sh +18 -0
  255. package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
  256. package/.claude/mcp.json +13 -0
  257. package/.claude/settings-backup.json +130 -0
  258. package/.claude/settings-optimized.json +116 -0
  259. package/.claude/settings-simple.json +78 -0
  260. package/.claude/settings.json +114 -0
  261. package/.claude/settings.local.json +14 -0
  262. package/README.md +1280 -0
  263. package/dist/agents/claudeAgent.js +73 -0
  264. package/dist/agents/claudeFlowAgent.js +115 -0
  265. package/dist/agents/codeReviewAgent.js +34 -0
  266. package/dist/agents/dataAgent.js +34 -0
  267. package/dist/agents/directApiAgent.js +260 -0
  268. package/dist/agents/webResearchAgent.js +35 -0
  269. package/dist/cli/mcp.js +135 -0
  270. package/dist/cli-proxy.js +246 -0
  271. package/dist/cli.js +158 -0
  272. package/dist/config/claudeFlow.js +67 -0
  273. package/dist/config/tools.js +33 -0
  274. package/dist/coordination/parallelSwarm.js +226 -0
  275. package/dist/examples/multi-agent-orchestration.js +45 -0
  276. package/dist/examples/parallel-swarm-deployment.js +171 -0
  277. package/dist/examples/use-goal-planner.js +52 -0
  278. package/dist/health.js +46 -0
  279. package/dist/index-with-proxy.js +101 -0
  280. package/dist/index.js +167 -0
  281. package/dist/mcp/claudeFlowSdkServer.js +202 -0
  282. package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +198 -0
  283. package/dist/mcp/fastmcp/servers/http-streaming-updated.js +421 -0
  284. package/dist/mcp/fastmcp/servers/poc-stdio.js +82 -0
  285. package/dist/mcp/fastmcp/servers/stdio-full.js +421 -0
  286. package/dist/mcp/fastmcp/tools/agent/add-agent.js +107 -0
  287. package/dist/mcp/fastmcp/tools/agent/add-command.js +117 -0
  288. package/dist/mcp/fastmcp/tools/agent/execute.js +56 -0
  289. package/dist/mcp/fastmcp/tools/agent/list.js +82 -0
  290. package/dist/mcp/fastmcp/tools/agent/parallel.js +63 -0
  291. package/dist/mcp/fastmcp/tools/memory/retrieve.js +38 -0
  292. package/dist/mcp/fastmcp/tools/memory/search.js +41 -0
  293. package/dist/mcp/fastmcp/tools/memory/store.js +56 -0
  294. package/dist/mcp/fastmcp/tools/swarm/init.js +41 -0
  295. package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +47 -0
  296. package/dist/mcp/fastmcp/tools/swarm/spawn.js +40 -0
  297. package/dist/mcp/fastmcp/types/index.js +2 -0
  298. package/dist/proxy/anthropic-to-openrouter.js +246 -0
  299. package/dist/router/providers/anthropic.js +89 -0
  300. package/dist/router/providers/onnx-local-optimized.js +167 -0
  301. package/dist/router/providers/onnx-local.js +294 -0
  302. package/dist/router/providers/onnx-phi4.js +190 -0
  303. package/dist/router/providers/onnx.js +242 -0
  304. package/dist/router/providers/openrouter.js +242 -0
  305. package/dist/router/router.js +283 -0
  306. package/dist/router/test-integration.js +140 -0
  307. package/dist/router/test-onnx-benchmark.js +145 -0
  308. package/dist/router/test-onnx-integration.js +128 -0
  309. package/dist/router/test-onnx-local.js +37 -0
  310. package/dist/router/test-onnx.js +148 -0
  311. package/dist/router/test-openrouter.js +121 -0
  312. package/dist/router/test-phi4.js +137 -0
  313. package/dist/router/types.js +2 -0
  314. package/dist/utils/agentLoader.js +106 -0
  315. package/dist/utils/cli.js +128 -0
  316. package/dist/utils/logger.js +41 -0
  317. package/dist/utils/mcpCommands.js +214 -0
  318. package/dist/utils/model-downloader.js +182 -0
  319. package/dist/utils/retry.js +54 -0
  320. package/docs/.claude-flow/metrics/agent-metrics.json +1 -0
  321. package/docs/.claude-flow/metrics/performance.json +9 -0
  322. package/docs/.claude-flow/metrics/task-metrics.json +10 -0
  323. package/docs/CHANGELOG.md +155 -0
  324. package/docs/CLAUDE.md +352 -0
  325. package/docs/COMPLETE_VALIDATION_SUMMARY.md +405 -0
  326. package/docs/INDEX.md +183 -0
  327. package/docs/LICENSE +21 -0
  328. package/docs/ONNX_CLI_USAGE.md +344 -0
  329. package/docs/ONNX_ENV_VARS.md +564 -0
  330. package/docs/ONNX_INTEGRATION.md +422 -0
  331. package/docs/ONNX_OPTIMIZATION_GUIDE.md +665 -0
  332. package/docs/ONNX_OPTIMIZATION_SUMMARY.md +374 -0
  333. package/docs/ONNX_VS_CLAUDE_QUALITY.md +442 -0
  334. package/docs/OPENROUTER_DEPLOYMENT.md +495 -0
  335. package/docs/architecture/EXECUTIVE_SUMMARY.md +310 -0
  336. package/docs/architecture/IMPROVEMENT_PLAN.md +11 -0
  337. package/docs/architecture/INTEGRATION-STATUS.md +290 -0
  338. package/docs/architecture/MULTI_MODEL_ROUTER_PLAN.md +620 -0
  339. package/docs/architecture/QUICK_WINS.md +333 -0
  340. package/docs/architecture/README.md +15 -0
  341. package/docs/architecture/RESEARCH_SUMMARY.md +652 -0
  342. package/docs/archived/FASTMCP_COMPLETE.md +428 -0
  343. package/docs/archived/FASTMCP_INTEGRATION_STATUS.md +288 -0
  344. package/docs/archived/FLOW-NEXUS-COMPLETE.md +269 -0
  345. package/docs/archived/INTEGRATION_CONFIRMED.md +351 -0
  346. package/docs/archived/ONNX_FINAL_REPORT.md +312 -0
  347. package/docs/archived/ONNX_IMPLEMENTATION_COMPLETE.md +215 -0
  348. package/docs/archived/ONNX_IMPLEMENTATION_SUMMARY.md +197 -0
  349. package/docs/archived/ONNX_SUCCESS_REPORT.md +271 -0
  350. package/docs/archived/OPENROUTER_PROXY_COMPLETE.md +494 -0
  351. package/docs/archived/PACKAGE-COMPLETE.md +138 -0
  352. package/docs/archived/README.md +27 -0
  353. package/docs/archived/RESEARCH_COMPLETE.txt +335 -0
  354. package/docs/archived/SDK-SETUP-COMPLETE.md +252 -0
  355. package/docs/guides/ALTERNATIVE_LLM_MODELS.md +524 -0
  356. package/docs/guides/DOCKER_AGENT_USAGE.md +352 -0
  357. package/docs/guides/IMPLEMENTATION_EXAMPLES.md +960 -0
  358. package/docs/guides/NPM-PUBLISH.md +218 -0
  359. package/docs/guides/README.md +17 -0
  360. package/docs/guides/agent-sdk.md +234 -0
  361. package/docs/integrations/CLAUDE_AGENTS_INTEGRATION.md +356 -0
  362. package/docs/integrations/CLAUDE_FLOW_INTEGRATION.md +535 -0
  363. package/docs/integrations/FASTMCP_CLI_INTEGRATION.md +503 -0
  364. package/docs/integrations/FLOW-NEXUS-INTEGRATION.md +319 -0
  365. package/docs/integrations/README.md +18 -0
  366. package/docs/integrations/fastmcp-implementation-plan.md +2516 -0
  367. package/docs/integrations/fastmcp-poc-integration.md +198 -0
  368. package/docs/router/ONNX_PHI4_RESEARCH.md +220 -0
  369. package/docs/router/ONNX_RUNTIME_INTEGRATION_PLAN.md +866 -0
  370. package/docs/router/PHI4_HYPEROPTIMIZATION_PLAN.md +2488 -0
  371. package/docs/router/README.md +552 -0
  372. package/docs/router/ROUTER_CONFIG_REFERENCE.md +577 -0
  373. package/docs/router/ROUTER_USER_GUIDE.md +865 -0
  374. package/docs/validation/DOCKER_MCP_VALIDATION.md +358 -0
  375. package/docs/validation/DOCKER_OPENROUTER_VALIDATION.md +443 -0
  376. package/docs/validation/FINAL_SYSTEM_VALIDATION.md +458 -0
  377. package/docs/validation/FINAL_VALIDATION_SUMMARY.md +409 -0
  378. package/docs/validation/MCP_CLI_TOOLS_VALIDATION.md +266 -0
  379. package/docs/validation/MODEL_VALIDATION_REPORT.md +386 -0
  380. package/docs/validation/OPENROUTER_VALIDATION_COMPLETE.md +382 -0
  381. package/docs/validation/README.md +20 -0
  382. package/docs/validation/ROUTER_VALIDATION.md +311 -0
  383. package/package.json +140 -0
@@ -0,0 +1,128 @@
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
+ import { ModelRouter } from './router.js';
8
+ async function testONNXIntegration() {
9
+ console.log('🧪 agentic-flow + ONNX Runtime Integration Test\n');
10
+ console.log('='.repeat(60));
11
+ console.log('Testing: Multi-Model Router with ONNX Local Inference');
12
+ console.log('='.repeat(60) + '\n');
13
+ try {
14
+ // Initialize router (ONNX-only mode)
15
+ console.log('Step 1: Router Initialization');
16
+ console.log('==============================');
17
+ const router = new ModelRouter();
18
+ const config = router.getConfig();
19
+ console.log(`āœ… Router initialized successfully`);
20
+ console.log(` Version: ${config.version}`);
21
+ console.log(` Default Provider: ${config.defaultProvider}`);
22
+ console.log(` Fallback Chain: ${config.fallbackChain?.join(' → ')}`);
23
+ console.log(` Routing Mode: ${config.routing?.mode}`);
24
+ console.log(` Providers Configured: ${Object.keys(config.providers).length}`);
25
+ console.log('');
26
+ // Test ONNX provider
27
+ console.log('Step 2: ONNX Provider Direct Test');
28
+ console.log('===================================');
29
+ // Get ONNX provider directly
30
+ const onnxProvider = router.providers.get('onnx');
31
+ if (!onnxProvider) {
32
+ throw new Error('ONNX provider not initialized');
33
+ }
34
+ console.log(`āœ… ONNX provider found: ${onnxProvider.name}`);
35
+ console.log(` Type: ${onnxProvider.type}`);
36
+ console.log(` Supports Streaming: ${onnxProvider.supportsStreaming}`);
37
+ console.log(` Supports Tools: ${onnxProvider.supportsTools}`);
38
+ console.log('');
39
+ // Test inference
40
+ console.log('Step 3: ONNX Inference Test');
41
+ console.log('=============================');
42
+ const response = await onnxProvider.chat({
43
+ model: 'phi-4',
44
+ messages: [
45
+ { role: 'user', content: 'What is 2+2?' }
46
+ ],
47
+ maxTokens: 20
48
+ });
49
+ console.log(`āœ… Inference successful`);
50
+ console.log(` Response: ${response.content[0].type === 'text' ? response.content[0].text : 'N/A'}`);
51
+ console.log(` Model: ${response.model}`);
52
+ console.log(` Latency: ${response.metadata?.latency}ms`);
53
+ console.log(` Tokens/Sec: ${response.metadata?.tokensPerSecond}`);
54
+ console.log(` Cost: $${response.metadata?.cost || 0}`);
55
+ console.log(` Input Tokens: ${response.usage?.inputTokens}`);
56
+ console.log(` Output Tokens: ${response.usage?.outputTokens}`);
57
+ console.log('');
58
+ // Test router configuration
59
+ console.log('Step 4: Router Configuration Validation');
60
+ console.log('=========================================');
61
+ const onnxConfig = config.providers.onnx;
62
+ console.log(`āœ… ONNX Configuration:`);
63
+ console.log(` Model Path: ${onnxConfig?.modelPath || 'default'}`);
64
+ console.log(` Execution Providers: ${onnxConfig?.executionProviders?.join(', ')}`);
65
+ console.log(` Max Tokens: ${onnxConfig?.maxTokens}`);
66
+ console.log(` Temperature: ${onnxConfig?.temperature}`);
67
+ console.log(` Local Inference: ${onnxConfig?.localInference}`);
68
+ console.log(` GPU Acceleration: ${onnxConfig?.gpuAcceleration}`);
69
+ console.log('');
70
+ // Test routing rules
71
+ console.log('Step 5: Privacy Routing Rule Validation');
72
+ console.log('=========================================');
73
+ const privacyRule = config.routing?.rules?.find(r => r.condition.privacy === 'high' && r.action.provider === 'onnx');
74
+ if (privacyRule) {
75
+ console.log(`āœ… Privacy routing rule configured:`);
76
+ console.log(` Condition: privacy = high, localOnly = ${privacyRule.condition.localOnly}`);
77
+ console.log(` Action: Route to ${privacyRule.action.provider}`);
78
+ console.log(` Reason: ${privacyRule.reason}`);
79
+ }
80
+ else {
81
+ console.log(`āš ļø Privacy routing rule not found (optional)`);
82
+ }
83
+ console.log('');
84
+ // Architecture summary
85
+ console.log('\n' + '='.repeat(60));
86
+ console.log('āœ… Integration Test Complete!');
87
+ console.log('='.repeat(60) + '\n');
88
+ console.log('Integration Confirmed:');
89
+ console.log(' āœ“ agentic-flow multi-model router working');
90
+ console.log(' āœ“ ONNX Runtime provider integrated');
91
+ console.log(' āœ“ Local CPU inference operational');
92
+ console.log(' āœ“ Configuration loaded successfully');
93
+ console.log(' āœ“ Privacy routing rules configured');
94
+ console.log('');
95
+ console.log('Architecture Details:');
96
+ console.log(' • Router: ModelRouter class');
97
+ console.log(' • ONNX Provider: ONNXLocalProvider');
98
+ console.log(' • Model: Microsoft Phi-4-mini-instruct-onnx (INT4)');
99
+ console.log(' • Execution: CPU-only local inference');
100
+ console.log(' • KV Cache: 32-layer autoregressive generation');
101
+ console.log(' • Cost: $0.00 per request (100% free)');
102
+ console.log('');
103
+ console.log('Performance:');
104
+ console.log(` • Latency: ${response.metadata?.latency}ms`);
105
+ console.log(` • Throughput: ${response.metadata?.tokensPerSecond} tokens/sec`);
106
+ console.log(` • Privacy: 100% local processing`);
107
+ console.log(` • Cost: $0.00 (free inference)`);
108
+ console.log('');
109
+ console.log('Use Cases:');
110
+ console.log(' • Privacy-sensitive data processing');
111
+ console.log(' • GDPR/HIPAA compliant inference');
112
+ console.log(' • Offline operation (no internet)');
113
+ console.log(' • Zero-cost development/testing');
114
+ console.log(' • Medical/legal document analysis');
115
+ console.log('');
116
+ }
117
+ catch (error) {
118
+ console.error('\nāŒ Integration Test Failed!');
119
+ console.error('==============================');
120
+ console.error(error);
121
+ process.exit(1);
122
+ }
123
+ }
124
+ // Run test
125
+ testONNXIntegration().catch(error => {
126
+ console.error('Fatal error:', error);
127
+ process.exit(1);
128
+ });
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test ONNX local inference with Phi-4 model
4
+ */
5
+ import { ONNXLocalProvider } from './providers/onnx-local.js';
6
+ async function testONNXLocal() {
7
+ console.log('🧪 Testing ONNX Local Inference (Phi-4 CPU)\n');
8
+ try {
9
+ const provider = new ONNXLocalProvider({
10
+ modelPath: './models/phi-4/cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/model.onnx',
11
+ executionProviders: ['cpu'],
12
+ maxTokens: 50
13
+ });
14
+ console.log('Test: Simple Inference');
15
+ console.log('======================');
16
+ const response = await provider.chat({
17
+ model: 'phi-4',
18
+ messages: [
19
+ { role: 'user', content: 'What is 2+2?' }
20
+ ],
21
+ maxTokens: 20
22
+ });
23
+ console.log('\nšŸ“„ Response:');
24
+ console.log(` Text: ${response.content[0].type === 'text' ? response.content[0].text : ''}`);
25
+ console.log(` Latency: ${response.metadata?.latency}ms`);
26
+ console.log(` Tokens: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);
27
+ console.log(` Cost: $${response.metadata?.cost}`);
28
+ console.log(` Providers: ${response.metadata?.executionProviders?.join(', ')}`);
29
+ console.log('\nāœ… Test passed!');
30
+ await provider.dispose();
31
+ }
32
+ catch (error) {
33
+ console.error('\nāŒ Test failed:', error);
34
+ process.exit(1);
35
+ }
36
+ }
37
+ testONNXLocal();
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test script for ONNX Runtime integration
4
+ * Tests CPU inference with Phi-3 model
5
+ */
6
+ import { ONNXProvider } from './providers/onnx.js';
7
+ async function testONNXProvider() {
8
+ console.log('🧪 Testing ONNX Runtime Provider\n');
9
+ try {
10
+ // Test 1: Initialize ONNX provider
11
+ console.log('Test 1: Provider Initialization');
12
+ console.log('================================');
13
+ const provider = new ONNXProvider({
14
+ modelId: 'Xenova/Phi-3-mini-4k-instruct',
15
+ maxTokens: 100,
16
+ temperature: 0.7
17
+ });
18
+ console.log(`āœ… Provider initialized: ${provider.name}`);
19
+ console.log(`šŸ“Š Supports streaming: ${provider.supportsStreaming}`);
20
+ console.log(`šŸ”§ Supports tools: ${provider.supportsTools}\n`);
21
+ // Test 2: Simple chat completion
22
+ console.log('Test 2: Chat Completion (CPU)');
23
+ console.log('==============================');
24
+ const chatParams = {
25
+ model: 'Xenova/Phi-3-mini-4k-instruct',
26
+ messages: [
27
+ {
28
+ role: 'user',
29
+ content: 'Say "Hello from ONNX Runtime!" and nothing else.'
30
+ }
31
+ ],
32
+ maxTokens: 50,
33
+ temperature: 0.5
34
+ };
35
+ console.log(`šŸ“¤ Sending request...`);
36
+ console.log(`šŸ“ Prompt: ${chatParams.messages[0].content}\n`);
37
+ const startTime = Date.now();
38
+ const response = await provider.chat(chatParams);
39
+ const latency = Date.now() - startTime;
40
+ console.log('šŸ“„ Response received:');
41
+ console.log(` Provider: ${response.metadata?.provider}`);
42
+ console.log(` Model: ${response.model}`);
43
+ console.log(` Latency: ${latency}ms`);
44
+ console.log(` Stop Reason: ${response.stopReason}`);
45
+ console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);
46
+ console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0} (FREE - Local inference)`);
47
+ console.log(` Execution Providers: ${response.metadata?.executionProviders?.join(', ')}`);
48
+ console.log(`\n Content:`);
49
+ for (const block of response.content) {
50
+ if (block.type === 'text') {
51
+ console.log(` ${block.text}`);
52
+ }
53
+ }
54
+ console.log('\nāœ… Test 2 passed!\n');
55
+ // Test 3: Multi-turn conversation
56
+ console.log('Test 3: Multi-Turn Conversation');
57
+ console.log('================================');
58
+ const conversationParams = {
59
+ model: 'Xenova/Phi-3-mini-4k-instruct',
60
+ messages: [
61
+ {
62
+ role: 'user',
63
+ content: 'What is 2+2?'
64
+ },
65
+ {
66
+ role: 'assistant',
67
+ content: '4'
68
+ },
69
+ {
70
+ role: 'user',
71
+ content: 'What about 2+3?'
72
+ }
73
+ ],
74
+ maxTokens: 50,
75
+ temperature: 0.3
76
+ };
77
+ console.log(`šŸ“¤ Multi-turn conversation...`);
78
+ const convResponse = await provider.chat(conversationParams);
79
+ console.log('šŸ“„ Response:');
80
+ console.log(` Content: ${convResponse.content[0].type === 'text' ? convResponse.content[0].text : 'N/A'}`);
81
+ console.log('\nāœ… Test 3 passed!\n');
82
+ // Test 4: Model info
83
+ console.log('Test 4: Model Information');
84
+ console.log('=========================');
85
+ const modelInfo = provider.getModelInfo();
86
+ console.log(`šŸ“Š Model ID: ${modelInfo.modelId}`);
87
+ console.log(`šŸ”§ Execution Providers: ${modelInfo.executionProviders.join(', ')}`);
88
+ console.log(`⚔ GPU Support: ${modelInfo.supportsGPU ? 'Yes' : 'No (CPU only)'}`);
89
+ console.log(`āœ“ Initialized: ${modelInfo.initialized}`);
90
+ console.log('\nāœ… Test 4 passed!\n');
91
+ // Test 5: Performance benchmark
92
+ console.log('Test 5: Performance Benchmark');
93
+ console.log('=============================');
94
+ const benchmarkParams = {
95
+ model: 'Xenova/Phi-3-mini-4k-instruct',
96
+ messages: [
97
+ {
98
+ role: 'user',
99
+ content: 'Count from 1 to 5.'
100
+ }
101
+ ],
102
+ maxTokens: 50,
103
+ temperature: 0.5
104
+ };
105
+ const benchmarkRuns = 3;
106
+ const latencies = [];
107
+ for (let i = 0; i < benchmarkRuns; i++) {
108
+ const start = Date.now();
109
+ await provider.chat(benchmarkParams);
110
+ const duration = Date.now() - start;
111
+ latencies.push(duration);
112
+ console.log(` Run ${i + 1}: ${duration}ms`);
113
+ }
114
+ const avgLatency = latencies.reduce((a, b) => a + b, 0) / latencies.length;
115
+ const tokensPerSec = (50 / avgLatency) * 1000;
116
+ console.log(`\nšŸ“Š Benchmark Results:`);
117
+ console.log(` Average Latency: ${avgLatency.toFixed(0)}ms`);
118
+ console.log(` Tokens/Second: ${tokensPerSec.toFixed(1)}`);
119
+ console.log('\nāœ… Test 5 passed!\n');
120
+ // Cleanup
121
+ await provider.dispose();
122
+ // Final summary
123
+ console.log('šŸŽ‰ All ONNX Tests Passed!');
124
+ console.log('=========================');
125
+ console.log(`āœ… Provider initialization working`);
126
+ console.log(`āœ… CPU inference functional`);
127
+ console.log(`āœ… Chat completion successful`);
128
+ console.log(`āœ… Multi-turn conversations working`);
129
+ console.log(`āœ… Performance: ${tokensPerSec.toFixed(1)} tokens/sec`);
130
+ console.log(`āœ… Cost: $0.00 (100% free local inference)`);
131
+ console.log(`\nšŸ’” Next Steps:`);
132
+ console.log(` 1. Integrate ONNX provider into router`);
133
+ console.log(` 2. Add GPU support (CUDA/DirectML)`);
134
+ console.log(` 3. Implement model caching`);
135
+ console.log(` 4. Add streaming support`);
136
+ }
137
+ catch (error) {
138
+ console.error('\nāŒ Test Failed!');
139
+ console.error('===============');
140
+ console.error(error);
141
+ process.exit(1);
142
+ }
143
+ }
144
+ // Run tests
145
+ testONNXProvider().catch(error => {
146
+ console.error('Fatal error:', error);
147
+ process.exit(1);
148
+ });
@@ -0,0 +1,121 @@
1
+ #!/usr/bin/env node
2
+ // Test script for OpenRouter integration
3
+ import { ModelRouter } from './router.js';
4
+ async function testOpenRouter() {
5
+ console.log('🧪 Testing OpenRouter Integration\n');
6
+ try {
7
+ // Initialize router
8
+ console.log('šŸ“¦ Initializing router...');
9
+ const router = new ModelRouter();
10
+ const config = router.getConfig();
11
+ console.log(`āœ… Router initialized with default provider: ${config.defaultProvider}\n`);
12
+ // Test 1: Simple chat completion
13
+ console.log('Test 1: Simple Chat Completion');
14
+ console.log('================================');
15
+ const chatParams = {
16
+ model: config.providers.anthropic?.models?.default || 'claude-3-5-sonnet-20241022',
17
+ messages: [
18
+ {
19
+ role: 'user',
20
+ content: 'Say "Hello from Multi-Model Router!" and nothing else.'
21
+ }
22
+ ],
23
+ temperature: 0.7,
24
+ maxTokens: 100
25
+ };
26
+ console.log(`šŸ“¤ Sending request to model: ${chatParams.model}`);
27
+ console.log(`šŸ“ Prompt: ${chatParams.messages[0].content}\n`);
28
+ const startTime = Date.now();
29
+ const response = await router.chat(chatParams);
30
+ const latency = Date.now() - startTime;
31
+ console.log('šŸ“„ Response received:');
32
+ console.log(` Provider: ${response.metadata?.provider}`);
33
+ console.log(` Model: ${response.model}`);
34
+ console.log(` Latency: ${latency}ms`);
35
+ console.log(` Stop Reason: ${response.stopReason}`);
36
+ console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);
37
+ console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0}`);
38
+ console.log(`\n Content:`);
39
+ for (const block of response.content) {
40
+ if (block.type === 'text') {
41
+ console.log(` ${block.text}`);
42
+ }
43
+ }
44
+ console.log('\nāœ… Test 1 passed!\n');
45
+ // Test 2: Different model via OpenRouter
46
+ console.log('Test 2: Alternative Model');
47
+ console.log('=========================');
48
+ const altParams = {
49
+ model: 'claude-3-5-haiku-20241022',
50
+ messages: [
51
+ {
52
+ role: 'user',
53
+ content: 'Respond with just the word "SUCCESS" if you can read this.'
54
+ }
55
+ ],
56
+ temperature: 0.5,
57
+ maxTokens: 50
58
+ };
59
+ console.log(`šŸ“¤ Testing model: ${altParams.model}\n`);
60
+ const altResponse = await router.chat(altParams);
61
+ console.log('šŸ“„ Response:');
62
+ console.log(` Model: ${altResponse.model}`);
63
+ console.log(` Content: ${altResponse.content[0].type === 'text' ? altResponse.content[0].text : 'N/A'}`);
64
+ console.log('\nāœ… Test 2 passed!\n');
65
+ // Test 3: Show metrics
66
+ console.log('Test 3: Router Metrics');
67
+ console.log('=====================');
68
+ const metrics = router.getMetrics();
69
+ console.log(`šŸ“Š Total Requests: ${metrics.totalRequests}`);
70
+ console.log(`šŸ’° Total Cost: $${metrics.totalCost.toFixed(6)}`);
71
+ console.log(`šŸ“ Total Tokens: ${metrics.totalTokens.input} in / ${metrics.totalTokens.output} out`);
72
+ console.log('\nProvider Breakdown:');
73
+ for (const [provider, stats] of Object.entries(metrics.providerBreakdown)) {
74
+ console.log(` ${provider}:`);
75
+ console.log(` Requests: ${stats.requests}`);
76
+ console.log(` Cost: $${stats.cost.toFixed(6)}`);
77
+ console.log(` Avg Latency: ${stats.avgLatency.toFixed(0)}ms`);
78
+ }
79
+ console.log('\nāœ… Test 3 passed!\n');
80
+ // Test 4: Rule-based routing (if configured)
81
+ if (config.routing?.mode === 'rule-based') {
82
+ console.log('Test 4: Rule-Based Routing');
83
+ console.log('==========================');
84
+ const ruleParams = {
85
+ model: config.providers.anthropic?.models?.default || 'claude-3-5-sonnet-20241022',
86
+ messages: [
87
+ {
88
+ role: 'user',
89
+ content: 'This is a test for rule-based routing'
90
+ }
91
+ ]
92
+ };
93
+ const ruleResponse = await router.chat(ruleParams, 'researcher');
94
+ console.log(`šŸ“„ Routed to: ${ruleResponse.metadata?.provider}`);
95
+ console.log(`šŸ“ Response: ${ruleResponse.content[0].type === 'text' ? ruleResponse.content[0].text?.substring(0, 100) : 'N/A'}...`);
96
+ console.log('\nāœ… Test 4 passed!\n');
97
+ }
98
+ // Final summary
99
+ console.log('šŸŽ‰ All Tests Passed!');
100
+ console.log('===================');
101
+ console.log(`āœ… OpenRouter integration working`);
102
+ console.log(`āœ… Router configuration loaded`);
103
+ console.log(`āœ… Chat completion successful`);
104
+ console.log(`āœ… Metrics tracking functional`);
105
+ console.log(`\nšŸ“Š Final Metrics:`);
106
+ console.log(` Total Requests: ${metrics.totalRequests}`);
107
+ console.log(` Total Cost: $${metrics.totalCost.toFixed(6)}`);
108
+ console.log(` Providers Used: ${Object.keys(metrics.providerBreakdown).join(', ')}`);
109
+ }
110
+ catch (error) {
111
+ console.error('\nāŒ Test Failed!');
112
+ console.error('===============');
113
+ console.error(error);
114
+ process.exit(1);
115
+ }
116
+ }
117
+ // Run tests
118
+ testOpenRouter().catch(error => {
119
+ console.error('Fatal error:', error);
120
+ process.exit(1);
121
+ });
@@ -0,0 +1,137 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test script for Phi-4 ONNX provider with HuggingFace API fallback
4
+ */
5
+ import { ONNXPhi4Provider } from './providers/onnx-phi4.js';
6
+ async function testPhi4Provider() {
7
+ console.log('🧪 Testing Phi-4 ONNX Provider (via HuggingFace API)\n');
8
+ try {
9
+ // Test 1: Initialize provider
10
+ console.log('Test 1: Provider Initialization');
11
+ console.log('================================');
12
+ const provider = new ONNXPhi4Provider({
13
+ modelId: 'microsoft/Phi-3-mini-4k-instruct',
14
+ huggingfaceApiKey: process.env.HUGGINGFACE_API_KEY
15
+ });
16
+ const info = provider.getModelInfo();
17
+ console.log(`āœ… Provider initialized`);
18
+ console.log(`šŸ“Š Model: ${info.modelId}`);
19
+ console.log(`šŸ”§ Mode: ${info.mode}`);
20
+ console.log(`⚔ Supports local: ${info.supportsLocalInference}\n`);
21
+ // Test 2: Simple chat completion
22
+ console.log('Test 2: Chat Completion');
23
+ console.log('=======================');
24
+ const chatParams = {
25
+ model: 'microsoft/Phi-3-mini-4k-instruct',
26
+ messages: [
27
+ {
28
+ role: 'user',
29
+ content: 'What is 2+2? Answer in one sentence.'
30
+ }
31
+ ],
32
+ maxTokens: 50,
33
+ temperature: 0.3
34
+ };
35
+ console.log(`šŸ“¤ Sending request...`);
36
+ console.log(`šŸ“ Question: ${chatParams.messages[0].content}\n`);
37
+ const startTime = Date.now();
38
+ const response = await provider.chat(chatParams);
39
+ const latency = Date.now() - startTime;
40
+ console.log('šŸ“„ Response received:');
41
+ console.log(` Provider: ${response.metadata?.provider}`);
42
+ console.log(` Model: ${response.model}`);
43
+ console.log(` Mode: ${response.metadata?.mode}`);
44
+ console.log(` Latency: ${latency}ms`);
45
+ console.log(` Usage: ${response.usage?.inputTokens} in / ${response.usage?.outputTokens} out`);
46
+ console.log(` Cost: $${response.metadata?.cost?.toFixed(6) || 0}`);
47
+ console.log(`\n Content:`);
48
+ for (const block of response.content) {
49
+ if (block.type === 'text') {
50
+ console.log(` ${block.text}`);
51
+ }
52
+ }
53
+ console.log('\nāœ… Test 2 passed!\n');
54
+ // Test 3: Reasoning test
55
+ console.log('Test 3: Reasoning Test');
56
+ console.log('======================');
57
+ const reasoningParams = {
58
+ model: 'microsoft/Phi-3-mini-4k-instruct',
59
+ messages: [
60
+ {
61
+ role: 'user',
62
+ content: 'If a train travels at 60mph for 2 hours, how far does it go?'
63
+ }
64
+ ],
65
+ maxTokens: 100,
66
+ temperature: 0.5
67
+ };
68
+ console.log(`šŸ“¤ Testing reasoning...`);
69
+ const reasoningResponse = await provider.chat(reasoningParams);
70
+ console.log('šŸ“„ Response:');
71
+ console.log(` ${reasoningResponse.content[0].type === 'text' ? reasoningResponse.content[0].text : 'N/A'}`);
72
+ console.log('\nāœ… Test 3 passed!\n');
73
+ // Test 4: Model info
74
+ console.log('Test 4: Model Information');
75
+ console.log('=========================');
76
+ const modelInfo = provider.getModelInfo();
77
+ console.log(`šŸ“Š Model ID: ${modelInfo.modelId}`);
78
+ console.log(`šŸ”§ Inference Mode: ${modelInfo.mode}`);
79
+ console.log(`šŸ“ Model Path: ${modelInfo.modelPath}`);
80
+ console.log(`šŸ”‘ API Key: ${modelInfo.apiKey || 'Not set'}`);
81
+ console.log(`⚔ Local ONNX Ready: ${modelInfo.supportsLocalInference}`);
82
+ console.log('\nāœ… Test 4 passed!\n');
83
+ // Test 5: Performance benchmark
84
+ console.log('Test 5: Performance Benchmark');
85
+ console.log('=============================');
86
+ const benchmarkParams = {
87
+ model: 'microsoft/Phi-3-mini-4k-instruct',
88
+ messages: [
89
+ {
90
+ role: 'user',
91
+ content: 'Count from 1 to 5.'
92
+ }
93
+ ],
94
+ maxTokens: 30,
95
+ temperature: 0.5
96
+ };
97
+ const benchmarkRuns = 3;
98
+ const latencies = [];
99
+ for (let i = 0; i < benchmarkRuns; i++) {
100
+ const start = Date.now();
101
+ await provider.chat(benchmarkParams);
102
+ const duration = Date.now() - start;
103
+ latencies.push(duration);
104
+ console.log(` Run ${i + 1}: ${duration}ms`);
105
+ }
106
+ const avgLatency = latencies.reduce((a, b) => a + b, 0) / latencies.length;
107
+ console.log(`\nšŸ“Š Benchmark Results:`);
108
+ console.log(` Average Latency: ${avgLatency.toFixed(0)}ms`);
109
+ console.log(` Min Latency: ${Math.min(...latencies)}ms`);
110
+ console.log(` Max Latency: ${Math.max(...latencies)}ms`);
111
+ console.log('\nāœ… Test 5 passed!\n');
112
+ // Final summary
113
+ console.log('šŸŽ‰ All Phi-4 Tests Passed!');
114
+ console.log('==========================');
115
+ console.log(`āœ… Provider initialization working`);
116
+ console.log(`āœ… HuggingFace API inference functional`);
117
+ console.log(`āœ… Chat completion successful`);
118
+ console.log(`āœ… Reasoning capability verified`);
119
+ console.log(`āœ… Performance: ${avgLatency.toFixed(0)}ms average`);
120
+ console.log(`\nšŸ’” Next Steps:`);
121
+ console.log(` 1. Free up disk space (need 5GB)`);
122
+ console.log(` 2. Download model.onnx.data`);
123
+ console.log(` 3. Switch to local ONNX inference`);
124
+ console.log(` 4. Benchmark local vs API performance`);
125
+ }
126
+ catch (error) {
127
+ console.error('\nāŒ Test Failed!');
128
+ console.error('===============');
129
+ console.error(error);
130
+ process.exit(1);
131
+ }
132
+ }
133
+ // Run tests
134
+ testPhi4Provider().catch(error => {
135
+ console.error('Fatal error:', error);
136
+ process.exit(1);
137
+ });
@@ -0,0 +1,2 @@
1
+ // Core types for multi-model router
2
+ export {};
@@ -0,0 +1,106 @@
1
+ // Agent loader for .claude/agents integration
2
+ import { readFileSync, readdirSync, statSync } from 'fs';
3
+ import { join, extname } from 'path';
4
+ import { logger } from './logger.js';
5
+ /**
6
+ * Parse agent markdown file with frontmatter
7
+ */
8
+ function parseAgentFile(filePath) {
9
+ try {
10
+ const content = readFileSync(filePath, 'utf-8');
11
+ // Check for frontmatter
12
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
13
+ if (!frontmatterMatch) {
14
+ logger.warn('Agent file missing frontmatter', { filePath });
15
+ return null;
16
+ }
17
+ const [, frontmatter, systemPrompt] = frontmatterMatch;
18
+ // Parse YAML-like frontmatter
19
+ const meta = {};
20
+ frontmatter.split('\n').forEach(line => {
21
+ const match = line.match(/^(\w+):\s*(.+)$/);
22
+ if (match) {
23
+ const [, key, value] = match;
24
+ // Remove quotes if present
25
+ const cleanValue = value.replace(/^["']|["']$/g, '');
26
+ if (key === 'tools') {
27
+ meta[key] = cleanValue.split(',').map(t => t.trim());
28
+ }
29
+ else {
30
+ meta[key] = cleanValue;
31
+ }
32
+ }
33
+ });
34
+ if (!meta.name || !meta.description) {
35
+ logger.warn('Agent file missing required metadata', { filePath });
36
+ return null;
37
+ }
38
+ return {
39
+ name: meta.name,
40
+ description: meta.description,
41
+ systemPrompt: systemPrompt.trim(),
42
+ color: meta.color,
43
+ tools: meta.tools,
44
+ filePath
45
+ };
46
+ }
47
+ catch (error) {
48
+ logger.error('Failed to parse agent file', { filePath, error });
49
+ return null;
50
+ }
51
+ }
52
+ /**
53
+ * Recursively find all agent definition files
54
+ */
55
+ function findAgentFiles(dir) {
56
+ const files = [];
57
+ try {
58
+ const entries = readdirSync(dir);
59
+ for (const entry of entries) {
60
+ const fullPath = join(dir, entry);
61
+ const stat = statSync(fullPath);
62
+ if (stat.isDirectory()) {
63
+ files.push(...findAgentFiles(fullPath));
64
+ }
65
+ else if (extname(entry) === '.md' && entry !== 'README.md') {
66
+ files.push(fullPath);
67
+ }
68
+ }
69
+ }
70
+ catch (error) {
71
+ logger.warn('Failed to read directory', { dir, error });
72
+ }
73
+ return files;
74
+ }
75
+ /**
76
+ * Load all agents from .claude/agents directory
77
+ */
78
+ export function loadAgents(agentsDir = process.env.AGENTS_DIR || '/app/.claude/agents') {
79
+ const agents = new Map();
80
+ logger.info('Loading agents from directory', { agentsDir });
81
+ const agentFiles = findAgentFiles(agentsDir);
82
+ logger.debug('Found agent files', { count: agentFiles.length });
83
+ for (const filePath of agentFiles) {
84
+ const agent = parseAgentFile(filePath);
85
+ if (agent) {
86
+ agents.set(agent.name, agent);
87
+ logger.debug('Loaded agent', { name: agent.name, description: agent.description.substring(0, 100) });
88
+ }
89
+ }
90
+ logger.info('Agents loaded successfully', { count: agents.size });
91
+ return agents;
92
+ }
93
+ /**
94
+ * Get a specific agent by name
95
+ */
96
+ export function getAgent(name, agentsDir) {
97
+ const agents = loadAgents(agentsDir);
98
+ return agents.get(name);
99
+ }
100
+ /**
101
+ * List all available agents
102
+ */
103
+ export function listAgents(agentsDir) {
104
+ const agents = loadAgents(agentsDir);
105
+ return Array.from(agents.values());
106
+ }