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