agentic-flow 2.0.1-alpha.5 → 2.0.1-alpha.9

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 (198) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
  4. package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
  5. package/dist/agentdb/controllers/EmbeddingService.js +1 -0
  6. package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
  7. package/dist/billing/mcp/tools.d.ts.map +1 -1
  8. package/dist/billing/mcp/tools.js +2 -0
  9. package/dist/billing/mcp/tools.js.map +1 -1
  10. package/dist/cli/commands/hooks.d.ts +18 -0
  11. package/dist/cli/commands/hooks.d.ts.map +1 -0
  12. package/dist/cli/commands/hooks.js +750 -0
  13. package/dist/cli/commands/hooks.js.map +1 -0
  14. package/dist/cli-proxy.js +26 -1
  15. package/dist/cli-proxy.js.map +1 -1
  16. package/dist/core/agentdb-fast.js +3 -3
  17. package/dist/core/agentdb-fast.js.map +1 -1
  18. package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
  19. package/dist/core/agentdb-wrapper-enhanced.js +32 -17
  20. package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
  21. package/dist/core/attention-native.d.ts +1 -0
  22. package/dist/core/attention-native.d.ts.map +1 -1
  23. package/dist/core/attention-native.js +6 -1
  24. package/dist/core/attention-native.js.map +1 -1
  25. package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
  26. package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
  27. package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
  28. package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
  29. package/dist/intelligence/RuVectorIntelligence.js +852 -0
  30. package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
  31. package/dist/intelligence/index.d.ts +14 -0
  32. package/dist/intelligence/index.d.ts.map +1 -0
  33. package/dist/intelligence/index.js +14 -0
  34. package/dist/intelligence/index.js.map +1 -0
  35. package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
  36. package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
  37. package/dist/llm/RuvLLMOrchestrator.js +442 -0
  38. package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
  39. package/dist/llm/index.d.ts +9 -0
  40. package/dist/llm/index.d.ts.map +1 -0
  41. package/dist/llm/index.js +8 -0
  42. package/dist/llm/index.js.map +1 -0
  43. package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
  44. package/dist/mcp/claudeFlowSdkServer.js +86 -21
  45. package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
  46. package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
  47. package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
  48. package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
  49. package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
  50. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
  51. package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
  52. package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
  53. package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
  54. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
  55. package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
  56. package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
  57. package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
  58. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
  59. package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
  60. package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
  61. package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
  62. package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
  63. package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
  64. package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
  65. package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
  66. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +91 -0
  67. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
  68. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +269 -0
  69. package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
  70. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
  71. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
  72. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +416 -0
  73. package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
  74. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
  75. package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
  76. package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
  77. package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
  78. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
  79. package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
  80. package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
  81. package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
  82. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
  83. package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
  84. package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
  85. package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
  86. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
  87. package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
  88. package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
  89. package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
  90. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
  91. package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
  92. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
  93. package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
  94. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
  95. package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
  96. package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
  97. package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
  98. package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
  99. package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
  100. package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
  101. package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
  102. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
  103. package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
  104. package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
  105. package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
  106. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
  107. package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
  108. package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
  109. package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
  110. package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
  111. package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
  112. package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
  113. package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
  114. package/dist/mcp/tools/sona-tools.js +15 -3
  115. package/dist/mcp/tools/sona-tools.js.map +1 -1
  116. package/dist/memory/SharedMemoryPool.d.ts +16 -3
  117. package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
  118. package/dist/memory/SharedMemoryPool.js +33 -1
  119. package/dist/memory/SharedMemoryPool.js.map +1 -1
  120. package/dist/middleware/auth.middleware.d.ts +114 -0
  121. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  122. package/dist/middleware/auth.middleware.js +222 -0
  123. package/dist/middleware/auth.middleware.js.map +1 -0
  124. package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
  125. package/dist/optimizations/agent-booster-migration.js.map +1 -1
  126. package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
  127. package/dist/proxy/anthropic-to-gemini.js.map +1 -1
  128. package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
  129. package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
  130. package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
  131. package/dist/proxy/anthropic-to-requesty.js.map +1 -1
  132. package/dist/proxy/quic-proxy.d.ts +0 -1
  133. package/dist/proxy/quic-proxy.d.ts.map +1 -1
  134. package/dist/proxy/quic-proxy.js +2 -1
  135. package/dist/proxy/quic-proxy.js.map +1 -1
  136. package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
  137. package/dist/reasoningbank/AdvancedMemory.js +12 -1
  138. package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
  139. package/dist/reasoningbank/HybridBackend.d.ts +9 -0
  140. package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
  141. package/dist/reasoningbank/HybridBackend.js +48 -4
  142. package/dist/reasoningbank/HybridBackend.js.map +1 -1
  143. package/dist/reasoningbank/backend-selector.d.ts +1 -1
  144. package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
  145. package/dist/reasoningbank/backend-selector.js.map +1 -1
  146. package/dist/reasoningbank/index-new.d.ts +0 -6
  147. package/dist/reasoningbank/index-new.d.ts.map +1 -1
  148. package/dist/reasoningbank/index-new.js +9 -7
  149. package/dist/reasoningbank/index-new.js.map +1 -1
  150. package/dist/reasoningbank/index.d.ts +1 -6
  151. package/dist/reasoningbank/index.d.ts.map +1 -1
  152. package/dist/reasoningbank/index.js +10 -7
  153. package/dist/reasoningbank/index.js.map +1 -1
  154. package/dist/router/providers/onnx-local.d.ts.map +1 -1
  155. package/dist/router/providers/onnx-local.js +3 -1
  156. package/dist/router/providers/onnx-local.js.map +1 -1
  157. package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
  158. package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
  159. package/dist/routing/CircuitBreakerRouter.js +460 -0
  160. package/dist/routing/CircuitBreakerRouter.js.map +1 -0
  161. package/dist/routing/SemanticRouter.d.ts +164 -0
  162. package/dist/routing/SemanticRouter.d.ts.map +1 -0
  163. package/dist/routing/SemanticRouter.js +291 -0
  164. package/dist/routing/SemanticRouter.js.map +1 -0
  165. package/dist/routing/index.d.ts +12 -0
  166. package/dist/routing/index.d.ts.map +1 -0
  167. package/dist/routing/index.js +10 -0
  168. package/dist/routing/index.js.map +1 -0
  169. package/dist/services/embedding-service.d.ts.map +1 -1
  170. package/dist/services/embedding-service.js +5 -2
  171. package/dist/services/embedding-service.js.map +1 -1
  172. package/dist/services/sona-agent-training.js +1 -1
  173. package/dist/services/sona-agent-training.js.map +1 -1
  174. package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
  175. package/dist/services/sona-agentdb-integration.js +10 -5
  176. package/dist/services/sona-agentdb-integration.js.map +1 -1
  177. package/dist/services/sona-service.d.ts +6 -6
  178. package/dist/services/sona-service.d.ts.map +1 -1
  179. package/dist/services/sona-service.js +3 -1
  180. package/dist/services/sona-service.js.map +1 -1
  181. package/dist/utils/audit-logger.d.ts +115 -0
  182. package/dist/utils/audit-logger.d.ts.map +1 -0
  183. package/dist/utils/audit-logger.js +228 -0
  184. package/dist/utils/audit-logger.js.map +1 -0
  185. package/dist/utils/cli.d.ts +1 -1
  186. package/dist/utils/cli.d.ts.map +1 -1
  187. package/dist/utils/cli.js +5 -0
  188. package/dist/utils/cli.js.map +1 -1
  189. package/dist/utils/input-validator.d.ts +116 -0
  190. package/dist/utils/input-validator.d.ts.map +1 -0
  191. package/dist/utils/input-validator.js +299 -0
  192. package/dist/utils/input-validator.js.map +1 -0
  193. package/dist/utils/rate-limiter.js +2 -2
  194. package/dist/utils/rate-limiter.js.map +1 -1
  195. package/package.json +7 -2
  196. package/scripts/postinstall.js +68 -0
  197. package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
  198. package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"cli-proxy.js","sourceRoot":"","sources":["../src/cli-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Agentic Flow - Standalone CLI with integrated OpenRouter proxy\n * Usage: npx agentic-flow-proxy --agent coder --task \"Create code\" --openrouter\n */\n\nimport dotenv from \"dotenv\";\nimport { existsSync, readFileSync } from 'fs';\nimport { resolve as pathResolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\n// Load .env from current directory, or search up the directory tree\nfunction loadEnvRecursive(startPath: string = process.cwd()): boolean {\n let currentPath = startPath;\n const root = pathResolve('/');\n\n while (currentPath !== root) {\n const envPath = pathResolve(currentPath, '.env');\n if (existsSync(envPath)) {\n dotenv.config({ path: envPath });\n return true;\n }\n currentPath = pathResolve(currentPath, '..');\n }\n\n // Fallback to default behavior\n dotenv.config();\n return false;\n}\n\nloadEnvRecursive();\nimport { AnthropicToOpenRouterProxy } from \"./proxy/anthropic-to-openrouter.js\";\nimport { AnthropicToRequestyProxy } from \"./proxy/anthropic-to-requesty.js\";\nimport { logger } from \"./utils/logger.js\";\nimport { parseArgs } from \"./utils/cli.js\";\nimport { getAgent, listAgents } from \"./utils/agentLoader.js\";\nimport { claudeAgent } from \"./agents/claudeAgent.js\";\nimport { claudeAgentDirect } from \"./agents/claudeAgentDirect.js\";\nimport { handleMCPCommand } from \"./utils/mcpCommands.js\";\nimport { handleReasoningBankCommand } from \"./utils/reasoningbankCommands.js\";\nimport { handleConfigCommand } from \"./cli/config-wizard.js\";\nimport { handleAgentCommand } from \"./cli/agent-manager.js\";\nimport { handleFederationCommand } from \"./cli/federation-cli.js\";\nimport { ModelOptimizer } from \"./utils/modelOptimizer.js\";\nimport { detectModelCapabilities } from \"./utils/modelCapabilities.js\";\nimport { AgentBoosterPreprocessor } from \"./utils/agentBoosterPreprocessor.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(readFileSync(pathResolve(__dirname, '../package.json'), 'utf-8'));\nconst VERSION = packageJson.version;\n\nclass AgenticFlowCLI {\n private proxyServer: any = null;\n private proxyPort: number = 3000;\n\n async start() {\n const options = parseArgs();\n\n if (options.version) {\n console.log(`agentic-flow v${VERSION}`);\n process.exit(0);\n }\n\n if (options.help) {\n this.printHelp();\n process.exit(0);\n }\n\n // If no mode and no agent specified, show help\n if (!options.agent && options.mode !== 'list' && !['config', 'agent-manager', 'mcp-manager', 'proxy', 'quic', 'claude-code', 'mcp', 'reasoningbank', 'federation'].includes(options.mode)) {\n this.printHelp();\n process.exit(0);\n }\n\n if (options.mode === 'list') {\n this.listAgents();\n process.exit(0);\n }\n\n if (options.mode === 'config') {\n // Handle config wizard\n const configArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'config'\n await handleConfigCommand(configArgs);\n process.exit(0);\n }\n\n if (options.mode === 'agent-manager') {\n // Handle agent management commands\n const agentArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'agent'\n await handleAgentCommand(agentArgs);\n process.exit(0);\n }\n\n if (options.mode === 'mcp-manager') {\n // Handle MCP manager commands (add, list, remove, etc.)\n const { spawn } = await import('child_process');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const mcpManagerPath = resolve(__dirname, './cli/mcp-manager.js');\n\n // Pass all args after 'mcp' to mcp-manager\n const mcpArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'mcp'\n\n const proc = spawn('node', [mcpManagerPath, ...mcpArgs], {\n stdio: 'inherit'\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'proxy') {\n // Run standalone proxy server for Claude Code/Cursor\n await this.runStandaloneProxy();\n return;\n }\n\n if (options.mode === 'quic') {\n // Run QUIC transport proxy server\n await this.runQuicProxy();\n return;\n }\n\n if (options.mode === 'claude-code') {\n // Spawn Claude Code with auto-configured proxy\n const { spawn } = await import('child_process');\n const claudeCodePath = pathResolve(__dirname, './cli/claude-code-wrapper.js');\n\n const proc = spawn('node', [claudeCodePath, ...process.argv.slice(3)], {\n stdio: 'inherit',\n env: process.env as NodeJS.ProcessEnv\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'mcp') {\n // Run standalone MCP server directly\n const { spawn } = await import('child_process');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const serverPath = resolve(__dirname, './mcp/standalone-stdio.js');\n\n const proc = spawn('node', [serverPath], {\n stdio: 'inherit'\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n // Handle termination signals\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'reasoningbank') {\n // Handle ReasoningBank commands\n const subcommand = process.argv[3] || 'help';\n await handleReasoningBankCommand(subcommand);\n process.exit(0);\n }\n\n if (options.mode === 'federation') {\n // Handle Federation commands\n const federationArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'federation'\n await handleFederationCommand(federationArgs);\n process.exit(0);\n }\n\n // Apply model optimization if requested\n if (options.optimize && options.agent && options.task) {\n const recommendation = ModelOptimizer.optimize({\n agent: options.agent,\n task: options.task,\n priority: options.optimizePriority || 'balanced',\n maxCostPerTask: options.maxCost,\n requiresTools: true // Agents have MCP tools available, so require tool support\n });\n\n // Display recommendation\n ModelOptimizer.displayRecommendation(recommendation);\n\n // Apply recommendation to options\n if (!options.provider || options.optimize) {\n options.provider = recommendation.provider;\n }\n if (!options.model || options.optimize) {\n options.model = recommendation.model;\n }\n\n console.log(`✅ Using optimized model: ${recommendation.modelName}\\n`);\n }\n\n // Determine which provider to use\n const useONNX = this.shouldUseONNX(options);\n const useOpenRouter = this.shouldUseOpenRouter(options);\n const useGemini = this.shouldUseGemini(options);\n // Requesty temporarily disabled - keep proxy files for future use\n const useRequesty = false; // this.shouldUseRequesty(options);\n\n // Debug output for provider selection\n if (options.verbose || process.env.VERBOSE === 'true') {\n console.log('\\n🔍 Provider Selection Debug:');\n console.log(` Provider flag: ${options.provider || 'not set'}`);\n console.log(` Model: ${options.model || 'default'}`);\n console.log(` Use ONNX: ${useONNX}`);\n console.log(` Use OpenRouter: ${useOpenRouter}`);\n console.log(` Use Gemini: ${useGemini}`);\n console.log(` Use Requesty: ${useRequesty}`);\n console.log(` OPENROUTER_API_KEY: ${process.env.OPENROUTER_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` GOOGLE_GEMINI_API_KEY: ${process.env.GOOGLE_GEMINI_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` REQUESTY_API_KEY: ${process.env.REQUESTY_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` ANTHROPIC_API_KEY: ${process.env.ANTHROPIC_API_KEY ? '✓ set' : '✗ not set'}\\n`);\n }\n\n try {\n // Start proxy if needed (ONNX, OpenRouter, Gemini, or Requesty)\n if (useONNX) {\n console.log('🚀 Initializing ONNX local inference proxy...');\n await this.startONNXProxy(options.model);\n } else if (useRequesty) {\n console.log('🚀 Initializing Requesty proxy...');\n await this.startRequestyProxy(options.model);\n } else if (useOpenRouter) {\n console.log('🚀 Initializing OpenRouter proxy...');\n await this.startOpenRouterProxy(options.model);\n } else if (useGemini) {\n console.log('🚀 Initializing Gemini proxy...');\n // Don't pass Anthropic model names to Gemini proxy\n const geminiModel = options.model?.startsWith('claude') ? undefined : options.model;\n console.log(`🔍 Model filtering: options.model=${options.model}, geminiModel=${geminiModel}`);\n await this.startGeminiProxy(geminiModel);\n } else {\n console.log('🚀 Using direct Anthropic API...\\n');\n }\n\n // Run agent\n await this.runAgent(options, useOpenRouter, useGemini, useONNX, useRequesty);\n\n logger.info('Execution completed successfully');\n process.exit(0);\n } catch (err: unknown) {\n logger.error('Execution failed', { error: err });\n console.error(err);\n process.exit(1);\n }\n }\n\n private shouldUseONNX(options: any): boolean {\n // Use ONNX if:\n // 1. Provider is explicitly set to onnx\n // 2. PROVIDER env var is set to onnx\n // 3. USE_ONNX env var is set\n if (options.provider === 'onnx' || process.env.PROVIDER === 'onnx') {\n return true;\n }\n\n if (process.env.USE_ONNX === 'true') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseGemini(options: any): boolean {\n // Use Gemini if:\n // 1. Provider is explicitly set to gemini\n // 2. PROVIDER env var is set to gemini\n // 3. USE_GEMINI env var is set\n // 4. GOOGLE_GEMINI_API_KEY is set and no other provider is specified\n if (options.provider === 'gemini' || process.env.PROVIDER === 'gemini') {\n return true;\n }\n\n if (process.env.USE_GEMINI === 'true') {\n return true;\n }\n\n // BUG FIX: Don't auto-select Gemini if user explicitly specified a different provider\n if (options.provider && options.provider !== 'gemini') {\n return false;\n }\n\n if (process.env.GOOGLE_GEMINI_API_KEY &&\n !process.env.ANTHROPIC_API_KEY &&\n !process.env.OPENROUTER_API_KEY &&\n options.provider !== 'onnx') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseRequesty(options: any): boolean {\n // Use Requesty if:\n // 1. Provider is explicitly set to requesty\n // 2. PROVIDER env var is set to requesty\n // 3. USE_REQUESTY env var is set\n if (options.provider === 'requesty' || process.env.PROVIDER === 'requesty') {\n return true;\n }\n\n if (process.env.USE_REQUESTY === 'true') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseOpenRouter(options: any): boolean {\n // Don't use OpenRouter if ONNX, Gemini, or Requesty is explicitly requested\n if (options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx') {\n return false;\n }\n\n if (options.provider === 'gemini' || process.env.PROVIDER === 'gemini') {\n return false;\n }\n\n if (options.provider === 'requesty' || process.env.PROVIDER === 'requesty') {\n return false;\n }\n\n // Use OpenRouter if:\n // 1. Provider is explicitly set to openrouter\n // 2. Model parameter contains \"/\" (e.g., \"meta-llama/llama-3.1-8b-instruct\")\n // 3. USE_OPENROUTER env var is set\n // 4. OPENROUTER_API_KEY is set and ANTHROPIC_API_KEY is not\n if (options.provider === 'openrouter' || process.env.PROVIDER === 'openrouter') {\n return true;\n }\n\n if (options.model?.includes('/')) {\n return true;\n }\n\n if (process.env.USE_OPENROUTER === 'true') {\n return true;\n }\n\n if (process.env.OPENROUTER_API_KEY && !process.env.ANTHROPIC_API_KEY && !process.env.GOOGLE_GEMINI_API_KEY) {\n return true;\n }\n\n return false;\n }\n\n private async startOpenRouterProxy(modelOverride?: string): Promise<void> {\n const openrouterKey = process.env.OPENROUTER_API_KEY;\n\n if (!openrouterKey) {\n console.error('❌ Error: OPENROUTER_API_KEY required for OpenRouter models');\n console.error('Set it in .env or export OPENROUTER_API_KEY=sk-or-v1-xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated OpenRouter proxy');\n\n const defaultModel = modelOverride ||\n process.env.COMPLETION_MODEL ||\n process.env.REASONING_MODEL ||\n 'deepseek/deepseek-chat';\n\n const capabilities = detectModelCapabilities(defaultModel);\n\n const proxy = new AnthropicToOpenRouterProxy({\n openrouterApiKey: openrouterKey,\n openrouterBaseUrl: process.env.ANTHROPIC_PROXY_BASE_URL,\n defaultModel,\n capabilities: capabilities\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses OPENROUTER_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: OpenRouter`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}`);\n\n if (capabilities.requiresEmulation) {\n console.log(`\\n⚙️ Detected: Model lacks native tool support`);\n console.log(`🔧 Using ${capabilities.emulationStrategy.toUpperCase()} emulation pattern`);\n console.log(`📊 Expected reliability: ${capabilities.emulationStrategy === 'react' ? '70-85%' : '50-70%'}`);\n }\n console.log('');\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startGeminiProxy(modelOverride?: string): Promise<void> {\n const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!geminiKey) {\n console.error('❌ Error: GOOGLE_GEMINI_API_KEY required for Gemini models');\n console.error('Set it in .env or export GOOGLE_GEMINI_API_KEY=xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated Gemini proxy');\n\n // BUG FIX: Don't use COMPLETION_MODEL for Gemini (it contains Anthropic model names)\n // Always use modelOverride if provided, otherwise default to gemini-2.0-flash-exp\n console.log(`🔍 Gemini proxy debug: modelOverride=${modelOverride}, COMPLETION_MODEL=${process.env.COMPLETION_MODEL}`);\n const defaultModel = (modelOverride && !modelOverride.startsWith('claude'))\n ? modelOverride\n : 'gemini-2.0-flash-exp';\n\n // Import Gemini proxy\n const { AnthropicToGeminiProxy } = await import('./proxy/anthropic-to-gemini.js');\n\n const proxy = new AnthropicToGeminiProxy({\n geminiApiKey: geminiKey,\n defaultModel\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses GOOGLE_GEMINI_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: Google Gemini`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}\\n`);\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startRequestyProxy(modelOverride?: string): Promise<void> {\n const requestyKey = process.env.REQUESTY_API_KEY;\n\n if (!requestyKey) {\n console.error('❌ Error: REQUESTY_API_KEY required for Requesty models');\n console.error('Set it in .env or export REQUESTY_API_KEY=sk-xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated Requesty proxy');\n\n const defaultModel = modelOverride ||\n process.env.COMPLETION_MODEL ||\n process.env.REASONING_MODEL ||\n 'deepseek/deepseek-chat';\n\n const capabilities = detectModelCapabilities(defaultModel);\n\n const proxy = new AnthropicToRequestyProxy({\n requestyApiKey: requestyKey,\n requestyBaseUrl: process.env.REQUESTY_BASE_URL,\n defaultModel,\n capabilities: capabilities\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses REQUESTY_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: Requesty`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}`);\n\n if (capabilities.requiresEmulation) {\n console.log(`\\n⚙️ Detected: Model lacks native tool support`);\n console.log(`🔧 Using ${capabilities.emulationStrategy.toUpperCase()} emulation pattern`);\n console.log(`📊 Expected reliability: ${capabilities.emulationStrategy === 'react' ? '70-85%' : '50-70%'}`);\n }\n console.log('');\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startONNXProxy(modelOverride?: string): Promise<void> {\n logger.info('Starting integrated ONNX local inference proxy');\n\n console.log('🔧 Provider: ONNX Local (Phi-4-mini)');\n console.log('💾 Free local inference - no API costs\\n');\n\n // Import ONNX proxy\n const { AnthropicToONNXProxy } = await import('./proxy/anthropic-to-onnx.js');\n\n // Use a different port for ONNX to avoid conflicts\n const onnxProxyPort = parseInt(process.env.ONNX_PROXY_PORT || '3001');\n\n const proxy = new AnthropicToONNXProxy({\n port: onnxProxyPort,\n modelPath: process.env.ONNX_MODEL_PATH,\n executionProviders: process.env.ONNX_EXECUTION_PROVIDERS?.split(',') || ['cpu']\n });\n\n // Start proxy in background\n await proxy.start();\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to ONNX proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${onnxProxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (local inference doesn't need key)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-onnx-local-key';\n }\n\n console.log(`🔗 Proxy Mode: ONNX Local Inference`);\n console.log(`🔧 Proxy URL: http://localhost:${onnxProxyPort}`);\n console.log(`🤖 Model: Phi-4-mini-instruct (ONNX)\\n`);\n\n // Wait for proxy to be ready and model to load\n console.log('⏳ Loading ONNX model... (this may take a moment)\\n');\n await new Promise(resolve => setTimeout(resolve, 2000));\n }\n\n private async runStandaloneProxy(): Promise<void> {\n const args = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'proxy'\n\n // Parse proxy arguments\n let provider = 'gemini';\n let port = 3000;\n let model: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === '--provider' || args[i] === '-p') && args[i + 1]) {\n provider = args[++i];\n } else if ((args[i] === '--port' || args[i] === '-P') && args[i + 1]) {\n port = parseInt(args[++i]);\n } else if ((args[i] === '--model' || args[i] === '-m') && args[i + 1]) {\n model = args[++i];\n } else if (args[i] === '--help' || args[i] === '-h') {\n this.printProxyHelp();\n process.exit(0);\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - Standalone Anthropic Proxy Server ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n if (provider === 'gemini') {\n const apiKey = process.env.GOOGLE_GEMINI_API_KEY;\n if (!apiKey) {\n console.error(`❌ Error: GOOGLE_GEMINI_API_KEY environment variable required\n\nSet it with:\n export GOOGLE_GEMINI_API_KEY=your-key-here\n`);\n process.exit(1);\n }\n\n const finalModel = model || process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp';\n\n console.log(`🚀 Starting Gemini → Anthropic Proxy\n📍 Port: ${port}\n🤖 Model: ${finalModel}\n🔗 Gemini API: https://generativelanguage.googleapis.com\n`);\n\n const { AnthropicToGeminiProxy } = await import('./proxy/anthropic-to-gemini.js');\n const proxy = new AnthropicToGeminiProxy({\n geminiApiKey: apiKey,\n defaultModel: finalModel\n });\n\n proxy.start(port);\n\n console.log(`✅ Proxy server running!\n\nConfigure Claude Code:\n export ANTHROPIC_BASE_URL=http://localhost:${port}\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n\nCost Savings: ~85% vs direct Anthropic API\n`);\n\n } else if (provider === 'openrouter') {\n const apiKey = process.env.OPENROUTER_API_KEY;\n if (!apiKey) {\n console.error(`❌ Error: OPENROUTER_API_KEY environment variable required\n\nSet it with:\n export OPENROUTER_API_KEY=sk-or-v1-your-key-here\n\nGet your key at: https://openrouter.ai/keys\n`);\n process.exit(1);\n }\n\n const finalModel = model || process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat';\n\n console.log(`🚀 Starting OpenRouter → Anthropic Proxy\n📍 Port: ${port}\n🤖 Model: ${finalModel}\n🔗 OpenRouter API: https://openrouter.ai/api/v1\n`);\n\n const { AnthropicToOpenRouterProxy } = await import('./proxy/anthropic-to-openrouter.js');\n const proxy = new AnthropicToOpenRouterProxy({\n openrouterApiKey: apiKey,\n defaultModel: finalModel\n });\n\n proxy.start(port);\n\n console.log(`✅ Proxy server running!\n\nConfigure Claude Code:\n export ANTHROPIC_BASE_URL=http://localhost:${port}\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n\nCost Savings: ~90% vs direct Anthropic API\nPopular Models:\n - openai/gpt-4o-mini (fast, cheap)\n - anthropic/claude-3.5-sonnet (via OpenRouter)\n - meta-llama/llama-3.1-405b-instruct (OSS)\n`);\n } else {\n console.error(`❌ Error: Invalid provider \"${provider}\". Must be \"gemini\" or \"openrouter\"`);\n process.exit(1);\n }\n\n // Keep process running\n process.on('SIGINT', () => {\n console.log('\\n\\n👋 Shutting down proxy server...');\n process.exit(0);\n });\n\n // Keep alive\n await new Promise(() => {});\n }\n\n private printProxyHelp(): void {\n console.log(`\nAgentic Flow - Standalone Anthropic Proxy Server\n\nUSAGE:\n npx agentic-flow proxy [OPTIONS]\n\nOPTIONS:\n --provider, -p <provider> Provider (gemini, openrouter) [default: gemini]\n --port, -P <port> Port number [default: 3000]\n --model, -m <model> Model to use (provider-specific)\n --help, -h Show this help\n\nENVIRONMENT VARIABLES:\n GOOGLE_GEMINI_API_KEY Required for Gemini\n OPENROUTER_API_KEY Required for OpenRouter\n COMPLETION_MODEL Default model (optional)\n\nEXAMPLES:\n # Start Gemini proxy\n npx agentic-flow proxy --provider gemini --port 3000\n\n # Start OpenRouter proxy with GPT-4o-mini\n npx agentic-flow proxy --provider openrouter --model \"openai/gpt-4o-mini\"\n\n # Use with Claude Code\n export ANTHROPIC_BASE_URL=http://localhost:3000\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n`);\n }\n\n private async runQuicProxy(): Promise<void> {\n const args = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'quic'\n\n // Parse QUIC arguments\n let port = parseInt(process.env.QUIC_PORT || '4433');\n let certPath = process.env.QUIC_CERT_PATH;\n let keyPath = process.env.QUIC_KEY_PATH;\n\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === '--port' || args[i] === '-P') && args[i + 1]) {\n port = parseInt(args[++i]);\n } else if ((args[i] === '--cert' || args[i] === '-c') && args[i + 1]) {\n certPath = args[++i];\n } else if ((args[i] === '--key' || args[i] === '-k') && args[i + 1]) {\n keyPath = args[++i];\n } else if (args[i] === '--help' || args[i] === '-h') {\n this.printQuicHelp();\n process.exit(0);\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - QUIC Transport Proxy Server ║\n║ Ultra-Low Latency Agent Communication ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n console.log(`🚀 Starting QUIC Transport Server\n📍 Port: ${port}\n🔐 Protocol: QUIC (UDP-based, TLS 1.3 encrypted)\n⚡ Performance: 50-70% faster than TCP\n`);\n\n if (certPath && keyPath) {\n console.log(`🔒 TLS Certificates:\n Cert: ${certPath}\n Key: ${keyPath}\n`);\n } else {\n console.log(`⚠️ Warning: No TLS certificates specified, using development certificates\n Set QUIC_CERT_PATH and QUIC_KEY_PATH for production use\n`);\n }\n\n // Import and start QUIC proxy\n const { spawn } = await import('child_process');\n const { resolve } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const quicProxyPath = resolve(__dirname, './proxy/quic-proxy.js');\n\n const env = { ...process.env };\n if (certPath) env.QUIC_CERT_PATH = certPath;\n if (keyPath) env.QUIC_KEY_PATH = keyPath;\n env.QUIC_PORT = port.toString();\n\n const proc = spawn('node', [quicProxyPath], {\n stdio: 'inherit',\n env: env as NodeJS.ProcessEnv\n });\n\n console.log(`✅ QUIC server running on UDP port ${port}!\n\nFeatures:\n • 0-RTT connection establishment\n • 100+ concurrent streams per connection\n • Built-in TLS 1.3 encryption\n • Connection migration support\n • Automatic packet loss recovery\n\nUse with agents:\n import { QuicTransport } from 'agentic-flow/transport/quic';\n const transport = new QuicTransport({ port: ${port} });\n await transport.connect();\n\nPress Ctrl+C to stop...\n`);\n\n proc.on('exit', (code) => {\n console.log(`\\n👋 QUIC server stopped (exit code: ${code})`);\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => {\n console.log('\\n\\n👋 Shutting down QUIC server...');\n proc.kill('SIGINT');\n });\n\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n }\n\n private printQuicHelp(): void {\n console.log(`\nAgentic Flow - QUIC Transport Proxy Server\n\nUSAGE:\n npx agentic-flow quic [OPTIONS]\n\nOPTIONS:\n --port, -P <port> Port number [default: 4433]\n --cert, -c <path> TLS certificate path\n --key, -k <path> TLS private key path\n --help, -h Show this help\n\nENVIRONMENT VARIABLES:\n QUIC_PORT QUIC server port (default: 4433)\n QUIC_CERT_PATH Path to TLS certificate\n QUIC_KEY_PATH Path to TLS private key\n\nEXAMPLES:\n # Start QUIC server (development mode)\n npx agentic-flow quic\n\n # Start with custom port\n npx agentic-flow quic --port 5443\n\n # Start with production certificates\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n\n # Use via npm scripts\n npm run proxy:quic # Start QUIC proxy\n npm run test:quic:wasm # Test WASM bindings\n\nPROGRAMMATIC USAGE:\n import { QuicTransport } from 'agentic-flow/transport/quic';\n\n const transport = new QuicTransport({\n host: 'localhost',\n port: 4433,\n maxConcurrentStreams: 100\n });\n\n await transport.connect();\n await transport.send({ type: 'task', data: { ... } });\n\nPERFORMANCE:\n • 50-70% faster than TCP-based protocols\n • 0-RTT reconnection (instant resume)\n • 100+ concurrent streams per connection\n • Built-in TLS 1.3 encryption\n • Survives network changes (WiFi ↔ cellular)\n`);\n }\n\n private async runAgent(options: any, useOpenRouter: boolean, useGemini: boolean, useONNX: boolean = false, useRequesty: boolean = false): Promise<void> {\n const agentName = options.agent || process.env.AGENT || '';\n const task = options.task || process.env.TASK || '';\n\n if (!agentName) {\n console.error('❌ Error: --agent required');\n this.printHelp();\n process.exit(1);\n }\n\n if (!task) {\n console.error('❌ Error: --task required');\n this.printHelp();\n process.exit(1);\n }\n\n // Set PROVIDER environment variable if --provider flag is used\n if (options.provider) {\n process.env.PROVIDER = options.provider;\n }\n\n // Check for API key (unless using ONNX)\n const isOnnx = options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx';\n\n if (!isOnnx && !useOpenRouter && !useGemini && !useRequesty && !process.env.ANTHROPIC_API_KEY) {\n console.error('\\n❌ Error: ANTHROPIC_API_KEY is required\\n');\n console.error('Please set your API key:');\n console.error(' export ANTHROPIC_API_KEY=sk-ant-xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider openrouter (requires OPENROUTER_API_KEY)');\n console.error(' --provider gemini (requires GOOGLE_GEMINI_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n\n if (!isOnnx && useOpenRouter && !process.env.OPENROUTER_API_KEY) {\n console.error('\\n❌ Error: OPENROUTER_API_KEY is required for OpenRouter\\n');\n console.error('Please set your API key:');\n console.error(' export OPENROUTER_API_KEY=sk-or-v1-xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider anthropic (requires ANTHROPIC_API_KEY)');\n console.error(' --provider gemini (requires GOOGLE_GEMINI_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n if (!isOnnx && useGemini && !process.env.GOOGLE_GEMINI_API_KEY) {\n console.error('\\n❌ Error: GOOGLE_GEMINI_API_KEY is required for Gemini\\n');\n console.error('Please set your API key:');\n console.error(' export GOOGLE_GEMINI_API_KEY=xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider anthropic (requires ANTHROPIC_API_KEY)');\n console.error(' --provider openrouter (requires OPENROUTER_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n const agent = getAgent(agentName);\n if (!agent) {\n const available = listAgents();\n console.error(`\\n❌ Agent '${agentName}' not found.\\n`);\n console.error('Available agents:');\n available.slice(0, 20).forEach(a => {\n console.error(` • ${a.name}: ${a.description.substring(0, 80)}...`);\n });\n if (available.length > 20) {\n console.error(` ... and ${available.length - 20} more (use --list to see all)`);\n }\n process.exit(1);\n }\n\n console.log(`\\n🤖 Agent: ${agent.name}`);\n console.log(`📝 Description: ${agent.description}\\n`);\n console.log(`🎯 Task: ${task}\\n`);\n\n if (useOpenRouter) {\n const model = options.model || process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat';\n console.log(`🔧 Provider: OpenRouter (via proxy)`);\n console.log(`🔧 Model: ${model}`);\n\n // Show tool capability information\n const capabilities = detectModelCapabilities(model);\n if (capabilities.requiresEmulation) {\n console.log(`⚙️ Tool Emulation: ${capabilities.emulationStrategy.toUpperCase()} pattern`);\n console.log(`📊 Note: This model uses prompt-based tool emulation`);\n console.log(` Tools are handled by Claude Agent SDK (limited to SDK tools)`);\n }\n console.log('');\n } else if (useGemini) {\n const model = options.model || 'gemini-2.0-flash-exp';\n console.log(`🔧 Provider: Google Gemini`);\n console.log(`🔧 Model: ${model}\\n`);\n } else if (options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx') {\n console.log(`🔧 Provider: ONNX Local (Phi-4-mini)`);\n console.log(`💾 Free local inference - no API costs`);\n if (process.env.ONNX_OPTIMIZED === 'true') {\n console.log(`⚡ Optimizations: Context pruning, prompt optimization`);\n }\n console.log('');\n }\n\n console.log('⏳ Running...\\n');\n\n // Try Agent Booster pre-processing if enabled\n if (options.agentBooster || process.env.AGENTIC_FLOW_AGENT_BOOSTER === 'true') {\n const preprocessor = new AgentBoosterPreprocessor({\n confidenceThreshold: options.boosterThreshold || parseFloat(process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD || '0.7')\n });\n\n console.log('⚡ Agent Booster: Analyzing task for pattern matching opportunities...\\n');\n\n const intent = preprocessor.detectIntent(task);\n\n if (intent) {\n console.log(`🎯 Detected intent: ${intent.type}`);\n if (intent.filePath) {\n console.log(`📄 Target file: ${intent.filePath}`);\n }\n console.log('🔧 Attempting Agent Booster pre-processing...\\n');\n\n const result = await preprocessor.tryApply(intent);\n\n if (result.success) {\n console.log(`✅ Agent Booster Success!\\n`);\n console.log(`⚡ Method: ${result.method}`);\n console.log(`⏱️ Latency: ${result.latency}ms`);\n console.log(`🎯 Confidence: ${((result.confidence || 0) * 100).toFixed(1)}%`);\n console.log(`📊 Strategy: ${result.strategy}`);\n console.log(`\\n✅ File updated successfully!\\n`);\n console.log('═══════════════════════════════════════\\n');\n console.log(result.output || 'Edit applied');\n console.log('\\n═══════════════════════════════════════\\n');\n\n logger.info('Agent Booster completed', {\n agent: agentName,\n latency: result.latency,\n confidence: result.confidence,\n strategy: result.strategy\n });\n\n return; // Skip LLM execution\n } else {\n console.log(`⚠️ Agent Booster: ${result.reason || 'Low confidence'}`);\n console.log(`🔄 Falling back to LLM agent...\\n`);\n }\n } else {\n console.log('ℹ️ No code editing pattern detected, using LLM agent...\\n');\n }\n }\n\n const streamHandler = options.stream ? (chunk: string) => process.stdout.write(chunk) : undefined;\n\n // FIXED: Use claudeAgentDirect (no Claude Code dependency) instead of claudeAgent\n // This allows agentic-flow to work standalone in Docker/CI/CD without Claude Code\n // BUG FIX: Don't pass Anthropic model names to non-Anthropic providers\n const modelForAgent = useGemini || useOpenRouter || useONNX || useRequesty\n ? (options.model?.startsWith('claude') ? undefined : options.model)\n : options.model;\n\n const result = await claudeAgentDirect(agent, task, streamHandler, modelForAgent);\n\n if (!options.stream) {\n console.log('\\n✅ Completed!\\n');\n console.log('═══════════════════════════════════════\\n');\n console.log(result.output);\n console.log('\\n═══════════════════════════════════════\\n');\n }\n\n logger.info('Agent completed', {\n agent: agentName,\n outputLength: result.output.length,\n provider: useOpenRouter ? 'openrouter' : useGemini ? 'gemini' : 'anthropic'\n });\n }\n\n private listAgents(): void {\n const agents = listAgents();\n console.log(`\\n📦 Available Agents (${agents.length} total)\\n`);\n\n const grouped = new Map<string, typeof agents>();\n agents.forEach(agent => {\n const parts = agent.filePath.split('/');\n const category = parts[parts.length - 2] || 'other';\n if (!grouped.has(category)) {\n grouped.set(category, []);\n }\n grouped.get(category)!.push(agent);\n });\n\n Array.from(grouped.entries())\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([category, categoryAgents]) => {\n console.log(`\\n${category.toUpperCase()}:`);\n categoryAgents.forEach(agent => {\n console.log(` ${agent.name.padEnd(30)} ${agent.description.substring(0, 80)}`);\n });\n });\n\n console.log(`\\nUsage:`);\n console.log(` npx agentic-flow --agent <name> --task \"Your task\"\\n`);\n }\n\n private printHelp(): void {\n console.log(`\n🤖 Agentic Flow v${VERSION} - AI Agent Orchestration with Multi-Provider Support\n\nNEW IN v1.9.4: Enterprise provider fallback & dynamic switching for long-running agents\n✅ Automatic failover ✅ Circuit breaker ✅ Cost optimization ✅ Health monitoring\n\nUSAGE:\n npx agentic-flow [COMMAND] [OPTIONS]\n\nCOMMANDS:\n config [subcommand] Manage environment configuration (interactive wizard)\n mcp <command> [server] Manage MCP servers (start, stop, status, list)\n agent <command> Agent management (list, create, info, conflicts)\n federation <command> Federation hub management (start, spawn, stats, test)\n proxy [options] Run standalone proxy server for Claude Code/Cursor\n quic [options] Run QUIC transport proxy for ultra-low latency (50-70% faster)\n claude-code [options] Spawn Claude Code with auto-configured proxy\n --list, -l List all available agents\n --agent, -a <name> Run specific agent mode\n\nCONFIG COMMANDS:\n npx agentic-flow config # Interactive wizard\n npx agentic-flow config set KEY VAL # Set configuration value\n npx agentic-flow config get KEY # Get configuration value\n npx agentic-flow config list # List all configuration\n npx agentic-flow config delete KEY # Delete configuration value\n npx agentic-flow config reset # Reset to defaults\n\nMCP COMMANDS:\n npx agentic-flow mcp start [server] Start MCP server(s)\n npx agentic-flow mcp stop [server] Stop MCP server(s)\n npx agentic-flow mcp status [server] Check MCP server status\n npx agentic-flow mcp list List all available MCP tools\n\n Available servers: claude-flow, flow-nexus, agentic-payments, all (default)\n\nAGENT COMMANDS:\n npx agentic-flow agent list [format] List all agents (summary/detailed/json)\n npx agentic-flow agent create Create new custom agent (interactive)\n npx agentic-flow agent info <name> Show detailed agent information\n npx agentic-flow agent conflicts Check for package/local conflicts\n\nFEDERATION COMMANDS:\n npx agentic-flow federation start Start federation hub server\n npx agentic-flow federation spawn Spawn ephemeral agent\n npx agentic-flow federation stats Show hub statistics\n npx agentic-flow federation status Show federation system status\n npx agentic-flow federation test Run multi-agent collaboration test\n npx agentic-flow federation help Show federation help\n\n Federation enables ephemeral agents (5s-15min lifetime) with persistent memory.\n Hub stores memories permanently; agents access past learnings from dead agents.\n\nOPTIONS:\n --task, -t <task> Task description for agent mode\n --model, -m <model> Model to use (triggers OpenRouter if contains \"/\")\n --provider, -p <name> Provider to use (anthropic, openrouter, gemini, onnx)\n --stream, -s Enable real-time streaming output\n --help, -h Show this help message\n\n API CONFIGURATION:\n --anthropic-key <key> Override ANTHROPIC_API_KEY environment variable\n --openrouter-key <key> Override OPENROUTER_API_KEY environment variable\n --gemini-key <key> Override GOOGLE_GEMINI_API_KEY environment variable\n\n AGENT BEHAVIOR:\n --temperature <0.0-1.0> Sampling temperature (creativity control)\n --max-tokens <number> Maximum tokens in response\n\n DIRECTORY:\n --agents-dir <path> Custom agents directory (default: .claude/agents)\n\n OUTPUT:\n --output <text|json|md> Output format (text/json/markdown)\n --verbose Enable verbose logging for debugging\n\n EXECUTION:\n --timeout <ms> Execution timeout in milliseconds\n --retry Auto-retry on transient errors\n\n MODEL OPTIMIZATION (NEW!):\n --optimize, -O Auto-select best model for agent/task based on priorities\n --priority <type> Optimization priority:\n • quality - Best results (Claude Sonnet 4.5, GPT-4o)\n • balanced - Mix quality/cost (DeepSeek R1, Gemini 2.5 Flash) [default]\n • cost - Cheapest (DeepSeek Chat V3, Llama 3.1 8B)\n • speed - Fastest responses (Gemini 2.5 Flash)\n • privacy - Local only (ONNX Phi-4, no cloud)\n --max-cost <dollars> Maximum cost per task (e.g., 0.001 = $0.001/task budget cap)\n\n Optimization analyzes agent type + task complexity to recommend best model.\n Example savings: DeepSeek R1 costs 85% less than Claude Sonnet 4.5 with similar quality.\n See docs/agentic-flow/benchmarks/MODEL_CAPABILITIES.md for full comparison.\n\nPROVIDER FALLBACK (NEW v1.9.4):\n Enterprise-grade provider fallback for long-running agents with automatic failover,\n circuit breaker, health monitoring, cost tracking, and crash recovery.\n\n Features:\n • Automatic failover between providers (Gemini → Claude → ONNX)\n • Circuit breaker prevents cascading failures (auto-recovery after timeout)\n • Real-time health monitoring (success rate, latency, error tracking)\n • Cost optimization (70% savings using Gemini for simple tasks)\n • Checkpointing for crash recovery (save/restore agent state)\n • Budget controls (hard limits on spending and runtime)\n\n See: docs/PROVIDER-FALLBACK-GUIDE.md for complete documentation\n Example: src/examples/use-provider-fallback.ts\n\nEXAMPLES:\n # MCP Server Management\n npx agentic-flow mcp start # Start all MCP servers\n npx agentic-flow mcp start claude-flow # Start specific server\n npx agentic-flow mcp list # List all 203+ MCP tools\n npx agentic-flow mcp status # Check server status\n\n # Federation Hub Management\n npx agentic-flow federation start # Start hub server (WebSocket)\n npx agentic-flow federation start --port 9443 --db-path ./data/hub.db\n npx agentic-flow federation spawn # Spawn ephemeral agent\n npx agentic-flow federation spawn --tenant acme-corp --lifetime 600\n npx agentic-flow federation stats # Show hub statistics\n npx agentic-flow federation test # Run multi-agent test\n\n # Proxy Server for Claude Code/Cursor\n npx agentic-flow proxy --provider openrouter --port 3000\n npx agentic-flow proxy --provider gemini --port 3001\n\n # QUIC Transport (Ultra-low latency, 50-70% faster than TCP)\n npx agentic-flow quic --port 4433 # Start QUIC server\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n npm run proxy:quic # Development mode\n npm run test:quic:wasm # Test WASM bindings\n\n # Claude Code Integration (Auto-start proxy + spawn Claude Code)\n npx agentic-flow claude-code --provider openrouter \"Write a Python function\"\n npx agentic-flow claude-code --provider gemini \"Create a REST API\"\n npx agentic-flow claude-code --provider anthropic \"Help me debug this code\"\n\n # Agent Execution\n npx agentic-flow --list # List all 150+ agents\n npx agentic-flow --agent coder --task \"Create Python hello world\"\n npx agentic-flow --agent coder --task \"Create REST API\" --provider openrouter\n npx agentic-flow --agent coder --task \"Create REST API\" --model \"meta-llama/llama-3.1-8b-instruct\"\n npx agentic-flow --agent coder --task \"Create code\" --provider onnx\n\n # Model Optimization (Auto-select best model)\n npx agentic-flow --agent coder --task \"Build API\" --optimize\n npx agentic-flow --agent coder --task \"Build API\" --optimize --priority cost\n npx agentic-flow --agent reviewer --task \"Security audit\" --optimize --priority quality\n npx agentic-flow --agent coder --task \"Simple function\" --optimize --max-cost 0.001\n\nENVIRONMENT VARIABLES:\n ANTHROPIC_API_KEY Anthropic API key (for Claude models)\n OPENROUTER_API_KEY OpenRouter API key (for alternative models)\n GOOGLE_GEMINI_API_KEY Google Gemini API key (for Gemini models)\n USE_OPENROUTER Set to 'true' to force OpenRouter usage\n USE_GEMINI Set to 'true' to force Gemini usage\n COMPLETION_MODEL Default model for OpenRouter\n AGENTS_DIR Path to agents directory\n PROXY_PORT Proxy server port (default: 3000)\n QUIC_PORT QUIC transport port (default: 4433)\n QUIC_CERT_PATH Path to TLS certificate for QUIC\n QUIC_KEY_PATH Path to TLS private key for QUIC\n\nOPENROUTER MODELS (Best Free Tested):\n ✅ deepseek/deepseek-r1-0528:free (reasoning, 95s/task, RFC validation)\n ✅ deepseek/deepseek-chat-v3.1:free (coding, 21-103s/task, enterprise-grade)\n ✅ meta-llama/llama-3.3-8b-instruct:free (versatile, 4.4s/task, fast coding)\n ✅ openai/gpt-4-turbo (premium, 10.7s/task, no :free needed)\n\n All models above support OpenRouter leaderboard tracking via HTTP-Referer headers.\n See https://openrouter.ai/models for full model catalog.\n\nMCP TOOLS (213+ available):\n • agentic-flow: 7 tools (agent execution, creation, management, model optimization)\n • claude-flow: 101 tools (neural networks, GitHub, workflows, DAA)\n • flow-nexus: 96 cloud tools (sandboxes, distributed swarms, templates)\n • agentic-payments: 6 tools (payment authorization, multi-agent consensus)\n\nOPTIMIZATION BENEFITS:\n 💰 Cost Savings: 85-98% cheaper models for same quality tasks\n 🎯 Smart Selection: Agent-aware (coder needs quality ≥85, researcher flexible)\n 📊 10+ Models: Claude, GPT-4o, Gemini, DeepSeek, Llama, ONNX local\n ⚡ Zero Overhead: <5ms decision time, no API calls during optimization\n\nTWO WAYS TO USE AGENTIC-FLOW:\n\n 1️⃣ DIRECT AGENT EXECUTION (agentic-flow agents)\n Run agents directly in your terminal with full control:\n\n npx agentic-flow --agent coder --task \"Create Python script\"\n npx agentic-flow --agent researcher --task \"Research AI trends\"\n\n This runs agentic-flow's 80+ specialized agents directly.\n\n 2️⃣ CLAUDE CODE INTEGRATION (proxy for Claude Code CLI)\n Use Claude Code CLI with OpenRouter/Gemini models via proxy:\n\n # Option A: Auto-spawn Claude Code with proxy (easiest)\n npx agentic-flow claude-code --provider openrouter \"Build API\"\n\n # Option B: Manual proxy setup (advanced)\n Terminal 1 - Start Proxy:\n npx agentic-flow proxy --provider openrouter\n\n Terminal 2 - Configure Claude Code:\n export ANTHROPIC_BASE_URL=\"http://localhost:3000\"\n export ANTHROPIC_API_KEY=\"sk-ant-proxy-dummy-key\"\n export OPENROUTER_API_KEY=\"sk-or-v1-xxxxx\"\n claude # Now uses OpenRouter via proxy\n\n Benefits of proxy mode:\n • 85-99% cost savings vs Claude Sonnet 4.5\n • Access to 100+ models (DeepSeek, Llama, Gemini, etc.)\n • Leaderboard tracking on OpenRouter\n • No code changes to Claude Code itself\n\nQUIC TRANSPORT (Ultra-Low Latency Agent Communication):\n QUIC is a UDP-based protocol offering 50-70% faster connections than TCP.\n\n Performance Benefits:\n • 0-RTT connection establishment - Instant reconnection without handshake delay\n • Stream multiplexing - Send 100+ concurrent messages without blocking\n • Built-in TLS 1.3 security - Encrypted by default\n • Connection migration - Survives network changes (WiFi → cellular)\n • Reduced latency - Perfect for real-time agent coordination\n\n Programmatic Usage (API):\n import { QuicTransport } from 'agentic-flow/transport/quic';\n\n const transport = new QuicTransport({\n host: 'localhost',\n port: 4433,\n maxConcurrentStreams: 100\n });\n\n await transport.connect();\n await transport.send({ type: 'task', data: { ... } });\n\n CLI Usage:\n # Start QUIC server\n npx agentic-flow quic --port 4433\n\n # With custom certificates\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n\n # Test WASM bindings\n npm run test:quic:wasm\n\n # Development mode\n npm run proxy:quic:dev\n\n Use Cases:\n • Multi-agent swarm coordination (mesh/hierarchical topologies)\n • High-frequency task distribution across worker agents\n • Real-time state synchronization between agents\n • Low-latency RPC for distributed agent systems\n\nDOCUMENTATION:\n https://github.com/ruvnet/agentic-flow\n https://ruv.io\n `);\n }\n}\n\n// Run CLI\nconst cli = new AgenticFlowCLI();\ncli.start();\n"]}
1
+ {"version":3,"file":"cli-proxy.js","sourceRoot":"","sources":["../src/cli-proxy.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/**\n * Agentic Flow - Standalone CLI with integrated OpenRouter proxy\n * Usage: npx agentic-flow-proxy --agent coder --task \"Create code\" --openrouter\n */\n\nimport dotenv from \"dotenv\";\nimport { existsSync, readFileSync } from 'fs';\nimport { resolve as pathResolve, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\n// Load .env from current directory, or search up the directory tree\nfunction loadEnvRecursive(startPath: string = process.cwd()): boolean {\n let currentPath = startPath;\n const root = pathResolve('/');\n\n while (currentPath !== root) {\n const envPath = pathResolve(currentPath, '.env');\n if (existsSync(envPath)) {\n dotenv.config({ path: envPath });\n return true;\n }\n currentPath = pathResolve(currentPath, '..');\n }\n\n // Fallback to default behavior\n dotenv.config();\n return false;\n}\n\nloadEnvRecursive();\nimport { AnthropicToOpenRouterProxy } from \"./proxy/anthropic-to-openrouter.js\";\nimport { AnthropicToRequestyProxy } from \"./proxy/anthropic-to-requesty.js\";\nimport { logger } from \"./utils/logger.js\";\nimport { parseArgs } from \"./utils/cli.js\";\nimport { getAgent, listAgents } from \"./utils/agentLoader.js\";\nimport { claudeAgent } from \"./agents/claudeAgent.js\";\nimport { claudeAgentDirect } from \"./agents/claudeAgentDirect.js\";\nimport { handleMCPCommand } from \"./utils/mcpCommands.js\";\nimport { handleReasoningBankCommand } from \"./utils/reasoningbankCommands.js\";\nimport { handleConfigCommand } from \"./cli/config-wizard.js\";\nimport { handleAgentCommand } from \"./cli/agent-manager.js\";\nimport { handleFederationCommand } from \"./cli/federation-cli.js\";\nimport { createHooksCommand } from \"./cli/commands/hooks.js\";\nimport { ModelOptimizer } from \"./utils/modelOptimizer.js\";\nimport { detectModelCapabilities } from \"./utils/modelCapabilities.js\";\nimport { AgentBoosterPreprocessor } from \"./utils/agentBoosterPreprocessor.js\";\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\nconst packageJson = JSON.parse(readFileSync(pathResolve(__dirname, '../package.json'), 'utf-8'));\nconst VERSION = packageJson.version;\n\nclass AgenticFlowCLI {\n private proxyServer: any = null;\n private proxyPort: number = 3000;\n\n async start() {\n const options = parseArgs();\n\n if (options.version) {\n console.log(`agentic-flow v${VERSION}`);\n process.exit(0);\n }\n\n if (options.help) {\n this.printHelp();\n process.exit(0);\n }\n\n // If no mode and no agent specified, show help\n if (!options.agent && options.mode !== 'list' && !['config', 'agent-manager', 'mcp-manager', 'proxy', 'quic', 'claude-code', 'mcp', 'reasoningbank', 'federation', 'hooks'].includes(options.mode)) {\n this.printHelp();\n process.exit(0);\n }\n\n if (options.mode === 'list') {\n this.listAgents();\n process.exit(0);\n }\n\n if (options.mode === 'config') {\n // Handle config wizard\n const configArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'config'\n await handleConfigCommand(configArgs);\n process.exit(0);\n }\n\n if (options.mode === 'agent-manager') {\n // Handle agent management commands\n const agentArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'agent'\n await handleAgentCommand(agentArgs);\n process.exit(0);\n }\n\n if (options.mode === 'mcp-manager') {\n // Handle MCP manager commands (add, list, remove, etc.)\n const { spawn } = await import('child_process');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const mcpManagerPath = resolve(__dirname, './cli/mcp-manager.js');\n\n // Pass all args after 'mcp' to mcp-manager\n const mcpArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'mcp'\n\n const proc = spawn('node', [mcpManagerPath, ...mcpArgs], {\n stdio: 'inherit'\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'proxy') {\n // Run standalone proxy server for Claude Code/Cursor\n await this.runStandaloneProxy();\n return;\n }\n\n if (options.mode === 'quic') {\n // Run QUIC transport proxy server\n await this.runQuicProxy();\n return;\n }\n\n if (options.mode === 'claude-code') {\n // Spawn Claude Code with auto-configured proxy\n const { spawn } = await import('child_process');\n const claudeCodePath = pathResolve(__dirname, './cli/claude-code-wrapper.js');\n\n const proc = spawn('node', [claudeCodePath, ...process.argv.slice(3)], {\n stdio: 'inherit',\n env: process.env as NodeJS.ProcessEnv\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'mcp') {\n // Run standalone MCP server directly\n const { spawn } = await import('child_process');\n const { resolve, dirname } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const serverPath = resolve(__dirname, './mcp/standalone-stdio.js');\n\n const proc = spawn('node', [serverPath], {\n stdio: 'inherit'\n });\n\n proc.on('exit', (code) => {\n process.exit(code || 0);\n });\n\n // Handle termination signals\n process.on('SIGINT', () => proc.kill('SIGINT'));\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n return;\n }\n\n if (options.mode === 'reasoningbank') {\n // Handle ReasoningBank commands\n const subcommand = process.argv[3] || 'help';\n await handleReasoningBankCommand(subcommand);\n process.exit(0);\n }\n\n if (options.mode === 'federation') {\n // Handle Federation commands\n const federationArgs = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'federation'\n await handleFederationCommand(federationArgs);\n process.exit(0);\n }\n\n if (options.mode === 'hooks') {\n // Handle Hooks commands via commander\n const { Command } = await import('commander');\n const program = new Command();\n program.name('agentic-flow').version(VERSION);\n program.addCommand(createHooksCommand());\n\n // Parse arguments starting from 'hooks'\n const hooksArgs = ['node', 'agentic-flow', 'hooks', ...process.argv.slice(3)];\n await program.parseAsync(hooksArgs);\n process.exit(0);\n }\n\n // Apply model optimization if requested\n if (options.optimize && options.agent && options.task) {\n const recommendation = ModelOptimizer.optimize({\n agent: options.agent,\n task: options.task,\n priority: options.optimizePriority || 'balanced',\n maxCostPerTask: options.maxCost,\n requiresTools: true // Agents have MCP tools available, so require tool support\n });\n\n // Display recommendation\n ModelOptimizer.displayRecommendation(recommendation);\n\n // Apply recommendation to options\n if (!options.provider || options.optimize) {\n options.provider = recommendation.provider;\n }\n if (!options.model || options.optimize) {\n options.model = recommendation.model;\n }\n\n console.log(`✅ Using optimized model: ${recommendation.modelName}\\n`);\n }\n\n // Determine which provider to use\n const useONNX = this.shouldUseONNX(options);\n const useOpenRouter = this.shouldUseOpenRouter(options);\n const useGemini = this.shouldUseGemini(options);\n // Requesty temporarily disabled - keep proxy files for future use\n const useRequesty = false; // this.shouldUseRequesty(options);\n\n // Debug output for provider selection\n if (options.verbose || process.env.VERBOSE === 'true') {\n console.log('\\n🔍 Provider Selection Debug:');\n console.log(` Provider flag: ${options.provider || 'not set'}`);\n console.log(` Model: ${options.model || 'default'}`);\n console.log(` Use ONNX: ${useONNX}`);\n console.log(` Use OpenRouter: ${useOpenRouter}`);\n console.log(` Use Gemini: ${useGemini}`);\n console.log(` Use Requesty: ${useRequesty}`);\n console.log(` OPENROUTER_API_KEY: ${process.env.OPENROUTER_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` GOOGLE_GEMINI_API_KEY: ${process.env.GOOGLE_GEMINI_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` REQUESTY_API_KEY: ${process.env.REQUESTY_API_KEY ? '✓ set' : '✗ not set'}`);\n console.log(` ANTHROPIC_API_KEY: ${process.env.ANTHROPIC_API_KEY ? '✓ set' : '✗ not set'}\\n`);\n }\n\n try {\n // Start proxy if needed (ONNX, OpenRouter, Gemini, or Requesty)\n if (useONNX) {\n console.log('🚀 Initializing ONNX local inference proxy...');\n await this.startONNXProxy(options.model);\n } else if (useRequesty) {\n console.log('🚀 Initializing Requesty proxy...');\n await this.startRequestyProxy(options.model);\n } else if (useOpenRouter) {\n console.log('🚀 Initializing OpenRouter proxy...');\n await this.startOpenRouterProxy(options.model);\n } else if (useGemini) {\n console.log('🚀 Initializing Gemini proxy...');\n // Don't pass Anthropic model names to Gemini proxy\n const geminiModel = options.model?.startsWith('claude') ? undefined : options.model;\n console.log(`🔍 Model filtering: options.model=${options.model}, geminiModel=${geminiModel}`);\n await this.startGeminiProxy(geminiModel);\n } else {\n console.log('🚀 Using direct Anthropic API...\\n');\n }\n\n // Run agent\n await this.runAgent(options, useOpenRouter, useGemini, useONNX, useRequesty);\n\n logger.info('Execution completed successfully');\n process.exit(0);\n } catch (err: unknown) {\n logger.error('Execution failed', { error: err });\n console.error(err);\n process.exit(1);\n }\n }\n\n private shouldUseONNX(options: any): boolean {\n // Use ONNX if:\n // 1. Provider is explicitly set to onnx\n // 2. PROVIDER env var is set to onnx\n // 3. USE_ONNX env var is set\n if (options.provider === 'onnx' || process.env.PROVIDER === 'onnx') {\n return true;\n }\n\n if (process.env.USE_ONNX === 'true') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseGemini(options: any): boolean {\n // Use Gemini if:\n // 1. Provider is explicitly set to gemini\n // 2. PROVIDER env var is set to gemini\n // 3. USE_GEMINI env var is set\n // 4. GOOGLE_GEMINI_API_KEY is set and no other provider is specified\n if (options.provider === 'gemini' || process.env.PROVIDER === 'gemini') {\n return true;\n }\n\n if (process.env.USE_GEMINI === 'true') {\n return true;\n }\n\n // BUG FIX: Don't auto-select Gemini if user explicitly specified a different provider\n if (options.provider && options.provider !== 'gemini') {\n return false;\n }\n\n if (process.env.GOOGLE_GEMINI_API_KEY &&\n !process.env.ANTHROPIC_API_KEY &&\n !process.env.OPENROUTER_API_KEY &&\n options.provider !== 'onnx') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseRequesty(options: any): boolean {\n // Use Requesty if:\n // 1. Provider is explicitly set to requesty\n // 2. PROVIDER env var is set to requesty\n // 3. USE_REQUESTY env var is set\n if (options.provider === 'requesty' || process.env.PROVIDER === 'requesty') {\n return true;\n }\n\n if (process.env.USE_REQUESTY === 'true') {\n return true;\n }\n\n return false;\n }\n\n private shouldUseOpenRouter(options: any): boolean {\n // Don't use OpenRouter if ONNX, Gemini, or Requesty is explicitly requested\n if (options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx') {\n return false;\n }\n\n if (options.provider === 'gemini' || process.env.PROVIDER === 'gemini') {\n return false;\n }\n\n if (options.provider === 'requesty' || process.env.PROVIDER === 'requesty') {\n return false;\n }\n\n // Use OpenRouter if:\n // 1. Provider is explicitly set to openrouter\n // 2. Model parameter contains \"/\" (e.g., \"meta-llama/llama-3.1-8b-instruct\")\n // 3. USE_OPENROUTER env var is set\n // 4. OPENROUTER_API_KEY is set and ANTHROPIC_API_KEY is not\n if (options.provider === 'openrouter' || process.env.PROVIDER === 'openrouter') {\n return true;\n }\n\n if (options.model?.includes('/')) {\n return true;\n }\n\n if (process.env.USE_OPENROUTER === 'true') {\n return true;\n }\n\n if (process.env.OPENROUTER_API_KEY && !process.env.ANTHROPIC_API_KEY && !process.env.GOOGLE_GEMINI_API_KEY) {\n return true;\n }\n\n return false;\n }\n\n private async startOpenRouterProxy(modelOverride?: string): Promise<void> {\n const openrouterKey = process.env.OPENROUTER_API_KEY;\n\n if (!openrouterKey) {\n console.error('❌ Error: OPENROUTER_API_KEY required for OpenRouter models');\n console.error('Set it in .env or export OPENROUTER_API_KEY=sk-or-v1-xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated OpenRouter proxy');\n\n const defaultModel = modelOverride ||\n process.env.COMPLETION_MODEL ||\n process.env.REASONING_MODEL ||\n 'deepseek/deepseek-chat';\n\n const capabilities = detectModelCapabilities(defaultModel);\n\n const proxy = new AnthropicToOpenRouterProxy({\n openrouterApiKey: openrouterKey,\n openrouterBaseUrl: process.env.ANTHROPIC_PROXY_BASE_URL,\n defaultModel,\n capabilities: capabilities\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses OPENROUTER_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: OpenRouter`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}`);\n\n if (capabilities.requiresEmulation) {\n console.log(`\\n⚙️ Detected: Model lacks native tool support`);\n console.log(`🔧 Using ${capabilities.emulationStrategy.toUpperCase()} emulation pattern`);\n console.log(`📊 Expected reliability: ${capabilities.emulationStrategy === 'react' ? '70-85%' : '50-70%'}`);\n }\n console.log('');\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startGeminiProxy(modelOverride?: string): Promise<void> {\n const geminiKey = process.env.GOOGLE_GEMINI_API_KEY;\n\n if (!geminiKey) {\n console.error('❌ Error: GOOGLE_GEMINI_API_KEY required for Gemini models');\n console.error('Set it in .env or export GOOGLE_GEMINI_API_KEY=xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated Gemini proxy');\n\n // BUG FIX: Don't use COMPLETION_MODEL for Gemini (it contains Anthropic model names)\n // Always use modelOverride if provided, otherwise default to gemini-2.0-flash-exp\n console.log(`🔍 Gemini proxy debug: modelOverride=${modelOverride}, COMPLETION_MODEL=${process.env.COMPLETION_MODEL}`);\n const defaultModel = (modelOverride && !modelOverride.startsWith('claude'))\n ? modelOverride\n : 'gemini-2.0-flash-exp';\n\n // Import Gemini proxy\n const { AnthropicToGeminiProxy } = await import('./proxy/anthropic-to-gemini.js');\n\n const proxy = new AnthropicToGeminiProxy({\n geminiApiKey: geminiKey,\n defaultModel\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses GOOGLE_GEMINI_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: Google Gemini`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}\\n`);\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startRequestyProxy(modelOverride?: string): Promise<void> {\n const requestyKey = process.env.REQUESTY_API_KEY;\n\n if (!requestyKey) {\n console.error('❌ Error: REQUESTY_API_KEY required for Requesty models');\n console.error('Set it in .env or export REQUESTY_API_KEY=sk-xxxxx');\n process.exit(1);\n }\n\n logger.info('Starting integrated Requesty proxy');\n\n const defaultModel = modelOverride ||\n process.env.COMPLETION_MODEL ||\n process.env.REASONING_MODEL ||\n 'deepseek/deepseek-chat';\n\n const capabilities = detectModelCapabilities(defaultModel);\n\n const proxy = new AnthropicToRequestyProxy({\n requestyApiKey: requestyKey,\n requestyBaseUrl: process.env.REQUESTY_BASE_URL,\n defaultModel,\n capabilities: capabilities\n });\n\n // Start proxy in background\n proxy.start(this.proxyPort);\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${this.proxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (actual auth uses REQUESTY_API_KEY)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-proxy-dummy-key';\n }\n\n console.log(`🔗 Proxy Mode: Requesty`);\n console.log(`🔧 Proxy URL: http://localhost:${this.proxyPort}`);\n console.log(`🤖 Default Model: ${defaultModel}`);\n\n if (capabilities.requiresEmulation) {\n console.log(`\\n⚙️ Detected: Model lacks native tool support`);\n console.log(`🔧 Using ${capabilities.emulationStrategy.toUpperCase()} emulation pattern`);\n console.log(`📊 Expected reliability: ${capabilities.emulationStrategy === 'react' ? '70-85%' : '50-70%'}`);\n }\n console.log('');\n\n // Wait for proxy to be ready\n await new Promise(resolve => setTimeout(resolve, 1500));\n }\n\n private async startONNXProxy(modelOverride?: string): Promise<void> {\n logger.info('Starting integrated ONNX local inference proxy');\n\n console.log('🔧 Provider: ONNX Local (Phi-4-mini)');\n console.log('💾 Free local inference - no API costs\\n');\n\n // Import ONNX proxy\n const { AnthropicToONNXProxy } = await import('./proxy/anthropic-to-onnx.js');\n\n // Use a different port for ONNX to avoid conflicts\n const onnxProxyPort = parseInt(process.env.ONNX_PROXY_PORT || '3001');\n\n const proxy = new AnthropicToONNXProxy({\n port: onnxProxyPort,\n modelPath: process.env.ONNX_MODEL_PATH,\n executionProviders: process.env.ONNX_EXECUTION_PROVIDERS?.split(',') || ['cpu']\n });\n\n // Start proxy in background\n await proxy.start();\n this.proxyServer = proxy;\n\n // Set ANTHROPIC_BASE_URL to ONNX proxy\n process.env.ANTHROPIC_BASE_URL = `http://localhost:${onnxProxyPort}`;\n\n // Set dummy ANTHROPIC_API_KEY for proxy (local inference doesn't need key)\n if (!process.env.ANTHROPIC_API_KEY) {\n process.env.ANTHROPIC_API_KEY = 'sk-ant-onnx-local-key';\n }\n\n console.log(`🔗 Proxy Mode: ONNX Local Inference`);\n console.log(`🔧 Proxy URL: http://localhost:${onnxProxyPort}`);\n console.log(`🤖 Model: Phi-4-mini-instruct (ONNX)\\n`);\n\n // Wait for proxy to be ready and model to load\n console.log('⏳ Loading ONNX model... (this may take a moment)\\n');\n await new Promise(resolve => setTimeout(resolve, 2000));\n }\n\n private async runStandaloneProxy(): Promise<void> {\n const args = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'proxy'\n\n // Parse proxy arguments\n let provider = 'gemini';\n let port = 3000;\n let model: string | undefined;\n\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === '--provider' || args[i] === '-p') && args[i + 1]) {\n provider = args[++i];\n } else if ((args[i] === '--port' || args[i] === '-P') && args[i + 1]) {\n port = parseInt(args[++i]);\n } else if ((args[i] === '--model' || args[i] === '-m') && args[i + 1]) {\n model = args[++i];\n } else if (args[i] === '--help' || args[i] === '-h') {\n this.printProxyHelp();\n process.exit(0);\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - Standalone Anthropic Proxy Server ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n if (provider === 'gemini') {\n const apiKey = process.env.GOOGLE_GEMINI_API_KEY;\n if (!apiKey) {\n console.error(`❌ Error: GOOGLE_GEMINI_API_KEY environment variable required\n\nSet it with:\n export GOOGLE_GEMINI_API_KEY=your-key-here\n`);\n process.exit(1);\n }\n\n const finalModel = model || process.env.COMPLETION_MODEL || 'gemini-2.0-flash-exp';\n\n console.log(`🚀 Starting Gemini → Anthropic Proxy\n📍 Port: ${port}\n🤖 Model: ${finalModel}\n🔗 Gemini API: https://generativelanguage.googleapis.com\n`);\n\n const { AnthropicToGeminiProxy } = await import('./proxy/anthropic-to-gemini.js');\n const proxy = new AnthropicToGeminiProxy({\n geminiApiKey: apiKey,\n defaultModel: finalModel\n });\n\n proxy.start(port);\n\n console.log(`✅ Proxy server running!\n\nConfigure Claude Code:\n export ANTHROPIC_BASE_URL=http://localhost:${port}\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n\nCost Savings: ~85% vs direct Anthropic API\n`);\n\n } else if (provider === 'openrouter') {\n const apiKey = process.env.OPENROUTER_API_KEY;\n if (!apiKey) {\n console.error(`❌ Error: OPENROUTER_API_KEY environment variable required\n\nSet it with:\n export OPENROUTER_API_KEY=sk-or-v1-your-key-here\n\nGet your key at: https://openrouter.ai/keys\n`);\n process.exit(1);\n }\n\n const finalModel = model || process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat';\n\n console.log(`🚀 Starting OpenRouter → Anthropic Proxy\n📍 Port: ${port}\n🤖 Model: ${finalModel}\n🔗 OpenRouter API: https://openrouter.ai/api/v1\n`);\n\n const { AnthropicToOpenRouterProxy } = await import('./proxy/anthropic-to-openrouter.js');\n const proxy = new AnthropicToOpenRouterProxy({\n openrouterApiKey: apiKey,\n defaultModel: finalModel\n });\n\n proxy.start(port);\n\n console.log(`✅ Proxy server running!\n\nConfigure Claude Code:\n export ANTHROPIC_BASE_URL=http://localhost:${port}\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n\nCost Savings: ~90% vs direct Anthropic API\nPopular Models:\n - openai/gpt-4o-mini (fast, cheap)\n - anthropic/claude-3.5-sonnet (via OpenRouter)\n - meta-llama/llama-3.1-405b-instruct (OSS)\n`);\n } else {\n console.error(`❌ Error: Invalid provider \"${provider}\". Must be \"gemini\" or \"openrouter\"`);\n process.exit(1);\n }\n\n // Keep process running\n process.on('SIGINT', () => {\n console.log('\\n\\n👋 Shutting down proxy server...');\n process.exit(0);\n });\n\n // Keep alive\n await new Promise(() => {});\n }\n\n private printProxyHelp(): void {\n console.log(`\nAgentic Flow - Standalone Anthropic Proxy Server\n\nUSAGE:\n npx agentic-flow proxy [OPTIONS]\n\nOPTIONS:\n --provider, -p <provider> Provider (gemini, openrouter) [default: gemini]\n --port, -P <port> Port number [default: 3000]\n --model, -m <model> Model to use (provider-specific)\n --help, -h Show this help\n\nENVIRONMENT VARIABLES:\n GOOGLE_GEMINI_API_KEY Required for Gemini\n OPENROUTER_API_KEY Required for OpenRouter\n COMPLETION_MODEL Default model (optional)\n\nEXAMPLES:\n # Start Gemini proxy\n npx agentic-flow proxy --provider gemini --port 3000\n\n # Start OpenRouter proxy with GPT-4o-mini\n npx agentic-flow proxy --provider openrouter --model \"openai/gpt-4o-mini\"\n\n # Use with Claude Code\n export ANTHROPIC_BASE_URL=http://localhost:3000\n export ANTHROPIC_API_KEY=sk-ant-proxy-dummy-key\n claude\n`);\n }\n\n private async runQuicProxy(): Promise<void> {\n const args = process.argv.slice(3); // Skip 'node', 'cli-proxy.js', 'quic'\n\n // Parse QUIC arguments\n let port = parseInt(process.env.QUIC_PORT || '4433');\n let certPath = process.env.QUIC_CERT_PATH;\n let keyPath = process.env.QUIC_KEY_PATH;\n\n for (let i = 0; i < args.length; i++) {\n if ((args[i] === '--port' || args[i] === '-P') && args[i + 1]) {\n port = parseInt(args[++i]);\n } else if ((args[i] === '--cert' || args[i] === '-c') && args[i + 1]) {\n certPath = args[++i];\n } else if ((args[i] === '--key' || args[i] === '-k') && args[i + 1]) {\n keyPath = args[++i];\n } else if (args[i] === '--help' || args[i] === '-h') {\n this.printQuicHelp();\n process.exit(0);\n }\n }\n\n console.log(`\n╔═══════════════════════════════════════════════════════╗\n║ Agentic Flow - QUIC Transport Proxy Server ║\n║ Ultra-Low Latency Agent Communication ║\n╚═══════════════════════════════════════════════════════╝\n`);\n\n console.log(`🚀 Starting QUIC Transport Server\n📍 Port: ${port}\n🔐 Protocol: QUIC (UDP-based, TLS 1.3 encrypted)\n⚡ Performance: 50-70% faster than TCP\n`);\n\n if (certPath && keyPath) {\n console.log(`🔒 TLS Certificates:\n Cert: ${certPath}\n Key: ${keyPath}\n`);\n } else {\n console.log(`⚠️ Warning: No TLS certificates specified, using development certificates\n Set QUIC_CERT_PATH and QUIC_KEY_PATH for production use\n`);\n }\n\n // Import and start QUIC proxy\n const { spawn } = await import('child_process');\n const { resolve } = await import('path');\n const { fileURLToPath } = await import('url');\n\n const __filename = fileURLToPath(import.meta.url);\n const __dirname = dirname(__filename);\n const quicProxyPath = resolve(__dirname, './proxy/quic-proxy.js');\n\n const env = { ...process.env };\n if (certPath) env.QUIC_CERT_PATH = certPath;\n if (keyPath) env.QUIC_KEY_PATH = keyPath;\n env.QUIC_PORT = port.toString();\n\n const proc = spawn('node', [quicProxyPath], {\n stdio: 'inherit',\n env: env as NodeJS.ProcessEnv\n });\n\n console.log(`✅ QUIC server running on UDP port ${port}!\n\nFeatures:\n • 0-RTT connection establishment\n • 100+ concurrent streams per connection\n • Built-in TLS 1.3 encryption\n • Connection migration support\n • Automatic packet loss recovery\n\nUse with agents:\n import { QuicTransport } from 'agentic-flow/transport/quic';\n const transport = new QuicTransport({ port: ${port} });\n await transport.connect();\n\nPress Ctrl+C to stop...\n`);\n\n proc.on('exit', (code) => {\n console.log(`\\n👋 QUIC server stopped (exit code: ${code})`);\n process.exit(code || 0);\n });\n\n process.on('SIGINT', () => {\n console.log('\\n\\n👋 Shutting down QUIC server...');\n proc.kill('SIGINT');\n });\n\n process.on('SIGTERM', () => proc.kill('SIGTERM'));\n }\n\n private printQuicHelp(): void {\n console.log(`\nAgentic Flow - QUIC Transport Proxy Server\n\nUSAGE:\n npx agentic-flow quic [OPTIONS]\n\nOPTIONS:\n --port, -P <port> Port number [default: 4433]\n --cert, -c <path> TLS certificate path\n --key, -k <path> TLS private key path\n --help, -h Show this help\n\nENVIRONMENT VARIABLES:\n QUIC_PORT QUIC server port (default: 4433)\n QUIC_CERT_PATH Path to TLS certificate\n QUIC_KEY_PATH Path to TLS private key\n\nEXAMPLES:\n # Start QUIC server (development mode)\n npx agentic-flow quic\n\n # Start with custom port\n npx agentic-flow quic --port 5443\n\n # Start with production certificates\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n\n # Use via npm scripts\n npm run proxy:quic # Start QUIC proxy\n npm run test:quic:wasm # Test WASM bindings\n\nPROGRAMMATIC USAGE:\n import { QuicTransport } from 'agentic-flow/transport/quic';\n\n const transport = new QuicTransport({\n host: 'localhost',\n port: 4433,\n maxConcurrentStreams: 100\n });\n\n await transport.connect();\n await transport.send({ type: 'task', data: { ... } });\n\nPERFORMANCE:\n • 50-70% faster than TCP-based protocols\n • 0-RTT reconnection (instant resume)\n • 100+ concurrent streams per connection\n • Built-in TLS 1.3 encryption\n • Survives network changes (WiFi ↔ cellular)\n`);\n }\n\n private async runAgent(options: any, useOpenRouter: boolean, useGemini: boolean, useONNX: boolean = false, useRequesty: boolean = false): Promise<void> {\n const agentName = options.agent || process.env.AGENT || '';\n const task = options.task || process.env.TASK || '';\n\n if (!agentName) {\n console.error('❌ Error: --agent required');\n this.printHelp();\n process.exit(1);\n }\n\n if (!task) {\n console.error('❌ Error: --task required');\n this.printHelp();\n process.exit(1);\n }\n\n // Set PROVIDER environment variable if --provider flag is used\n if (options.provider) {\n process.env.PROVIDER = options.provider;\n }\n\n // Check for API key (unless using ONNX)\n const isOnnx = options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx';\n\n if (!isOnnx && !useOpenRouter && !useGemini && !useRequesty && !process.env.ANTHROPIC_API_KEY) {\n console.error('\\n❌ Error: ANTHROPIC_API_KEY is required\\n');\n console.error('Please set your API key:');\n console.error(' export ANTHROPIC_API_KEY=sk-ant-xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider openrouter (requires OPENROUTER_API_KEY)');\n console.error(' --provider gemini (requires GOOGLE_GEMINI_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n\n if (!isOnnx && useOpenRouter && !process.env.OPENROUTER_API_KEY) {\n console.error('\\n❌ Error: OPENROUTER_API_KEY is required for OpenRouter\\n');\n console.error('Please set your API key:');\n console.error(' export OPENROUTER_API_KEY=sk-or-v1-xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider anthropic (requires ANTHROPIC_API_KEY)');\n console.error(' --provider gemini (requires GOOGLE_GEMINI_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n if (!isOnnx && useGemini && !process.env.GOOGLE_GEMINI_API_KEY) {\n console.error('\\n❌ Error: GOOGLE_GEMINI_API_KEY is required for Gemini\\n');\n console.error('Please set your API key:');\n console.error(' export GOOGLE_GEMINI_API_KEY=xxxxx\\n');\n console.error('Or use alternative providers:');\n console.error(' --provider anthropic (requires ANTHROPIC_API_KEY)');\n console.error(' --provider openrouter (requires OPENROUTER_API_KEY)');\n console.error(' --provider onnx (free local inference)\\n');\n process.exit(1);\n }\n\n const agent = getAgent(agentName);\n if (!agent) {\n const available = listAgents();\n console.error(`\\n❌ Agent '${agentName}' not found.\\n`);\n console.error('Available agents:');\n available.slice(0, 20).forEach(a => {\n console.error(` • ${a.name}: ${a.description.substring(0, 80)}...`);\n });\n if (available.length > 20) {\n console.error(` ... and ${available.length - 20} more (use --list to see all)`);\n }\n process.exit(1);\n }\n\n console.log(`\\n🤖 Agent: ${agent.name}`);\n console.log(`📝 Description: ${agent.description}\\n`);\n console.log(`🎯 Task: ${task}\\n`);\n\n if (useOpenRouter) {\n const model = options.model || process.env.COMPLETION_MODEL || 'deepseek/deepseek-chat';\n console.log(`🔧 Provider: OpenRouter (via proxy)`);\n console.log(`🔧 Model: ${model}`);\n\n // Show tool capability information\n const capabilities = detectModelCapabilities(model);\n if (capabilities.requiresEmulation) {\n console.log(`⚙️ Tool Emulation: ${capabilities.emulationStrategy.toUpperCase()} pattern`);\n console.log(`📊 Note: This model uses prompt-based tool emulation`);\n console.log(` Tools are handled by Claude Agent SDK (limited to SDK tools)`);\n }\n console.log('');\n } else if (useGemini) {\n const model = options.model || 'gemini-2.0-flash-exp';\n console.log(`🔧 Provider: Google Gemini`);\n console.log(`🔧 Model: ${model}\\n`);\n } else if (options.provider === 'onnx' || process.env.USE_ONNX === 'true' || process.env.PROVIDER === 'onnx') {\n console.log(`🔧 Provider: ONNX Local (Phi-4-mini)`);\n console.log(`💾 Free local inference - no API costs`);\n if (process.env.ONNX_OPTIMIZED === 'true') {\n console.log(`⚡ Optimizations: Context pruning, prompt optimization`);\n }\n console.log('');\n }\n\n console.log('⏳ Running...\\n');\n\n // Try Agent Booster pre-processing if enabled\n if (options.agentBooster || process.env.AGENTIC_FLOW_AGENT_BOOSTER === 'true') {\n const preprocessor = new AgentBoosterPreprocessor({\n confidenceThreshold: options.boosterThreshold || parseFloat(process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD || '0.7')\n });\n\n console.log('⚡ Agent Booster: Analyzing task for pattern matching opportunities...\\n');\n\n const intent = preprocessor.detectIntent(task);\n\n if (intent) {\n console.log(`🎯 Detected intent: ${intent.type}`);\n if (intent.filePath) {\n console.log(`📄 Target file: ${intent.filePath}`);\n }\n console.log('🔧 Attempting Agent Booster pre-processing...\\n');\n\n const result = await preprocessor.tryApply(intent);\n\n if (result.success) {\n console.log(`✅ Agent Booster Success!\\n`);\n console.log(`⚡ Method: ${result.method}`);\n console.log(`⏱️ Latency: ${result.latency}ms`);\n console.log(`🎯 Confidence: ${((result.confidence || 0) * 100).toFixed(1)}%`);\n console.log(`📊 Strategy: ${result.strategy}`);\n console.log(`\\n✅ File updated successfully!\\n`);\n console.log('═══════════════════════════════════════\\n');\n console.log(result.output || 'Edit applied');\n console.log('\\n═══════════════════════════════════════\\n');\n\n logger.info('Agent Booster completed', {\n agent: agentName,\n latency: result.latency,\n confidence: result.confidence,\n strategy: result.strategy\n });\n\n return; // Skip LLM execution\n } else {\n console.log(`⚠️ Agent Booster: ${result.reason || 'Low confidence'}`);\n console.log(`🔄 Falling back to LLM agent...\\n`);\n }\n } else {\n console.log('ℹ️ No code editing pattern detected, using LLM agent...\\n');\n }\n }\n\n const streamHandler = options.stream ? (chunk: string) => process.stdout.write(chunk) : undefined;\n\n // FIXED: Use claudeAgentDirect (no Claude Code dependency) instead of claudeAgent\n // This allows agentic-flow to work standalone in Docker/CI/CD without Claude Code\n // BUG FIX: Don't pass Anthropic model names to non-Anthropic providers\n const modelForAgent = useGemini || useOpenRouter || useONNX || useRequesty\n ? (options.model?.startsWith('claude') ? undefined : options.model)\n : options.model;\n\n const result = await claudeAgentDirect(agent, task, streamHandler, modelForAgent);\n\n if (!options.stream) {\n console.log('\\n✅ Completed!\\n');\n console.log('═══════════════════════════════════════\\n');\n console.log(result.output);\n console.log('\\n═══════════════════════════════════════\\n');\n }\n\n logger.info('Agent completed', {\n agent: agentName,\n outputLength: result.output.length,\n provider: useOpenRouter ? 'openrouter' : useGemini ? 'gemini' : 'anthropic'\n });\n }\n\n private listAgents(): void {\n const agents = listAgents();\n console.log(`\\n📦 Available Agents (${agents.length} total)\\n`);\n\n const grouped = new Map<string, typeof agents>();\n agents.forEach(agent => {\n const parts = agent.filePath.split('/');\n const category = parts[parts.length - 2] || 'other';\n if (!grouped.has(category)) {\n grouped.set(category, []);\n }\n grouped.get(category)!.push(agent);\n });\n\n Array.from(grouped.entries())\n .sort(([a], [b]) => a.localeCompare(b))\n .forEach(([category, categoryAgents]) => {\n console.log(`\\n${category.toUpperCase()}:`);\n categoryAgents.forEach(agent => {\n console.log(` ${agent.name.padEnd(30)} ${agent.description.substring(0, 80)}`);\n });\n });\n\n console.log(`\\nUsage:`);\n console.log(` npx agentic-flow --agent <name> --task \"Your task\"\\n`);\n }\n\n private printHelp(): void {\n console.log(`\n🤖 Agentic Flow v${VERSION} - AI Agent Orchestration with Multi-Provider Support\n\nNEW IN v1.9.4: Enterprise provider fallback & dynamic switching for long-running agents\n✅ Automatic failover ✅ Circuit breaker ✅ Cost optimization ✅ Health monitoring\n\nUSAGE:\n npx agentic-flow [COMMAND] [OPTIONS]\n\nCOMMANDS:\n config [subcommand] Manage environment configuration (interactive wizard)\n mcp <command> [server] Manage MCP servers (start, stop, status, list)\n agent <command> Agent management (list, create, info, conflicts)\n federation <command> Federation hub management (start, spawn, stats, test)\n hooks <command> Self-learning hooks (init, route, pretrain, metrics)\n proxy [options] Run standalone proxy server for Claude Code/Cursor\n quic [options] Run QUIC transport proxy for ultra-low latency (50-70% faster)\n claude-code [options] Spawn Claude Code with auto-configured proxy\n --list, -l List all available agents\n --agent, -a <name> Run specific agent mode\n\nCONFIG COMMANDS:\n npx agentic-flow config # Interactive wizard\n npx agentic-flow config set KEY VAL # Set configuration value\n npx agentic-flow config get KEY # Get configuration value\n npx agentic-flow config list # List all configuration\n npx agentic-flow config delete KEY # Delete configuration value\n npx agentic-flow config reset # Reset to defaults\n\nMCP COMMANDS:\n npx agentic-flow mcp start [server] Start MCP server(s)\n npx agentic-flow mcp stop [server] Stop MCP server(s)\n npx agentic-flow mcp status [server] Check MCP server status\n npx agentic-flow mcp list List all available MCP tools\n\n Available servers: claude-flow, flow-nexus, agentic-payments, all (default)\n\nAGENT COMMANDS:\n npx agentic-flow agent list [format] List all agents (summary/detailed/json)\n npx agentic-flow agent create Create new custom agent (interactive)\n npx agentic-flow agent info <name> Show detailed agent information\n npx agentic-flow agent conflicts Check for package/local conflicts\n\nFEDERATION COMMANDS:\n npx agentic-flow federation start Start federation hub server\n npx agentic-flow federation spawn Spawn ephemeral agent\n npx agentic-flow federation stats Show hub statistics\n npx agentic-flow federation status Show federation system status\n npx agentic-flow federation test Run multi-agent collaboration test\n npx agentic-flow federation help Show federation help\n\n Federation enables ephemeral agents (5s-15min lifetime) with persistent memory.\n Hub stores memories permanently; agents access past learnings from dead agents.\n\nHOOKS COMMANDS (Self-Learning Intelligence):\n npx agentic-flow hooks init Initialize hooks in project\n npx agentic-flow hooks pretrain Analyze repo for patterns\n npx agentic-flow hooks build-agents Generate optimized agents\n npx agentic-flow hooks route <task> Route task to best agent\n npx agentic-flow hooks pre-edit <file> Get context before editing\n npx agentic-flow hooks metrics View learning dashboard\n npx agentic-flow hooks explain <task> Explain routing decision\n npx agentic-flow hooks transfer <proj> Transfer patterns from project\n\n Hooks provide Q-learning agent routing, vector memory, and risk assessment.\n\nOPTIONS:\n --task, -t <task> Task description for agent mode\n --model, -m <model> Model to use (triggers OpenRouter if contains \"/\")\n --provider, -p <name> Provider to use (anthropic, openrouter, gemini, onnx)\n --stream, -s Enable real-time streaming output\n --help, -h Show this help message\n\n API CONFIGURATION:\n --anthropic-key <key> Override ANTHROPIC_API_KEY environment variable\n --openrouter-key <key> Override OPENROUTER_API_KEY environment variable\n --gemini-key <key> Override GOOGLE_GEMINI_API_KEY environment variable\n\n AGENT BEHAVIOR:\n --temperature <0.0-1.0> Sampling temperature (creativity control)\n --max-tokens <number> Maximum tokens in response\n\n DIRECTORY:\n --agents-dir <path> Custom agents directory (default: .claude/agents)\n\n OUTPUT:\n --output <text|json|md> Output format (text/json/markdown)\n --verbose Enable verbose logging for debugging\n\n EXECUTION:\n --timeout <ms> Execution timeout in milliseconds\n --retry Auto-retry on transient errors\n\n MODEL OPTIMIZATION (NEW!):\n --optimize, -O Auto-select best model for agent/task based on priorities\n --priority <type> Optimization priority:\n • quality - Best results (Claude Sonnet 4.5, GPT-4o)\n • balanced - Mix quality/cost (DeepSeek R1, Gemini 2.5 Flash) [default]\n • cost - Cheapest (DeepSeek Chat V3, Llama 3.1 8B)\n • speed - Fastest responses (Gemini 2.5 Flash)\n • privacy - Local only (ONNX Phi-4, no cloud)\n --max-cost <dollars> Maximum cost per task (e.g., 0.001 = $0.001/task budget cap)\n\n Optimization analyzes agent type + task complexity to recommend best model.\n Example savings: DeepSeek R1 costs 85% less than Claude Sonnet 4.5 with similar quality.\n See docs/agentic-flow/benchmarks/MODEL_CAPABILITIES.md for full comparison.\n\nPROVIDER FALLBACK (NEW v1.9.4):\n Enterprise-grade provider fallback for long-running agents with automatic failover,\n circuit breaker, health monitoring, cost tracking, and crash recovery.\n\n Features:\n • Automatic failover between providers (Gemini → Claude → ONNX)\n • Circuit breaker prevents cascading failures (auto-recovery after timeout)\n • Real-time health monitoring (success rate, latency, error tracking)\n • Cost optimization (70% savings using Gemini for simple tasks)\n • Checkpointing for crash recovery (save/restore agent state)\n • Budget controls (hard limits on spending and runtime)\n\n See: docs/PROVIDER-FALLBACK-GUIDE.md for complete documentation\n Example: src/examples/use-provider-fallback.ts\n\nEXAMPLES:\n # MCP Server Management\n npx agentic-flow mcp start # Start all MCP servers\n npx agentic-flow mcp start claude-flow # Start specific server\n npx agentic-flow mcp list # List all 203+ MCP tools\n npx agentic-flow mcp status # Check server status\n\n # Federation Hub Management\n npx agentic-flow federation start # Start hub server (WebSocket)\n npx agentic-flow federation start --port 9443 --db-path ./data/hub.db\n npx agentic-flow federation spawn # Spawn ephemeral agent\n npx agentic-flow federation spawn --tenant acme-corp --lifetime 600\n npx agentic-flow federation stats # Show hub statistics\n npx agentic-flow federation test # Run multi-agent test\n\n # Proxy Server for Claude Code/Cursor\n npx agentic-flow proxy --provider openrouter --port 3000\n npx agentic-flow proxy --provider gemini --port 3001\n\n # QUIC Transport (Ultra-low latency, 50-70% faster than TCP)\n npx agentic-flow quic --port 4433 # Start QUIC server\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n npm run proxy:quic # Development mode\n npm run test:quic:wasm # Test WASM bindings\n\n # Claude Code Integration (Auto-start proxy + spawn Claude Code)\n npx agentic-flow claude-code --provider openrouter \"Write a Python function\"\n npx agentic-flow claude-code --provider gemini \"Create a REST API\"\n npx agentic-flow claude-code --provider anthropic \"Help me debug this code\"\n\n # Agent Execution\n npx agentic-flow --list # List all 150+ agents\n npx agentic-flow --agent coder --task \"Create Python hello world\"\n npx agentic-flow --agent coder --task \"Create REST API\" --provider openrouter\n npx agentic-flow --agent coder --task \"Create REST API\" --model \"meta-llama/llama-3.1-8b-instruct\"\n npx agentic-flow --agent coder --task \"Create code\" --provider onnx\n\n # Model Optimization (Auto-select best model)\n npx agentic-flow --agent coder --task \"Build API\" --optimize\n npx agentic-flow --agent coder --task \"Build API\" --optimize --priority cost\n npx agentic-flow --agent reviewer --task \"Security audit\" --optimize --priority quality\n npx agentic-flow --agent coder --task \"Simple function\" --optimize --max-cost 0.001\n\nENVIRONMENT VARIABLES:\n ANTHROPIC_API_KEY Anthropic API key (for Claude models)\n OPENROUTER_API_KEY OpenRouter API key (for alternative models)\n GOOGLE_GEMINI_API_KEY Google Gemini API key (for Gemini models)\n USE_OPENROUTER Set to 'true' to force OpenRouter usage\n USE_GEMINI Set to 'true' to force Gemini usage\n COMPLETION_MODEL Default model for OpenRouter\n AGENTS_DIR Path to agents directory\n PROXY_PORT Proxy server port (default: 3000)\n QUIC_PORT QUIC transport port (default: 4433)\n QUIC_CERT_PATH Path to TLS certificate for QUIC\n QUIC_KEY_PATH Path to TLS private key for QUIC\n\nOPENROUTER MODELS (Best Free Tested):\n ✅ deepseek/deepseek-r1-0528:free (reasoning, 95s/task, RFC validation)\n ✅ deepseek/deepseek-chat-v3.1:free (coding, 21-103s/task, enterprise-grade)\n ✅ meta-llama/llama-3.3-8b-instruct:free (versatile, 4.4s/task, fast coding)\n ✅ openai/gpt-4-turbo (premium, 10.7s/task, no :free needed)\n\n All models above support OpenRouter leaderboard tracking via HTTP-Referer headers.\n See https://openrouter.ai/models for full model catalog.\n\nMCP TOOLS (213+ available):\n • agentic-flow: 7 tools (agent execution, creation, management, model optimization)\n • claude-flow: 101 tools (neural networks, GitHub, workflows, DAA)\n • flow-nexus: 96 cloud tools (sandboxes, distributed swarms, templates)\n • agentic-payments: 6 tools (payment authorization, multi-agent consensus)\n\nOPTIMIZATION BENEFITS:\n 💰 Cost Savings: 85-98% cheaper models for same quality tasks\n 🎯 Smart Selection: Agent-aware (coder needs quality ≥85, researcher flexible)\n 📊 10+ Models: Claude, GPT-4o, Gemini, DeepSeek, Llama, ONNX local\n ⚡ Zero Overhead: <5ms decision time, no API calls during optimization\n\nTWO WAYS TO USE AGENTIC-FLOW:\n\n 1️⃣ DIRECT AGENT EXECUTION (agentic-flow agents)\n Run agents directly in your terminal with full control:\n\n npx agentic-flow --agent coder --task \"Create Python script\"\n npx agentic-flow --agent researcher --task \"Research AI trends\"\n\n This runs agentic-flow's 80+ specialized agents directly.\n\n 2️⃣ CLAUDE CODE INTEGRATION (proxy for Claude Code CLI)\n Use Claude Code CLI with OpenRouter/Gemini models via proxy:\n\n # Option A: Auto-spawn Claude Code with proxy (easiest)\n npx agentic-flow claude-code --provider openrouter \"Build API\"\n\n # Option B: Manual proxy setup (advanced)\n Terminal 1 - Start Proxy:\n npx agentic-flow proxy --provider openrouter\n\n Terminal 2 - Configure Claude Code:\n export ANTHROPIC_BASE_URL=\"http://localhost:3000\"\n export ANTHROPIC_API_KEY=\"sk-ant-proxy-dummy-key\"\n export OPENROUTER_API_KEY=\"sk-or-v1-xxxxx\"\n claude # Now uses OpenRouter via proxy\n\n Benefits of proxy mode:\n • 85-99% cost savings vs Claude Sonnet 4.5\n • Access to 100+ models (DeepSeek, Llama, Gemini, etc.)\n • Leaderboard tracking on OpenRouter\n • No code changes to Claude Code itself\n\nQUIC TRANSPORT (Ultra-Low Latency Agent Communication):\n QUIC is a UDP-based protocol offering 50-70% faster connections than TCP.\n\n Performance Benefits:\n • 0-RTT connection establishment - Instant reconnection without handshake delay\n • Stream multiplexing - Send 100+ concurrent messages without blocking\n • Built-in TLS 1.3 security - Encrypted by default\n • Connection migration - Survives network changes (WiFi → cellular)\n • Reduced latency - Perfect for real-time agent coordination\n\n Programmatic Usage (API):\n import { QuicTransport } from 'agentic-flow/transport/quic';\n\n const transport = new QuicTransport({\n host: 'localhost',\n port: 4433,\n maxConcurrentStreams: 100\n });\n\n await transport.connect();\n await transport.send({ type: 'task', data: { ... } });\n\n CLI Usage:\n # Start QUIC server\n npx agentic-flow quic --port 4433\n\n # With custom certificates\n npx agentic-flow quic --cert ./certs/cert.pem --key ./certs/key.pem\n\n # Test WASM bindings\n npm run test:quic:wasm\n\n # Development mode\n npm run proxy:quic:dev\n\n Use Cases:\n • Multi-agent swarm coordination (mesh/hierarchical topologies)\n • High-frequency task distribution across worker agents\n • Real-time state synchronization between agents\n • Low-latency RPC for distributed agent systems\n\nDOCUMENTATION:\n https://github.com/ruvnet/agentic-flow\n https://ruv.io\n `);\n }\n}\n\n// Run CLI\nconst cli = new AgenticFlowCLI();\ncli.start();\n"]}
@@ -39,9 +39,9 @@ export class AgentDBFast extends EventEmitter {
39
39
  try {
40
40
  // Create AgentDB instance
41
41
  this.db = new AgentDB({
42
- path: this.config.path,
43
- dimensions: this.config.vectorDimensions
44
- });
42
+ dbPath: this.config.path,
43
+ vectorDimensions: this.config.vectorDimensions
44
+ }); // Cast to any to handle API variations
45
45
  await this.db.initialize();
46
46
  // Access the vector backend as a direct property
47
47
  if (this.db.vectorBackend) {
@@ -1 +1 @@
1
- {"version":3,"file":"agentdb-fast.js","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentDB Fast API\n *\n * Provides programmatic access to AgentDB without CLI overhead\n * Eliminates 2.3s overhead from process spawning and transformers.js init\n */\n\nimport { AgentDB } from 'agentdb';\nimport { EventEmitter } from 'events';\n\nexport interface Episode {\n id?: string;\n sessionId: string;\n task: string;\n trajectory: string[];\n reward: number;\n quality?: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\nexport interface EpisodeSearchOptions {\n task?: string;\n minReward?: number;\n maxReward?: number;\n sessionId?: string;\n k?: number;\n filter?: Record<string, any>;\n}\n\nexport interface Pattern {\n id?: string;\n task: string;\n input: string;\n output: string;\n quality: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\n/**\n * Fast AgentDB client that avoids CLI overhead\n *\n * Performance:\n * - CLI: ~2,350ms per operation\n * - Direct API: ~10-50ms per operation\n * - Speedup: ~50-200x faster\n */\nexport class AgentDBFast extends EventEmitter {\n private db: AgentDB | null = null;\n private backend: any = null;\n private config: {\n path: string;\n vectorDimensions: number;\n enableHNSW: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n };\n private initialized: boolean = false;\n private embeddingCache: Map<string, number[]> = new Map();\n\n constructor(config: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n } = {}) {\n super();\n\n this.config = {\n path: config.path || '.agentdb-fast',\n vectorDimensions: config.vectorDimensions || 384,\n enableHNSW: config.enableHNSW !== false,\n hnswM: config.hnswM || 16,\n hnswEfConstruction: config.hnswEfConstruction || 200\n };\n }\n\n /**\n * Initialize database connection (lazy)\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n try {\n // Create AgentDB instance\n this.db = new AgentDB({\n path: this.config.path,\n dimensions: this.config.vectorDimensions\n });\n\n await this.db.initialize();\n\n // Access the vector backend as a direct property\n if (this.db.vectorBackend) {\n this.backend = this.db.vectorBackend;\n } else {\n throw new Error('Vector backend not available');\n }\n\n this.initialized = true;\n this.emit('initialized');\n } catch (error: any) {\n throw new Error(`Failed to initialize AgentDB: ${error.message}`);\n }\n }\n\n /**\n * Store an episode (fast, no CLI overhead)\n */\n async storeEpisode(episode: Episode): Promise<string> {\n await this.initialize();\n\n // Generate embedding if not provided\n if (!episode.embedding) {\n episode.embedding = await this.getEmbedding(episode.task);\n }\n\n const episodeId = episode.id || this.generateId('episode');\n\n // Use backend insert method\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n episodeId,\n new Float32Array(episode.embedding),\n {\n type: 'episode',\n sessionId: episode.sessionId,\n task: episode.task,\n trajectory: JSON.stringify(episode.trajectory),\n reward: episode.reward,\n quality: episode.quality,\n context: episode.context,\n timestamp: episode.timestamp || Date.now()\n }\n );\n\n this.emit('episode:stored', episodeId);\n return episodeId;\n }\n\n /**\n * Retrieve episodes by task similarity (fast)\n */\n async retrieveEpisodes(options: EpisodeSearchOptions): Promise<Episode[]> {\n await this.initialize();\n\n const dimensions = this.config.vectorDimensions ?? 384;\n const queryEmbedding = options.task\n ? await this.getEmbedding(options.task)\n : Array(dimensions).fill(0);\n\n const k = options.k || 5;\n\n // Build filter\n const filter: Record<string, any> = { type: 'episode' };\n if (options.sessionId) filter.sessionId = options.sessionId;\n if (options.minReward !== undefined) filter.reward = { $gte: options.minReward };\n if (options.maxReward !== undefined) {\n filter.reward = { ...(filter.reward || {}), $lte: options.maxReward };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n sessionId: result.metadata.sessionId,\n task: result.metadata.task,\n trajectory: JSON.parse(result.metadata.trajectory || '[]'),\n reward: result.metadata.reward,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Store a pattern (for ReasoningBank)\n */\n async storePattern(pattern: Pattern): Promise<string> {\n await this.initialize();\n\n if (!pattern.embedding) {\n pattern.embedding = await this.getEmbedding(`${pattern.input} ${pattern.output}`);\n }\n\n const patternId = pattern.id || this.generateId('pattern');\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n patternId,\n new Float32Array(pattern.embedding),\n {\n type: 'pattern',\n task: pattern.task,\n input: pattern.input,\n output: pattern.output,\n quality: pattern.quality,\n context: pattern.context,\n timestamp: pattern.timestamp || Date.now()\n }\n );\n\n this.emit('pattern:stored', patternId);\n return patternId;\n }\n\n /**\n * Search for similar patterns\n */\n async searchPatterns(\n query: string,\n k: number = 5,\n minQuality?: number\n ): Promise<Pattern[]> {\n await this.initialize();\n\n const queryEmbedding = await this.getEmbedding(query);\n\n const filter: Record<string, any> = { type: 'pattern' };\n if (minQuality !== undefined) {\n filter.quality = { $gte: minQuality };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n task: result.metadata.task,\n input: result.metadata.input,\n output: result.metadata.output,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Get database statistics\n */\n async getStats(): Promise<{\n totalVectors: number;\n totalEpisodes: number;\n totalPatterns: number;\n avgQuality: number;\n }> {\n await this.initialize();\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const stats = await this.backend.stats();\n\n // Count by type - get all results\n const allResults = await this.backend.search(\n new Float32Array(this.config.vectorDimensions).fill(0),\n 10000, // Get all\n {}\n );\n\n const episodes = allResults.filter((r: any) => r.metadata?.type === 'episode');\n const patterns = allResults.filter((r: any) => r.metadata?.type === 'pattern');\n\n const avgQuality =\n patterns.reduce((sum: number, p: any) => sum + (p.metadata?.quality || 0), 0) /\n (patterns.length || 1);\n\n return {\n totalVectors: stats.totalVectors || allResults.length || 0,\n totalEpisodes: episodes.length,\n totalPatterns: patterns.length,\n avgQuality\n };\n }\n\n /**\n * Close database connection\n */\n async close(): Promise<void> {\n this.removeAllListeners();\n this.embeddingCache.clear();\n\n if (this.db) {\n await this.db.close();\n this.db = null;\n this.backend = null;\n }\n\n this.initialized = false;\n }\n\n /**\n * Generate embedding for text (with caching)\n *\n * Note: This is a simple mock. In production, replace with:\n * - OpenAI embeddings API\n * - Local transformer model\n * - SentenceTransformers\n */\n private async getEmbedding(text: string): Promise<number[]> {\n // Check cache\n if (this.embeddingCache.has(text)) {\n return this.embeddingCache.get(text)!;\n }\n\n // Simple hash-based embedding (REPLACE IN PRODUCTION)\n const embedding = this.simpleHashEmbedding(text);\n\n // Cache it\n this.embeddingCache.set(text, embedding);\n if (this.embeddingCache.size > 1000) {\n // LRU-style cleanup\n const firstKey = this.embeddingCache.keys().next().value as string | undefined;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n return embedding;\n }\n\n /**\n * Simple hash-based embedding (MOCK - REPLACE IN PRODUCTION)\n *\n * Production alternatives:\n * 1. OpenAI: https://platform.openai.com/docs/guides/embeddings\n * 2. Transformers.js: https://huggingface.co/docs/transformers.js\n * 3. SBERT: https://www.sbert.net/\n */\n private simpleHashEmbedding(text: string): number[] {\n const embedding = new Array(this.config.vectorDimensions);\n\n // Seed with text hash\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = (hash << 5) - hash + text.charCodeAt(i);\n hash = hash & hash;\n }\n\n // Generate pseudo-random embedding\n for (let i = 0; i < this.config.vectorDimensions; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n return embedding.map(v => v / norm);\n }\n\n /**\n * Generate unique ID\n */\n private generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\n/**\n * Convenience function to create a fast AgentDB client\n */\nexport function createFastAgentDB(config?: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n}): AgentDBFast {\n return new AgentDBFast(config);\n}\n\n/**\n * Performance comparison helper\n */\nexport async function benchmarkAgentDB(): Promise<{\n cli: { store: number; retrieve: number };\n api: { store: number; retrieve: number };\n speedup: { store: number; retrieve: number };\n}> {\n const client = createFastAgentDB({ path: '.agentdb-benchmark' });\n\n // API benchmark\n const apiStoreStart = Date.now();\n const episodeId = await client.storeEpisode({\n sessionId: 'test-session',\n task: 'test-task',\n trajectory: ['step1', 'step2'],\n reward: 0.8\n });\n const apiStoreTime = Date.now() - apiStoreStart;\n\n const apiRetrieveStart = Date.now();\n await client.retrieveEpisodes({ task: 'test-task', k: 5 });\n const apiRetrieveTime = Date.now() - apiRetrieveStart;\n\n await client.close();\n\n // CLI times from benchmarks\n const cliStoreTime = 2350;\n const cliRetrieveTime = 2400;\n\n return {\n cli: {\n store: cliStoreTime,\n retrieve: cliRetrieveTime\n },\n api: {\n store: apiStoreTime,\n retrieve: apiRetrieveTime\n },\n speedup: {\n store: cliStoreTime / apiStoreTime,\n retrieve: cliRetrieveTime / apiRetrieveTime\n }\n };\n}\n"]}
1
+ {"version":3,"file":"agentdb-fast.js","sourceRoot":"","sources":["../../src/core/agentdb-fast.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * AgentDB Fast API\n *\n * Provides programmatic access to AgentDB without CLI overhead\n * Eliminates 2.3s overhead from process spawning and transformers.js init\n */\n\nimport { AgentDB } from 'agentdb';\nimport { EventEmitter } from 'events';\n\nexport interface Episode {\n id?: string;\n sessionId: string;\n task: string;\n trajectory: string[];\n reward: number;\n quality?: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\nexport interface EpisodeSearchOptions {\n task?: string;\n minReward?: number;\n maxReward?: number;\n sessionId?: string;\n k?: number;\n filter?: Record<string, any>;\n}\n\nexport interface Pattern {\n id?: string;\n task: string;\n input: string;\n output: string;\n quality: number;\n embedding?: number[];\n context?: Record<string, any>;\n timestamp?: number;\n}\n\n/**\n * Fast AgentDB client that avoids CLI overhead\n *\n * Performance:\n * - CLI: ~2,350ms per operation\n * - Direct API: ~10-50ms per operation\n * - Speedup: ~50-200x faster\n */\nexport class AgentDBFast extends EventEmitter {\n private db: AgentDB | null = null;\n private backend: any = null;\n private config: {\n path: string;\n vectorDimensions: number;\n enableHNSW: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n };\n private initialized: boolean = false;\n private embeddingCache: Map<string, number[]> = new Map();\n\n constructor(config: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n hnswM?: number;\n hnswEfConstruction?: number;\n } = {}) {\n super();\n\n this.config = {\n path: config.path || '.agentdb-fast',\n vectorDimensions: config.vectorDimensions || 384,\n enableHNSW: config.enableHNSW !== false,\n hnswM: config.hnswM || 16,\n hnswEfConstruction: config.hnswEfConstruction || 200\n };\n }\n\n /**\n * Initialize database connection (lazy)\n */\n async initialize(): Promise<void> {\n if (this.initialized) return;\n\n try {\n // Create AgentDB instance\n this.db = new AgentDB({\n dbPath: this.config.path,\n vectorDimensions: this.config.vectorDimensions\n } as any); // Cast to any to handle API variations\n\n await this.db.initialize();\n\n // Access the vector backend as a direct property\n if (this.db.vectorBackend) {\n this.backend = this.db.vectorBackend;\n } else {\n throw new Error('Vector backend not available');\n }\n\n this.initialized = true;\n this.emit('initialized');\n } catch (error: any) {\n throw new Error(`Failed to initialize AgentDB: ${error.message}`);\n }\n }\n\n /**\n * Store an episode (fast, no CLI overhead)\n */\n async storeEpisode(episode: Episode): Promise<string> {\n await this.initialize();\n\n // Generate embedding if not provided\n if (!episode.embedding) {\n episode.embedding = await this.getEmbedding(episode.task);\n }\n\n const episodeId = episode.id || this.generateId('episode');\n\n // Use backend insert method\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n episodeId,\n new Float32Array(episode.embedding),\n {\n type: 'episode',\n sessionId: episode.sessionId,\n task: episode.task,\n trajectory: JSON.stringify(episode.trajectory),\n reward: episode.reward,\n quality: episode.quality,\n context: episode.context,\n timestamp: episode.timestamp || Date.now()\n }\n );\n\n this.emit('episode:stored', episodeId);\n return episodeId;\n }\n\n /**\n * Retrieve episodes by task similarity (fast)\n */\n async retrieveEpisodes(options: EpisodeSearchOptions): Promise<Episode[]> {\n await this.initialize();\n\n const dimensions = this.config.vectorDimensions ?? 384;\n const queryEmbedding = options.task\n ? await this.getEmbedding(options.task)\n : Array(dimensions).fill(0);\n\n const k = options.k || 5;\n\n // Build filter\n const filter: Record<string, any> = { type: 'episode' };\n if (options.sessionId) filter.sessionId = options.sessionId;\n if (options.minReward !== undefined) filter.reward = { $gte: options.minReward };\n if (options.maxReward !== undefined) {\n filter.reward = { ...(filter.reward || {}), $lte: options.maxReward };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n sessionId: result.metadata.sessionId,\n task: result.metadata.task,\n trajectory: JSON.parse(result.metadata.trajectory || '[]'),\n reward: result.metadata.reward,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Store a pattern (for ReasoningBank)\n */\n async storePattern(pattern: Pattern): Promise<string> {\n await this.initialize();\n\n if (!pattern.embedding) {\n pattern.embedding = await this.getEmbedding(`${pattern.input} ${pattern.output}`);\n }\n\n const patternId = pattern.id || this.generateId('pattern');\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n await this.backend.insert(\n patternId,\n new Float32Array(pattern.embedding),\n {\n type: 'pattern',\n task: pattern.task,\n input: pattern.input,\n output: pattern.output,\n quality: pattern.quality,\n context: pattern.context,\n timestamp: pattern.timestamp || Date.now()\n }\n );\n\n this.emit('pattern:stored', patternId);\n return patternId;\n }\n\n /**\n * Search for similar patterns\n */\n async searchPatterns(\n query: string,\n k: number = 5,\n minQuality?: number\n ): Promise<Pattern[]> {\n await this.initialize();\n\n const queryEmbedding = await this.getEmbedding(query);\n\n const filter: Record<string, any> = { type: 'pattern' };\n if (minQuality !== undefined) {\n filter.quality = { $gte: minQuality };\n }\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const results = await this.backend.search(\n new Float32Array(queryEmbedding),\n k,\n { filter: Object.keys(filter).length > 1 ? filter : undefined }\n );\n\n return results.map((result: any) => ({\n id: result.id,\n task: result.metadata.task,\n input: result.metadata.input,\n output: result.metadata.output,\n quality: result.metadata.quality,\n embedding: result.vector,\n context: result.metadata.context,\n timestamp: result.metadata.timestamp\n }));\n }\n\n /**\n * Get database statistics\n */\n async getStats(): Promise<{\n totalVectors: number;\n totalEpisodes: number;\n totalPatterns: number;\n avgQuality: number;\n }> {\n await this.initialize();\n\n if (!this.backend) {\n throw new Error('Backend not initialized');\n }\n\n const stats = await this.backend.stats();\n\n // Count by type - get all results\n const allResults = await this.backend.search(\n new Float32Array(this.config.vectorDimensions).fill(0),\n 10000, // Get all\n {}\n );\n\n const episodes = allResults.filter((r: any) => r.metadata?.type === 'episode');\n const patterns = allResults.filter((r: any) => r.metadata?.type === 'pattern');\n\n const avgQuality =\n patterns.reduce((sum: number, p: any) => sum + (p.metadata?.quality || 0), 0) /\n (patterns.length || 1);\n\n return {\n totalVectors: stats.totalVectors || allResults.length || 0,\n totalEpisodes: episodes.length,\n totalPatterns: patterns.length,\n avgQuality\n };\n }\n\n /**\n * Close database connection\n */\n async close(): Promise<void> {\n this.removeAllListeners();\n this.embeddingCache.clear();\n\n if (this.db) {\n await this.db.close();\n this.db = null;\n this.backend = null;\n }\n\n this.initialized = false;\n }\n\n /**\n * Generate embedding for text (with caching)\n *\n * Note: This is a simple mock. In production, replace with:\n * - OpenAI embeddings API\n * - Local transformer model\n * - SentenceTransformers\n */\n private async getEmbedding(text: string): Promise<number[]> {\n // Check cache\n if (this.embeddingCache.has(text)) {\n return this.embeddingCache.get(text)!;\n }\n\n // Simple hash-based embedding (REPLACE IN PRODUCTION)\n const embedding = this.simpleHashEmbedding(text);\n\n // Cache it\n this.embeddingCache.set(text, embedding);\n if (this.embeddingCache.size > 1000) {\n // LRU-style cleanup\n const firstKey = this.embeddingCache.keys().next().value as string | undefined;\n if (firstKey) {\n this.embeddingCache.delete(firstKey);\n }\n }\n\n return embedding;\n }\n\n /**\n * Simple hash-based embedding (MOCK - REPLACE IN PRODUCTION)\n *\n * Production alternatives:\n * 1. OpenAI: https://platform.openai.com/docs/guides/embeddings\n * 2. Transformers.js: https://huggingface.co/docs/transformers.js\n * 3. SBERT: https://www.sbert.net/\n */\n private simpleHashEmbedding(text: string): number[] {\n const embedding = new Array(this.config.vectorDimensions);\n\n // Seed with text hash\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n hash = (hash << 5) - hash + text.charCodeAt(i);\n hash = hash & hash;\n }\n\n // Generate pseudo-random embedding\n for (let i = 0; i < this.config.vectorDimensions; i++) {\n const seed = hash + i * 2654435761;\n const x = Math.sin(seed) * 10000;\n embedding[i] = x - Math.floor(x);\n }\n\n // Normalize\n const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));\n return embedding.map(v => v / norm);\n }\n\n /**\n * Generate unique ID\n */\n private generateId(prefix: string): string {\n return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\n/**\n * Convenience function to create a fast AgentDB client\n */\nexport function createFastAgentDB(config?: {\n path?: string;\n vectorDimensions?: number;\n enableHNSW?: boolean;\n}): AgentDBFast {\n return new AgentDBFast(config);\n}\n\n/**\n * Performance comparison helper\n */\nexport async function benchmarkAgentDB(): Promise<{\n cli: { store: number; retrieve: number };\n api: { store: number; retrieve: number };\n speedup: { store: number; retrieve: number };\n}> {\n const client = createFastAgentDB({ path: '.agentdb-benchmark' });\n\n // API benchmark\n const apiStoreStart = Date.now();\n const episodeId = await client.storeEpisode({\n sessionId: 'test-session',\n task: 'test-task',\n trajectory: ['step1', 'step2'],\n reward: 0.8\n });\n const apiStoreTime = Date.now() - apiStoreStart;\n\n const apiRetrieveStart = Date.now();\n await client.retrieveEpisodes({ task: 'test-task', k: 5 });\n const apiRetrieveTime = Date.now() - apiRetrieveStart;\n\n await client.close();\n\n // CLI times from benchmarks\n const cliStoreTime = 2350;\n const cliRetrieveTime = 2400;\n\n return {\n cli: {\n store: cliStoreTime,\n retrieve: cliRetrieveTime\n },\n api: {\n store: apiStoreTime,\n retrieve: apiRetrieveTime\n },\n speedup: {\n store: cliStoreTime / apiStoreTime,\n retrieve: cliRetrieveTime / apiRetrieveTime\n }\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"agentdb-wrapper-enhanced.d.ts","sourceRoot":"","sources":["../../src/core/agentdb-wrapper-enhanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,EAGb,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,UAAU,CAAM;IAGxB,OAAO,CAAC,OAAO,CAOb;IAGK,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,WAAW,CAAC,EAAE,GAAG,CAAC;gBAEb,MAAM,GAAE,aAAkB;IA2CtC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmDjC;;OAEG;YACW,0BAA0B;IAiCxC;;OAEG;YACW,oBAAoB;IA6BlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAkBhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAM/B;;OAEG;IACH,OAAO,CAAC,UAAU;IAQZ,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBhF,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAwBnG,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBtD,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,GAAG,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAoB3D,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2BvE,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAejC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,cAAc,IAAI,OAAO;IASzB;;;;;;;;;;;;;OAaG;IACG,eAAe,CACnB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,kBAAkB,EAAE,EAChC,SAAS,GAAE,aAAuB,GACjC,OAAO,CAAC,eAAe,CAAC;IAoE3B;;;;;;OAMG;IACG,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAIrG;;;;;;;OAOG;IACG,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAIjG;;;;;;OAMG;IACG,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAIlG;;;;;;OAMG;IACG,mBAAmB,CACvB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,SAAS,GAAE,MAAa,GACvB,OAAO,CAAC,eAAe,CAAC;IAU3B;;;;;;OAMG;IACG,YAAY,CAChB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,eAAe,CAAC;IAU3B;;;;;;OAMG;IACG,kBAAkB,CACtB,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,CAAC,EAAE,YAAY,EACf,cAAc,EAAE,YAAY,GAC3B,OAAO,CAAC,eAAe,CAAC;IA8B3B;;;;;;;;;;;;;;;OAeG;IACG,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiD1G;;OAEG;YACW,SAAS;IAsBvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,qBAAqB;;;;;;;;;;IASrB;;OAEG;IACH,mBAAmB;IAInB;;OAEG;IACH,aAAa;CAGd"}
1
+ {"version":3,"file":"agentdb-wrapper-enhanced.d.ts","sourceRoot":"","sources":["../../src/core/agentdb-wrapper-enhanced.ts"],"names":[],"mappings":"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"}