agentic-flow 1.10.1 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/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/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/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/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/package.json +1 -1
- package/docs/PHASE2-IMPLEMENTATION-SUMMARY.md +0 -275
- package/docs/PHASE2-PHASE3-COMPLETE-SUMMARY.md +0 -453
- package/docs/PHASE3-IMPLEMENTATION-SUMMARY.md +0 -357
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { QuicCoordinator, SwarmMessage, SwarmAgent } from './quic-coordinator.js';
|
|
2
|
+
export type TransportProtocol = 'quic' | 'http2' | 'auto';
|
|
3
|
+
export interface TransportConfig {
|
|
4
|
+
protocol: TransportProtocol;
|
|
5
|
+
enableFallback: boolean;
|
|
6
|
+
quicConfig?: {
|
|
7
|
+
host: string;
|
|
8
|
+
port: number;
|
|
9
|
+
maxConnections: number;
|
|
10
|
+
certPath?: string;
|
|
11
|
+
keyPath?: string;
|
|
12
|
+
};
|
|
13
|
+
http2Config?: {
|
|
14
|
+
host: string;
|
|
15
|
+
port: number;
|
|
16
|
+
maxConnections: number;
|
|
17
|
+
secure: boolean;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface TransportStats {
|
|
21
|
+
protocol: 'quic' | 'http2';
|
|
22
|
+
messagesSent: number;
|
|
23
|
+
messagesReceived: number;
|
|
24
|
+
bytesTransferred: number;
|
|
25
|
+
averageLatency: number;
|
|
26
|
+
errorRate: number;
|
|
27
|
+
}
|
|
28
|
+
export interface RouteResult {
|
|
29
|
+
success: boolean;
|
|
30
|
+
protocol: 'quic' | 'http2';
|
|
31
|
+
latency: number;
|
|
32
|
+
error?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* TransportRouter - Intelligent transport layer with automatic protocol selection
|
|
36
|
+
*
|
|
37
|
+
* Features:
|
|
38
|
+
* - Automatic QUIC/HTTP2 protocol selection
|
|
39
|
+
* - Transparent fallback on failure
|
|
40
|
+
* - Connection pooling for both protocols
|
|
41
|
+
* - Per-protocol statistics tracking
|
|
42
|
+
* - Health checking and availability detection
|
|
43
|
+
*/
|
|
44
|
+
export declare class TransportRouter {
|
|
45
|
+
private config;
|
|
46
|
+
private quicClient?;
|
|
47
|
+
private quicPool?;
|
|
48
|
+
private quicCoordinator?;
|
|
49
|
+
private http2Sessions;
|
|
50
|
+
private currentProtocol;
|
|
51
|
+
private stats;
|
|
52
|
+
private healthCheckTimer?;
|
|
53
|
+
private quicAvailable;
|
|
54
|
+
constructor(config: TransportConfig);
|
|
55
|
+
/**
|
|
56
|
+
* Initialize transport router
|
|
57
|
+
*/
|
|
58
|
+
initialize(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Initialize QUIC transport
|
|
61
|
+
*/
|
|
62
|
+
private initializeQuic;
|
|
63
|
+
/**
|
|
64
|
+
* Initialize HTTP/2 transport
|
|
65
|
+
*/
|
|
66
|
+
private initializeHttp2;
|
|
67
|
+
/**
|
|
68
|
+
* Initialize QUIC coordinator for swarm
|
|
69
|
+
*/
|
|
70
|
+
initializeSwarm(swarmId: string, topology: 'mesh' | 'hierarchical' | 'ring' | 'star', maxAgents?: number): Promise<QuicCoordinator>;
|
|
71
|
+
/**
|
|
72
|
+
* Route message through appropriate transport
|
|
73
|
+
*/
|
|
74
|
+
route(message: SwarmMessage, target: SwarmAgent): Promise<RouteResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Send message via QUIC
|
|
77
|
+
*/
|
|
78
|
+
private sendViaQuic;
|
|
79
|
+
/**
|
|
80
|
+
* Send message via HTTP/2
|
|
81
|
+
*/
|
|
82
|
+
private sendViaHttp2;
|
|
83
|
+
/**
|
|
84
|
+
* Get current transport protocol
|
|
85
|
+
*/
|
|
86
|
+
getCurrentProtocol(): 'quic' | 'http2';
|
|
87
|
+
/**
|
|
88
|
+
* Check if QUIC is available
|
|
89
|
+
*/
|
|
90
|
+
isQuicAvailable(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Get transport statistics
|
|
93
|
+
*/
|
|
94
|
+
getStats(protocol?: 'quic' | 'http2'): TransportStats | Map<'quic' | 'http2', TransportStats>;
|
|
95
|
+
/**
|
|
96
|
+
* Get QUIC coordinator (if initialized)
|
|
97
|
+
*/
|
|
98
|
+
getCoordinator(): QuicCoordinator | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Shutdown transport router
|
|
101
|
+
*/
|
|
102
|
+
shutdown(): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Start health checks for protocol availability
|
|
105
|
+
*/
|
|
106
|
+
private startHealthChecks;
|
|
107
|
+
/**
|
|
108
|
+
* Check QUIC health
|
|
109
|
+
*/
|
|
110
|
+
private checkQuicHealth;
|
|
111
|
+
/**
|
|
112
|
+
* Update transport statistics
|
|
113
|
+
*/
|
|
114
|
+
private updateStats;
|
|
115
|
+
/**
|
|
116
|
+
* Serialize message to bytes
|
|
117
|
+
*/
|
|
118
|
+
private serializeMessage;
|
|
119
|
+
/**
|
|
120
|
+
* Estimate message size in bytes
|
|
121
|
+
*/
|
|
122
|
+
private estimateMessageSize;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=transport-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-router.d.ts","sourceRoot":"","sources":["../../src/swarm/transport-router.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIlF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,eAAe,CAAmB;IAC1C,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,aAAa,CAAU;gBAEnB,MAAM,EAAE,eAAe;IA+CnC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAkCjC;;OAEG;YACW,cAAc;IAmB5B;;OAEG;YACW,eAAe;IAK7B;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,EACnD,SAAS,GAAE,MAAW,GACrB,OAAO,CAAC,eAAe,CAAC;IAoB3B;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA2C5E;;OAEG;YACW,WAAW;IAwBzB;;OAEG;YACW,YAAY;IA4C1B;;OAEG;IACH,kBAAkB,IAAI,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,cAAc,CAAC;IAO7F;;OAEG;IACH,cAAc,IAAI,eAAe,GAAG,SAAS;IAI7C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;YACW,eAAe;IAuB7B;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAG5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-router.js","sourceRoot":"","sources":["../../src/swarm/transport-router.ts"],"names":[],"mappings":"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","sourcesContent":["// Transport Router - Protocol selection and routing with transparent fallback\n// Routes agent messages through QUIC or HTTP/2 based on availability\n\nimport { QuicClient, QuicConnectionPool } from '../transport/quic.js';\nimport { QuicCoordinator, SwarmMessage, SwarmAgent } from './quic-coordinator.js';\nimport { logger } from '../utils/logger.js';\nimport http2 from 'http2';\n\nexport type TransportProtocol = 'quic' | 'http2' | 'auto';\n\nexport interface TransportConfig {\n protocol: TransportProtocol;\n enableFallback: boolean;\n quicConfig?: {\n host: string;\n port: number;\n maxConnections: number;\n certPath?: string;\n keyPath?: string;\n };\n http2Config?: {\n host: string;\n port: number;\n maxConnections: number;\n secure: boolean;\n };\n}\n\nexport interface TransportStats {\n protocol: 'quic' | 'http2';\n messagesSent: number;\n messagesReceived: number;\n bytesTransferred: number;\n averageLatency: number;\n errorRate: number;\n}\n\nexport interface RouteResult {\n success: boolean;\n protocol: 'quic' | 'http2';\n latency: number;\n error?: string;\n}\n\n/**\n * TransportRouter - Intelligent transport layer with automatic protocol selection\n *\n * Features:\n * - Automatic QUIC/HTTP2 protocol selection\n * - Transparent fallback on failure\n * - Connection pooling for both protocols\n * - Per-protocol statistics tracking\n * - Health checking and availability detection\n */\nexport class TransportRouter {\n private config: Required<TransportConfig>;\n private quicClient?: QuicClient;\n private quicPool?: QuicConnectionPool;\n private quicCoordinator?: QuicCoordinator;\n private http2Sessions: Map<string, http2.ClientHttp2Session>;\n private currentProtocol: 'quic' | 'http2';\n private stats: Map<'quic' | 'http2', TransportStats>;\n private healthCheckTimer?: NodeJS.Timeout;\n private quicAvailable: boolean;\n\n constructor(config: TransportConfig) {\n this.config = {\n protocol: config.protocol || 'auto',\n enableFallback: config.enableFallback ?? true,\n quicConfig: config.quicConfig || {\n host: 'localhost',\n port: 4433,\n maxConnections: 100\n },\n http2Config: config.http2Config || {\n host: 'localhost',\n port: 8443,\n maxConnections: 100,\n secure: true\n }\n };\n\n this.http2Sessions = new Map();\n this.currentProtocol = 'http2'; // Default to HTTP2\n this.quicAvailable = false;\n\n // Initialize stats\n this.stats = new Map([\n ['quic', {\n protocol: 'quic',\n messagesSent: 0,\n messagesReceived: 0,\n bytesTransferred: 0,\n averageLatency: 0,\n errorRate: 0\n }],\n ['http2', {\n protocol: 'http2',\n messagesSent: 0,\n messagesReceived: 0,\n bytesTransferred: 0,\n averageLatency: 0,\n errorRate: 0\n }]\n ]);\n\n logger.info('Transport Router initialized', {\n protocol: config.protocol,\n enableFallback: config.enableFallback\n });\n }\n\n /**\n * Initialize transport router\n */\n async initialize(): Promise<void> {\n logger.info('Initializing transport router...');\n\n // Try to initialize QUIC\n if (this.config.protocol === 'quic' || this.config.protocol === 'auto') {\n try {\n await this.initializeQuic();\n this.quicAvailable = true;\n this.currentProtocol = 'quic';\n logger.info('QUIC transport initialized successfully');\n } catch (error) {\n logger.warn('QUIC initialization failed, using HTTP/2', { error });\n this.quicAvailable = false;\n this.currentProtocol = 'http2';\n }\n }\n\n // Always initialize HTTP/2 as fallback\n if (!this.quicAvailable || this.config.enableFallback) {\n await this.initializeHttp2();\n logger.info('HTTP/2 transport initialized successfully');\n }\n\n // Start health checks if auto mode\n if (this.config.protocol === 'auto') {\n this.startHealthChecks();\n }\n\n logger.info('Transport router initialized', {\n currentProtocol: this.currentProtocol,\n quicAvailable: this.quicAvailable\n });\n }\n\n /**\n * Initialize QUIC transport\n */\n private async initializeQuic(): Promise<void> {\n this.quicClient = new QuicClient({\n serverHost: this.config.quicConfig.host,\n serverPort: this.config.quicConfig.port,\n maxConnections: this.config.quicConfig.maxConnections,\n certPath: this.config.quicConfig.certPath,\n keyPath: this.config.quicConfig.keyPath\n });\n\n await this.quicClient.initialize();\n\n this.quicPool = new QuicConnectionPool(\n this.quicClient,\n this.config.quicConfig.maxConnections\n );\n\n logger.debug('QUIC client and pool initialized');\n }\n\n /**\n * Initialize HTTP/2 transport\n */\n private async initializeHttp2(): Promise<void> {\n // HTTP/2 sessions are created on-demand in sendViaHttp2\n logger.debug('HTTP/2 transport configured');\n }\n\n /**\n * Initialize QUIC coordinator for swarm\n */\n async initializeSwarm(\n swarmId: string,\n topology: 'mesh' | 'hierarchical' | 'ring' | 'star',\n maxAgents: number = 10\n ): Promise<QuicCoordinator> {\n if (!this.quicClient || !this.quicPool) {\n throw new Error('QUIC not initialized. Cannot create swarm with QUIC transport.');\n }\n\n this.quicCoordinator = new QuicCoordinator({\n swarmId,\n topology,\n maxAgents,\n quicClient: this.quicClient,\n connectionPool: this.quicPool\n });\n\n await this.quicCoordinator.start();\n\n logger.info('QUIC swarm coordinator initialized', { swarmId, topology, maxAgents });\n\n return this.quicCoordinator;\n }\n\n /**\n * Route message through appropriate transport\n */\n async route(message: SwarmMessage, target: SwarmAgent): Promise<RouteResult> {\n const startTime = Date.now();\n\n try {\n // Try primary protocol\n if (this.currentProtocol === 'quic' && this.quicAvailable) {\n try {\n await this.sendViaQuic(message, target);\n const latency = Date.now() - startTime;\n this.updateStats('quic', true, latency, this.estimateMessageSize(message));\n return { success: true, protocol: 'quic', latency };\n } catch (error) {\n logger.warn('QUIC send failed, attempting fallback', { error });\n\n if (!this.config.enableFallback) {\n throw error;\n }\n\n // Fallback to HTTP/2\n await this.sendViaHttp2(message, target);\n const latency = Date.now() - startTime;\n this.updateStats('http2', true, latency, this.estimateMessageSize(message));\n return { success: true, protocol: 'http2', latency };\n }\n } else {\n // Use HTTP/2\n await this.sendViaHttp2(message, target);\n const latency = Date.now() - startTime;\n this.updateStats('http2', true, latency, this.estimateMessageSize(message));\n return { success: true, protocol: 'http2', latency };\n }\n } catch (error) {\n const latency = Date.now() - startTime;\n this.updateStats(this.currentProtocol, false, latency, 0);\n return {\n success: false,\n protocol: this.currentProtocol,\n latency,\n error: (error as Error).message\n };\n }\n }\n\n /**\n * Send message via QUIC\n */\n private async sendViaQuic(message: SwarmMessage, target: SwarmAgent): Promise<void> {\n if (!this.quicClient || !this.quicPool) {\n throw new Error('QUIC not initialized');\n }\n\n // Get or create connection\n const connection = await this.quicPool.getConnection(target.host, target.port);\n\n // Create stream and send\n const stream = await this.quicClient.createStream(connection.id);\n\n try {\n const messageBytes = this.serializeMessage(message);\n await stream.send(messageBytes);\n logger.debug('Message sent via QUIC', {\n messageId: message.id,\n target: target.id,\n bytes: messageBytes.length\n });\n } finally {\n await stream.close();\n }\n }\n\n /**\n * Send message via HTTP/2\n */\n private async sendViaHttp2(message: SwarmMessage, target: SwarmAgent): Promise<void> {\n const sessionKey = `${target.host}:${target.port}`;\n\n // Get or create HTTP/2 session\n let session = this.http2Sessions.get(sessionKey);\n if (!session || session.destroyed) {\n const protocol = this.config.http2Config.secure ? 'https' : 'http';\n session = http2.connect(`${protocol}://${target.host}:${target.port}`);\n this.http2Sessions.set(sessionKey, session);\n }\n\n return new Promise((resolve, reject) => {\n const req = session!.request({\n ':method': 'POST',\n ':path': '/message',\n 'content-type': 'application/json'\n });\n\n const messageJson = JSON.stringify(message);\n\n req.on('response', (headers) => {\n const status = headers[':status'];\n if (status === 200) {\n logger.debug('Message sent via HTTP/2', {\n messageId: message.id,\n target: target.id,\n bytes: messageJson.length\n });\n resolve();\n } else {\n reject(new Error(`HTTP/2 request failed with status ${status}`));\n }\n });\n\n req.on('error', (error) => {\n logger.error('HTTP/2 request error', { error });\n reject(error);\n });\n\n req.write(messageJson);\n req.end();\n });\n }\n\n /**\n * Get current transport protocol\n */\n getCurrentProtocol(): 'quic' | 'http2' {\n return this.currentProtocol;\n }\n\n /**\n * Check if QUIC is available\n */\n isQuicAvailable(): boolean {\n return this.quicAvailable;\n }\n\n /**\n * Get transport statistics\n */\n getStats(protocol?: 'quic' | 'http2'): TransportStats | Map<'quic' | 'http2', TransportStats> {\n if (protocol) {\n return this.stats.get(protocol)!;\n }\n return this.stats;\n }\n\n /**\n * Get QUIC coordinator (if initialized)\n */\n getCoordinator(): QuicCoordinator | undefined {\n return this.quicCoordinator;\n }\n\n /**\n * Shutdown transport router\n */\n async shutdown(): Promise<void> {\n logger.info('Shutting down transport router');\n\n // Stop health checks\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n }\n\n // Shutdown QUIC coordinator\n if (this.quicCoordinator) {\n await this.quicCoordinator.stop();\n }\n\n // Close QUIC pool\n if (this.quicPool) {\n await this.quicPool.clear();\n }\n\n // Shutdown QUIC client\n if (this.quicClient) {\n await this.quicClient.shutdown();\n }\n\n // Close HTTP/2 sessions\n for (const session of this.http2Sessions.values()) {\n session.close();\n }\n this.http2Sessions.clear();\n\n logger.info('Transport router shutdown complete');\n }\n\n // ========== Private Methods ==========\n\n /**\n * Start health checks for protocol availability\n */\n private startHealthChecks(): void {\n this.healthCheckTimer = setInterval(async () => {\n await this.checkQuicHealth();\n }, 30000); // Check every 30 seconds\n }\n\n /**\n * Check QUIC health\n */\n private async checkQuicHealth(): Promise<void> {\n if (!this.quicClient) {\n return;\n }\n\n try {\n // Try to get stats as health check\n const stats = this.quicClient.getStats();\n\n if (!this.quicAvailable) {\n this.quicAvailable = true;\n this.currentProtocol = 'quic';\n logger.info('QUIC became available, switching protocol');\n }\n } catch (error) {\n if (this.quicAvailable) {\n this.quicAvailable = false;\n this.currentProtocol = 'http2';\n logger.warn('QUIC became unavailable, switching to HTTP/2', { error });\n }\n }\n }\n\n /**\n * Update transport statistics\n */\n private updateStats(\n protocol: 'quic' | 'http2',\n success: boolean,\n latency: number,\n bytes: number\n ): void {\n const stats = this.stats.get(protocol)!;\n\n if (success) {\n stats.messagesSent++;\n stats.bytesTransferred += bytes;\n\n // Update average latency (exponential moving average)\n const alpha = 0.1;\n stats.averageLatency = stats.averageLatency * (1 - alpha) + latency * alpha;\n } else {\n // Update error rate (exponential moving average)\n const alpha = 0.1;\n const errorCount = stats.messagesSent * stats.errorRate + 1;\n stats.errorRate = errorCount / (stats.messagesSent + 1);\n }\n }\n\n /**\n * Serialize message to bytes\n */\n private serializeMessage(message: SwarmMessage): Uint8Array {\n const json = JSON.stringify(message);\n const encoder = new TextEncoder();\n return encoder.encode(json);\n }\n\n /**\n * Estimate message size in bytes\n */\n private estimateMessageSize(message: SwarmMessage): number {\n return JSON.stringify(message).length;\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC"}
|
package/dist/transport/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,cAAc,WAAW,CAAC","sourcesContent":["// Transport Layer Exports\nexport * from './quic.js';\n"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
export declare enum HandshakeState {
|
|
2
|
+
Initial = "initial",
|
|
3
|
+
Handshaking = "handshaking",
|
|
4
|
+
Established = "established",
|
|
5
|
+
Failed = "failed",
|
|
6
|
+
Closed = "closed"
|
|
7
|
+
}
|
|
8
|
+
export interface QuicHandshakeContext {
|
|
9
|
+
connectionId: string;
|
|
10
|
+
state: HandshakeState;
|
|
11
|
+
remoteAddr: string;
|
|
12
|
+
startTime: number;
|
|
13
|
+
wasmClient: any;
|
|
14
|
+
createMessage: any;
|
|
15
|
+
onEstablished?: () => void;
|
|
16
|
+
onFailed?: (error: Error) => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* QUIC Handshake Manager
|
|
20
|
+
* Implements connection establishment protocol using WASM sendMessage/recvMessage
|
|
21
|
+
*/
|
|
22
|
+
export declare class QuicHandshakeManager {
|
|
23
|
+
private contexts;
|
|
24
|
+
constructor();
|
|
25
|
+
/**
|
|
26
|
+
* Initiate QUIC handshake for a new connection
|
|
27
|
+
*/
|
|
28
|
+
initiateHandshake(connectionId: string, remoteAddr: string, wasmClient: any, createMessage: any): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Send QUIC Initial packet
|
|
31
|
+
*/
|
|
32
|
+
private sendInitialPacket;
|
|
33
|
+
/**
|
|
34
|
+
* Wait for Server Hello response
|
|
35
|
+
*/
|
|
36
|
+
private waitForServerHello;
|
|
37
|
+
/**
|
|
38
|
+
* Send Handshake Complete packet
|
|
39
|
+
*/
|
|
40
|
+
private sendHandshakeComplete;
|
|
41
|
+
/**
|
|
42
|
+
* Create QUIC Initial packet payload
|
|
43
|
+
*/
|
|
44
|
+
private createInitialPayload;
|
|
45
|
+
/**
|
|
46
|
+
* Create Handshake Complete payload
|
|
47
|
+
*/
|
|
48
|
+
private createHandshakeCompletePayload;
|
|
49
|
+
/**
|
|
50
|
+
* Get handshake state for connection
|
|
51
|
+
*/
|
|
52
|
+
getHandshakeState(connectionId: string): HandshakeState;
|
|
53
|
+
/**
|
|
54
|
+
* Check if connection is established
|
|
55
|
+
*/
|
|
56
|
+
isEstablished(connectionId: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Close handshake context
|
|
59
|
+
*/
|
|
60
|
+
closeHandshake(connectionId: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get all active handshakes
|
|
63
|
+
*/
|
|
64
|
+
getActiveHandshakes(): string[];
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=quic-handshake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic-handshake.d.ts","sourceRoot":"","sources":["../../src/transport/quic-handshake.ts"],"names":[],"mappings":"AAKA,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,WAAW,gBAAgB;IAC3B,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,GAAG,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACnC;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAoC;;IAMpD;;OAEG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,EACf,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,OAAO,CAAC;IA2CnB;;OAEG;YACW,iBAAiB;IAwB/B;;OAEG;YACW,kBAAkB;IAoChC;;OAEG;YACW,qBAAqB;IAoBnC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAMtC;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc;IAKvD;;OAEG;IACH,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAI5C;;OAEG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAS1C;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE;CAMhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic-handshake.js","sourceRoot":"","sources":["../../src/transport/quic-handshake.ts"],"names":[],"mappings":"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","sourcesContent":["// QUIC Handshake Protocol Implementation\n// Implements QUIC connection establishment using existing WASM API\n\nimport { logger } from '../utils/logger.js';\n\nexport enum HandshakeState {\n Initial = 'initial',\n Handshaking = 'handshaking',\n Established = 'established',\n Failed = 'failed',\n Closed = 'closed'\n}\n\nexport interface QuicHandshakeContext {\n connectionId: string;\n state: HandshakeState;\n remoteAddr: string;\n startTime: number;\n wasmClient: any;\n createMessage: any;\n onEstablished?: () => void;\n onFailed?: (error: Error) => void;\n}\n\n/**\n * QUIC Handshake Manager\n * Implements connection establishment protocol using WASM sendMessage/recvMessage\n */\nexport class QuicHandshakeManager {\n private contexts: Map<string, QuicHandshakeContext>;\n\n constructor() {\n this.contexts = new Map();\n }\n\n /**\n * Initiate QUIC handshake for a new connection\n */\n async initiateHandshake(\n connectionId: string,\n remoteAddr: string,\n wasmClient: any,\n createMessage: any\n ): Promise<boolean> {\n try {\n logger.info('Initiating QUIC handshake', { connectionId, remoteAddr });\n\n const context: QuicHandshakeContext = {\n connectionId,\n state: HandshakeState.Initial,\n remoteAddr,\n startTime: Date.now(),\n wasmClient,\n createMessage\n };\n\n this.contexts.set(connectionId, context);\n\n // Step 1: Send Initial packet\n await this.sendInitialPacket(context);\n\n // Step 2: Wait for Server Hello\n const success = await this.waitForServerHello(context);\n\n if (success) {\n context.state = HandshakeState.Established;\n logger.info('QUIC handshake established', {\n connectionId,\n duration: Date.now() - context.startTime\n });\n return true;\n } else {\n context.state = HandshakeState.Failed;\n logger.warn('QUIC handshake failed', { connectionId });\n return false;\n }\n } catch (error) {\n logger.error('QUIC handshake error', { connectionId, error });\n const context = this.contexts.get(connectionId);\n if (context) {\n context.state = HandshakeState.Failed;\n }\n return false;\n }\n }\n\n /**\n * Send QUIC Initial packet\n */\n private async sendInitialPacket(context: QuicHandshakeContext): Promise<void> {\n context.state = HandshakeState.Handshaking;\n\n // Create QUIC Initial packet\n const initialPayload = this.createInitialPayload();\n const message = context.createMessage(\n `handshake-init-${Date.now()}`,\n 'handshake',\n initialPayload,\n {\n connectionId: context.connectionId,\n packetType: 'Initial',\n timestamp: Date.now()\n }\n );\n\n logger.debug('Sending QUIC Initial packet', {\n connectionId: context.connectionId,\n bytes: initialPayload.length\n });\n\n await context.wasmClient.sendMessage(context.remoteAddr, message);\n }\n\n /**\n * Wait for Server Hello response\n */\n private async waitForServerHello(context: QuicHandshakeContext): Promise<boolean> {\n try {\n logger.debug('Waiting for Server Hello', { connectionId: context.connectionId });\n\n // Receive response from WASM\n const response = await context.wasmClient.recvMessage(context.remoteAddr);\n\n if (response && response.metadata?.packetType === 'ServerHello') {\n logger.debug('Received Server Hello', {\n connectionId: context.connectionId,\n metadata: response.metadata\n });\n\n // Send Handshake Complete\n await this.sendHandshakeComplete(context);\n return true;\n }\n\n // If no Server Hello, assume graceful degradation\n logger.debug('No Server Hello received, using graceful connection mode', {\n connectionId: context.connectionId\n });\n\n // Mark as established for graceful degradation\n return true;\n } catch (error) {\n logger.debug('Server Hello wait error (expected for direct mode)', {\n connectionId: context.connectionId,\n error: error instanceof Error ? error.message : String(error)\n });\n\n // Graceful degradation: allow connection without full handshake\n return true;\n }\n }\n\n /**\n * Send Handshake Complete packet\n */\n private async sendHandshakeComplete(context: QuicHandshakeContext): Promise<void> {\n const completePayload = this.createHandshakeCompletePayload();\n const message = context.createMessage(\n `handshake-complete-${Date.now()}`,\n 'handshake',\n completePayload,\n {\n connectionId: context.connectionId,\n packetType: 'HandshakeComplete',\n timestamp: Date.now()\n }\n );\n\n logger.debug('Sending Handshake Complete', {\n connectionId: context.connectionId\n });\n\n await context.wasmClient.sendMessage(context.remoteAddr, message);\n }\n\n /**\n * Create QUIC Initial packet payload\n */\n private createInitialPayload(): Uint8Array {\n // Simplified QUIC Initial packet\n // In production, this would be a full QUIC Initial with TLS ClientHello\n const payload = new Uint8Array(64);\n\n // QUIC header flags (Long Header, Initial packet type)\n payload[0] = 0xC0 | 0x00; // Long Header + Initial\n\n // Version (QUIC v1 = 0x00000001)\n payload[1] = 0x00;\n payload[2] = 0x00;\n payload[3] = 0x00;\n payload[4] = 0x01;\n\n // Connection ID length\n payload[5] = 0x08; // 8-byte connection ID\n\n // Random connection ID\n for (let i = 6; i < 14; i++) {\n payload[i] = Math.floor(Math.random() * 256);\n }\n\n // Packet number\n payload[14] = 0x01;\n\n // Remaining bytes are simplified payload\n for (let i = 15; i < payload.length; i++) {\n payload[i] = 0x00;\n }\n\n return payload;\n }\n\n /**\n * Create Handshake Complete payload\n */\n private createHandshakeCompletePayload(): Uint8Array {\n const payload = new Uint8Array(32);\n payload[0] = 0xFF; // Handshake Complete marker\n return payload;\n }\n\n /**\n * Get handshake state for connection\n */\n getHandshakeState(connectionId: string): HandshakeState {\n const context = this.contexts.get(connectionId);\n return context?.state || HandshakeState.Initial;\n }\n\n /**\n * Check if connection is established\n */\n isEstablished(connectionId: string): boolean {\n return this.getHandshakeState(connectionId) === HandshakeState.Established;\n }\n\n /**\n * Close handshake context\n */\n closeHandshake(connectionId: string): void {\n const context = this.contexts.get(connectionId);\n if (context) {\n context.state = HandshakeState.Closed;\n this.contexts.delete(connectionId);\n logger.debug('Handshake context closed', { connectionId });\n }\n }\n\n /**\n * Get all active handshakes\n */\n getActiveHandshakes(): string[] {\n return Array.from(this.contexts.keys()).filter(id => {\n const state = this.getHandshakeState(id);\n return state === HandshakeState.Handshaking || state === HandshakeState.Established;\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
export interface QuicConfig {
|
|
2
|
+
host?: string;
|
|
3
|
+
port?: number;
|
|
4
|
+
certPath?: string;
|
|
5
|
+
keyPath?: string;
|
|
6
|
+
serverHost?: string;
|
|
7
|
+
serverPort?: number;
|
|
8
|
+
verifyPeer?: boolean;
|
|
9
|
+
maxConnections?: number;
|
|
10
|
+
connectionTimeout?: number;
|
|
11
|
+
idleTimeout?: number;
|
|
12
|
+
maxConcurrentStreams?: number;
|
|
13
|
+
streamTimeout?: number;
|
|
14
|
+
initialCongestionWindow?: number;
|
|
15
|
+
maxDatagramSize?: number;
|
|
16
|
+
enableEarlyData?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface QuicConnection {
|
|
19
|
+
id: string;
|
|
20
|
+
remoteAddr: string;
|
|
21
|
+
streamCount: number;
|
|
22
|
+
createdAt: Date;
|
|
23
|
+
lastActivity: Date;
|
|
24
|
+
}
|
|
25
|
+
export interface QuicStream {
|
|
26
|
+
id: number;
|
|
27
|
+
connectionId: string;
|
|
28
|
+
send(data: Uint8Array): Promise<void>;
|
|
29
|
+
receive(): Promise<Uint8Array>;
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export interface QuicStats {
|
|
33
|
+
totalConnections: number;
|
|
34
|
+
activeConnections: number;
|
|
35
|
+
totalStreams: number;
|
|
36
|
+
activeStreams: number;
|
|
37
|
+
bytesReceived: number;
|
|
38
|
+
bytesSent: number;
|
|
39
|
+
packetsLost: number;
|
|
40
|
+
rttMs: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* QUIC Client - Manages outbound QUIC connections and stream multiplexing
|
|
44
|
+
*/
|
|
45
|
+
export declare class QuicClient {
|
|
46
|
+
private config;
|
|
47
|
+
private connections;
|
|
48
|
+
private wasmModule;
|
|
49
|
+
private initialized;
|
|
50
|
+
constructor(config?: QuicConfig);
|
|
51
|
+
/**
|
|
52
|
+
* Initialize QUIC client with WASM module
|
|
53
|
+
*/
|
|
54
|
+
initialize(): Promise<void>;
|
|
55
|
+
/**
|
|
56
|
+
* Connect to QUIC server
|
|
57
|
+
*/
|
|
58
|
+
connect(host?: string, port?: number): Promise<QuicConnection>;
|
|
59
|
+
/**
|
|
60
|
+
* Create bidirectional stream on connection
|
|
61
|
+
*/
|
|
62
|
+
createStream(connectionId: string): Promise<QuicStream>;
|
|
63
|
+
/**
|
|
64
|
+
* Send HTTP/3 request over QUIC
|
|
65
|
+
*/
|
|
66
|
+
sendRequest(connectionId: string, method: string, path: string, headers: Record<string, string>, body?: Uint8Array): Promise<{
|
|
67
|
+
status: number;
|
|
68
|
+
headers: Record<string, string>;
|
|
69
|
+
body: Uint8Array;
|
|
70
|
+
}>;
|
|
71
|
+
/**
|
|
72
|
+
* Close connection
|
|
73
|
+
*/
|
|
74
|
+
closeConnection(connectionId: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Close all connections and cleanup
|
|
77
|
+
*/
|
|
78
|
+
shutdown(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Get connection statistics
|
|
81
|
+
*/
|
|
82
|
+
getStats(): QuicStats;
|
|
83
|
+
/**
|
|
84
|
+
* Load WASM module (placeholder)
|
|
85
|
+
*/
|
|
86
|
+
private loadWasmModule;
|
|
87
|
+
/**
|
|
88
|
+
* Encode HTTP/3 request (placeholder)
|
|
89
|
+
*/
|
|
90
|
+
private encodeHttp3Request;
|
|
91
|
+
/**
|
|
92
|
+
* Decode HTTP/3 response (placeholder)
|
|
93
|
+
*/
|
|
94
|
+
private decodeHttp3Response;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* QUIC Server - Listens for inbound QUIC connections
|
|
98
|
+
*/
|
|
99
|
+
export declare class QuicServer {
|
|
100
|
+
private config;
|
|
101
|
+
private connections;
|
|
102
|
+
private wasmModule;
|
|
103
|
+
private initialized;
|
|
104
|
+
private listening;
|
|
105
|
+
constructor(config?: QuicConfig);
|
|
106
|
+
/**
|
|
107
|
+
* Initialize QUIC server
|
|
108
|
+
*/
|
|
109
|
+
initialize(): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Start listening for connections
|
|
112
|
+
*/
|
|
113
|
+
listen(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* Stop server and close all connections
|
|
116
|
+
*/
|
|
117
|
+
stop(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Close connection
|
|
120
|
+
*/
|
|
121
|
+
closeConnection(connectionId: string): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Get server statistics
|
|
124
|
+
*/
|
|
125
|
+
getStats(): QuicStats;
|
|
126
|
+
/**
|
|
127
|
+
* Load WASM module (placeholder)
|
|
128
|
+
*/
|
|
129
|
+
private loadWasmModule;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Connection pool manager for QUIC connections
|
|
133
|
+
*/
|
|
134
|
+
export declare class QuicConnectionPool {
|
|
135
|
+
private client;
|
|
136
|
+
private connections;
|
|
137
|
+
private maxPoolSize;
|
|
138
|
+
constructor(client: QuicClient, maxPoolSize?: number);
|
|
139
|
+
/**
|
|
140
|
+
* Get or create connection from pool
|
|
141
|
+
*/
|
|
142
|
+
getConnection(host: string, port: number): Promise<QuicConnection>;
|
|
143
|
+
/**
|
|
144
|
+
* Remove oldest idle connection
|
|
145
|
+
*/
|
|
146
|
+
private removeOldestConnection;
|
|
147
|
+
/**
|
|
148
|
+
* Clear all connections in pool
|
|
149
|
+
*/
|
|
150
|
+
clear(): Promise<void>;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* QuicTransport - High-level QUIC transport interface
|
|
154
|
+
* Simplified API for common use cases (backwards compatible)
|
|
155
|
+
*/
|
|
156
|
+
export interface QuicTransportConfig {
|
|
157
|
+
host?: string;
|
|
158
|
+
port?: number;
|
|
159
|
+
maxConcurrentStreams?: number;
|
|
160
|
+
certPath?: string;
|
|
161
|
+
keyPath?: string;
|
|
162
|
+
}
|
|
163
|
+
export declare class QuicTransport {
|
|
164
|
+
private client;
|
|
165
|
+
private config;
|
|
166
|
+
constructor(config?: QuicTransportConfig);
|
|
167
|
+
/**
|
|
168
|
+
* Connect to QUIC server
|
|
169
|
+
*/
|
|
170
|
+
connect(): Promise<void>;
|
|
171
|
+
/**
|
|
172
|
+
* Send data over QUIC
|
|
173
|
+
*/
|
|
174
|
+
send(data: any): Promise<void>;
|
|
175
|
+
/**
|
|
176
|
+
* Close connection
|
|
177
|
+
*/
|
|
178
|
+
close(): Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Get connection statistics
|
|
181
|
+
*/
|
|
182
|
+
getStats(): QuicStats;
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=quic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic.d.ts","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":"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"}
|
package/dist/transport/quic.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quic.js","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,uFAAuF;AAEvF,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAwD5C;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAuB;IAC7B,WAAW,CAA8B;IACzC,UAAU,CAAM,CAAC,wBAAwB;IACzC,WAAW,CAAU;IAE7B,YAAY,SAAqB,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,WAAW;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;YAC5C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;YACxC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,GAAG;YACxD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;YAC5C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,EAAE;YAC7D,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;SAChD,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACzC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAClC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;aACnC,CAAC,CAAC;YAEH,4DAA4D;YAC5D,6DAA6D;YAC7D,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAa,EAAE,IAAa;QACxC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;QAClD,MAAM,YAAY,GAAG,GAAG,UAAU,IAAI,UAAU,EAAE,CAAC;QAEnD,qCAAqC;QACrC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;YACjD,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,MAAM,CAAC,cAAc,WAAW,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAEpF,qCAAqC;YACrC,uEAAuE;YACvE,MAAM,UAAU,GAAmB;gBACjC,EAAE,EAAE,YAAY;gBAChB,UAAU,EAAE,GAAG,UAAU,IAAI,UAAU,EAAE;gBACzC,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,YAAY,EAAE,IAAI,IAAI,EAAE;aACzB,CAAC;YAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YAE7D,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YACnG,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,cAAc,YAAY,YAAY,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,UAAU,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,MAAM,CAAC,oBAAoB,WAAW,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAC1C,UAAU,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;QAErC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEjE,yBAAyB;QACzB,MAAM,MAAM,GAAe;YACzB,EAAE,EAAE,QAAQ;YACZ,YAAY;YACZ,IAAI,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;gBAC/B,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvF,yBAAyB;gBACzB,UAAU,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,KAAK,IAAyB,EAAE;gBACvC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrE,4BAA4B;gBAC5B,UAAU,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrC,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,cAAc;YACzC,CAAC;YACD,KAAK,EAAE,KAAK,IAAI,EAAE;gBAChB,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC3D,UAAU,CAAC,WAAW,EAAE,CAAC;gBACzB,UAAU,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YACvC,CAAC;SACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,YAAoB,EACpB,MAAc,EACd,IAAY,EACZ,OAA+B,EAC/B,IAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACrE,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE3B,0BAA0B;YAC1B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAExD,OAAO,QAAQ,CAAC;QAClB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QACzD,gCAAgC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAEvF,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACvC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACxC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/F,aAAa,EAAE,CAAC,EAAE,YAAY;YAC9B,SAAS,EAAE,CAAC,EAAE,YAAY;YAC1B,WAAW,EAAE,CAAC,EAAE,YAAY;YAC5B,KAAK,EAAE,CAAC,CAAC,YAAY;SACtB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,0DAA0D;QAC1D,gCAAgC;QAChC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,MAAc,EACd,IAAY,EACZ,OAA+B,EAC/B,IAAiB;QAEjB,4CAA4C;QAC5C,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,OAAO,IAAI,UAAU,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,IAAgB;QAK1C,4CAA4C;QAC5C,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO;YACL,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,IAAI,UAAU,EAAE;SACvB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAuB;IAC7B,WAAW,CAA8B;IACzC,UAAU,CAAM;IAChB,WAAW,CAAU;IACrB,SAAS,CAAU;IAE3B,YAAY,SAAqB,EAAE;QACjC,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,kBAAkB;YAC/C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,WAAW;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;YACtC,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI;YAC7C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;YACpD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM;YACzC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,GAAG;YACxD,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK;YAC5C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,EAAE;YAC7D,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;YAC/C,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,KAAK;SACjD,CAAC;QACF,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;aAC/B,CAAC,CAAC;YAEH,mBAAmB;YACnB,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAE9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAExF,6BAA6B;YAC7B,qDAAqD;YAErD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAElF,wBAAwB;QACxB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QAED,0BAA0B;QAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACvC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YACxC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/F,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,CAAC;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc;QAC1B,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,MAAM,CAAa;IACnB,WAAW,CAA8B;IACzC,WAAW,CAAS;IAE5B,YAAY,MAAkB,EAAE,cAAsB,EAAE;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,IAAY;QAC5C,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,gCAAgC;YAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE5B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;gBAC9B,UAAU,GAAG,YAAY,CAAC;gBAC1B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF;AAcD,MAAM,OAAO,aAAa;IAChB,MAAM,CAAa;IACnB,MAAM,CAAsB;IAEpC,YAAY,SAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC;YAC3B,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW;YACtC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YAC/B,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,GAAG;YACxD,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAS;QAClB,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,8CAA8C;QAC9C,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;CACF","sourcesContent":["// QUIC Transport Layer for Agentic Flow\n// WebAssembly-based QUIC client/server with connection pooling and stream multiplexing\n\nimport { logger } from '../utils/logger.js';\n\nexport interface QuicConfig {\n // Server configuration\n host?: string;\n port?: number;\n certPath?: string;\n keyPath?: string;\n\n // Client configuration\n serverHost?: string;\n serverPort?: number;\n verifyPeer?: boolean;\n\n // Connection pool\n maxConnections?: number;\n connectionTimeout?: number;\n idleTimeout?: number;\n\n // Stream configuration\n maxConcurrentStreams?: number;\n streamTimeout?: number;\n\n // Performance tuning\n initialCongestionWindow?: number;\n maxDatagramSize?: number;\n enableEarlyData?: boolean;\n}\n\nexport interface QuicConnection {\n id: string;\n remoteAddr: string;\n streamCount: number;\n createdAt: Date;\n lastActivity: Date;\n}\n\nexport interface QuicStream {\n id: number;\n connectionId: string;\n send(data: Uint8Array): Promise<void>;\n receive(): Promise<Uint8Array>;\n close(): Promise<void>;\n}\n\nexport interface QuicStats {\n totalConnections: number;\n activeConnections: number;\n totalStreams: number;\n activeStreams: number;\n bytesReceived: number;\n bytesSent: number;\n packetsLost: number;\n rttMs: number;\n}\n\n/**\n * QUIC Client - Manages outbound QUIC connections and stream multiplexing\n */\nexport class QuicClient {\n private config: Required<QuicConfig>;\n private connections: Map<string, QuicConnection>;\n private wasmModule: any; // WASM module reference\n private initialized: boolean;\n\n constructor(config: QuicConfig = {}) {\n this.config = {\n host: config.host || '0.0.0.0',\n port: config.port || 4433,\n certPath: config.certPath || './certs/cert.pem',\n keyPath: config.keyPath || './certs/key.pem',\n serverHost: config.serverHost || 'localhost',\n serverPort: config.serverPort || 4433,\n verifyPeer: config.verifyPeer ?? true,\n maxConnections: config.maxConnections || 100,\n connectionTimeout: config.connectionTimeout || 30000,\n idleTimeout: config.idleTimeout || 60000,\n maxConcurrentStreams: config.maxConcurrentStreams || 100,\n streamTimeout: config.streamTimeout || 30000,\n initialCongestionWindow: config.initialCongestionWindow || 10,\n maxDatagramSize: config.maxDatagramSize || 1200,\n enableEarlyData: config.enableEarlyData ?? true\n };\n this.connections = new Map();\n this.initialized = false;\n }\n\n /**\n * Initialize QUIC client with WASM module\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n logger.warn('QUIC client already initialized');\n return;\n }\n\n try {\n logger.info('Initializing QUIC client...', {\n serverHost: this.config.serverHost,\n serverPort: this.config.serverPort,\n verifyPeer: this.config.verifyPeer\n });\n\n // Load WASM module (implementation depends on WASM binding)\n // For now, this is a placeholder for the actual WASM loading\n this.wasmModule = await this.loadWasmModule();\n\n this.initialized = true;\n logger.info('QUIC client initialized successfully');\n } catch (error) {\n logger.error('Failed to initialize QUIC client', { error });\n throw error;\n }\n }\n\n /**\n * Connect to QUIC server\n */\n async connect(host?: string, port?: number): Promise<QuicConnection> {\n if (!this.initialized) {\n throw new Error('QUIC client not initialized. Call initialize() first.');\n }\n\n const targetHost = host || this.config.serverHost;\n const targetPort = port || this.config.serverPort;\n const connectionId = `${targetHost}:${targetPort}`;\n\n // Check if connection already exists\n if (this.connections.has(connectionId)) {\n const conn = this.connections.get(connectionId)!;\n conn.lastActivity = new Date();\n logger.debug('Reusing existing QUIC connection', { connectionId });\n return conn;\n }\n\n // Check connection pool limit\n if (this.connections.size >= this.config.maxConnections) {\n throw new Error(`Maximum connections (${this.config.maxConnections}) reached`);\n }\n\n try {\n logger.info('Establishing QUIC connection', { host: targetHost, port: targetPort });\n\n // Establish QUIC connection via WASM\n // This is a placeholder - actual implementation will use WASM bindings\n const connection: QuicConnection = {\n id: connectionId,\n remoteAddr: `${targetHost}:${targetPort}`,\n streamCount: 0,\n createdAt: new Date(),\n lastActivity: new Date()\n };\n\n this.connections.set(connectionId, connection);\n logger.info('QUIC connection established', { connectionId });\n\n return connection;\n } catch (error) {\n logger.error('Failed to establish QUIC connection', { error, host: targetHost, port: targetPort });\n throw error;\n }\n }\n\n /**\n * Create bidirectional stream on connection\n */\n async createStream(connectionId: string): Promise<QuicStream> {\n const connection = this.connections.get(connectionId);\n if (!connection) {\n throw new Error(`Connection ${connectionId} not found`);\n }\n\n if (connection.streamCount >= this.config.maxConcurrentStreams) {\n throw new Error(`Maximum concurrent streams (${this.config.maxConcurrentStreams}) reached`);\n }\n\n const streamId = connection.streamCount++;\n connection.lastActivity = new Date();\n\n logger.debug('Creating QUIC stream', { connectionId, streamId });\n\n // Create stream via WASM\n const stream: QuicStream = {\n id: streamId,\n connectionId,\n send: async (data: Uint8Array) => {\n logger.debug('Sending data on stream', { connectionId, streamId, bytes: data.length });\n // WASM call to send data\n connection.lastActivity = new Date();\n },\n receive: async (): Promise<Uint8Array> => {\n logger.debug('Receiving data on stream', { connectionId, streamId });\n // WASM call to receive data\n connection.lastActivity = new Date();\n return new Uint8Array(); // Placeholder\n },\n close: async () => {\n logger.debug('Closing stream', { connectionId, streamId });\n connection.streamCount--;\n connection.lastActivity = new Date();\n }\n };\n\n return stream;\n }\n\n /**\n * Send HTTP/3 request over QUIC\n */\n async sendRequest(\n connectionId: string,\n method: string,\n path: string,\n headers: Record<string, string>,\n body?: Uint8Array\n ): Promise<{ status: number; headers: Record<string, string>; body: Uint8Array }> {\n const stream = await this.createStream(connectionId);\n\n try {\n // Encode HTTP/3 request\n const request = this.encodeHttp3Request(method, path, headers, body);\n await stream.send(request);\n\n // Receive HTTP/3 response\n const responseData = await stream.receive();\n const response = this.decodeHttp3Response(responseData);\n\n return response;\n } finally {\n await stream.close();\n }\n }\n\n /**\n * Close connection\n */\n async closeConnection(connectionId: string): Promise<void> {\n const connection = this.connections.get(connectionId);\n if (!connection) {\n logger.warn('Connection not found', { connectionId });\n return;\n }\n\n logger.info('Closing QUIC connection', { connectionId });\n // WASM call to close connection\n this.connections.delete(connectionId);\n }\n\n /**\n * Close all connections and cleanup\n */\n async shutdown(): Promise<void> {\n logger.info('Shutting down QUIC client', { activeConnections: this.connections.size });\n\n for (const connectionId of this.connections.keys()) {\n await this.closeConnection(connectionId);\n }\n\n this.initialized = false;\n }\n\n /**\n * Get connection statistics\n */\n getStats(): QuicStats {\n return {\n totalConnections: this.connections.size,\n activeConnections: this.connections.size,\n totalStreams: Array.from(this.connections.values()).reduce((sum, c) => sum + c.streamCount, 0),\n activeStreams: Array.from(this.connections.values()).reduce((sum, c) => sum + c.streamCount, 0),\n bytesReceived: 0, // From WASM\n bytesSent: 0, // From WASM\n packetsLost: 0, // From WASM\n rttMs: 0 // From WASM\n };\n }\n\n /**\n * Load WASM module (placeholder)\n */\n private async loadWasmModule(): Promise<any> {\n // This will be implemented to load the actual WASM module\n // For now, return a mock object\n logger.debug('Loading QUIC WASM module...');\n return {};\n }\n\n /**\n * Encode HTTP/3 request (placeholder)\n */\n private encodeHttp3Request(\n method: string,\n path: string,\n headers: Record<string, string>,\n body?: Uint8Array\n ): Uint8Array {\n // HTTP/3 QPACK encoding will be implemented\n logger.debug('Encoding HTTP/3 request', { method, path, headers });\n return new Uint8Array();\n }\n\n /**\n * Decode HTTP/3 response (placeholder)\n */\n private decodeHttp3Response(data: Uint8Array): {\n status: number;\n headers: Record<string, string>;\n body: Uint8Array;\n } {\n // HTTP/3 QPACK decoding will be implemented\n logger.debug('Decoding HTTP/3 response', { bytes: data.length });\n return {\n status: 200,\n headers: {},\n body: new Uint8Array()\n };\n }\n}\n\n/**\n * QUIC Server - Listens for inbound QUIC connections\n */\nexport class QuicServer {\n private config: Required<QuicConfig>;\n private connections: Map<string, QuicConnection>;\n private wasmModule: any;\n private initialized: boolean;\n private listening: boolean;\n\n constructor(config: QuicConfig = {}) {\n this.config = {\n host: config.host || '0.0.0.0',\n port: config.port || 4433,\n certPath: config.certPath || './certs/cert.pem',\n keyPath: config.keyPath || './certs/key.pem',\n serverHost: config.serverHost || 'localhost',\n serverPort: config.serverPort || 4433,\n verifyPeer: config.verifyPeer ?? false,\n maxConnections: config.maxConnections || 1000,\n connectionTimeout: config.connectionTimeout || 30000,\n idleTimeout: config.idleTimeout || 120000,\n maxConcurrentStreams: config.maxConcurrentStreams || 100,\n streamTimeout: config.streamTimeout || 30000,\n initialCongestionWindow: config.initialCongestionWindow || 10,\n maxDatagramSize: config.maxDatagramSize || 1200,\n enableEarlyData: config.enableEarlyData ?? false\n };\n this.connections = new Map();\n this.initialized = false;\n this.listening = false;\n }\n\n /**\n * Initialize QUIC server\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n logger.warn('QUIC server already initialized');\n return;\n }\n\n try {\n logger.info('Initializing QUIC server...', {\n host: this.config.host,\n port: this.config.port,\n certPath: this.config.certPath\n });\n\n // Load WASM module\n this.wasmModule = await this.loadWasmModule();\n\n this.initialized = true;\n logger.info('QUIC server initialized successfully');\n } catch (error) {\n logger.error('Failed to initialize QUIC server', { error });\n throw error;\n }\n }\n\n /**\n * Start listening for connections\n */\n async listen(): Promise<void> {\n if (!this.initialized) {\n throw new Error('QUIC server not initialized. Call initialize() first.');\n }\n\n if (this.listening) {\n logger.warn('QUIC server already listening');\n return;\n }\n\n try {\n logger.info('Starting QUIC server', { host: this.config.host, port: this.config.port });\n\n // Start QUIC server via WASM\n // This will be implemented with actual WASM bindings\n\n this.listening = true;\n logger.info(`QUIC server listening on ${this.config.host}:${this.config.port}`);\n } catch (error) {\n logger.error('Failed to start QUIC server', { error });\n throw error;\n }\n }\n\n /**\n * Stop server and close all connections\n */\n async stop(): Promise<void> {\n if (!this.listening) {\n logger.warn('QUIC server not listening');\n return;\n }\n\n logger.info('Stopping QUIC server', { activeConnections: this.connections.size });\n\n // Close all connections\n for (const connectionId of this.connections.keys()) {\n await this.closeConnection(connectionId);\n }\n\n // Stop listening via WASM\n this.listening = false;\n logger.info('QUIC server stopped');\n }\n\n /**\n * Close connection\n */\n async closeConnection(connectionId: string): Promise<void> {\n const connection = this.connections.get(connectionId);\n if (!connection) {\n logger.warn('Connection not found', { connectionId });\n return;\n }\n\n logger.info('Closing connection', { connectionId });\n this.connections.delete(connectionId);\n }\n\n /**\n * Get server statistics\n */\n getStats(): QuicStats {\n return {\n totalConnections: this.connections.size,\n activeConnections: this.connections.size,\n totalStreams: Array.from(this.connections.values()).reduce((sum, c) => sum + c.streamCount, 0),\n activeStreams: Array.from(this.connections.values()).reduce((sum, c) => sum + c.streamCount, 0),\n bytesReceived: 0,\n bytesSent: 0,\n packetsLost: 0,\n rttMs: 0\n };\n }\n\n /**\n * Load WASM module (placeholder)\n */\n private async loadWasmModule(): Promise<any> {\n logger.debug('Loading QUIC server WASM module...');\n return {};\n }\n}\n\n/**\n * Connection pool manager for QUIC connections\n */\nexport class QuicConnectionPool {\n private client: QuicClient;\n private connections: Map<string, QuicConnection>;\n private maxPoolSize: number;\n\n constructor(client: QuicClient, maxPoolSize: number = 10) {\n this.client = client;\n this.connections = new Map();\n this.maxPoolSize = maxPoolSize;\n }\n\n /**\n * Get or create connection from pool\n */\n async getConnection(host: string, port: number): Promise<QuicConnection> {\n const key = `${host}:${port}`;\n\n if (this.connections.has(key)) {\n const conn = this.connections.get(key)!;\n conn.lastActivity = new Date();\n return conn;\n }\n\n if (this.connections.size >= this.maxPoolSize) {\n // Remove oldest idle connection\n this.removeOldestConnection();\n }\n\n const connection = await this.client.connect(host, port);\n this.connections.set(key, connection);\n return connection;\n }\n\n /**\n * Remove oldest idle connection\n */\n private removeOldestConnection(): void {\n let oldestKey: string | null = null;\n let oldestTime = Date.now();\n\n for (const [key, conn] of this.connections.entries()) {\n const lastActivity = conn.lastActivity.getTime();\n if (lastActivity < oldestTime) {\n oldestTime = lastActivity;\n oldestKey = key;\n }\n }\n\n if (oldestKey) {\n this.client.closeConnection(oldestKey);\n this.connections.delete(oldestKey);\n logger.debug('Removed idle connection from pool', { connectionId: oldestKey });\n }\n }\n\n /**\n * Clear all connections in pool\n */\n async clear(): Promise<void> {\n for (const connectionId of this.connections.keys()) {\n await this.client.closeConnection(connectionId);\n }\n this.connections.clear();\n }\n}\n\n/**\n * QuicTransport - High-level QUIC transport interface\n * Simplified API for common use cases (backwards compatible)\n */\nexport interface QuicTransportConfig {\n host?: string;\n port?: number;\n maxConcurrentStreams?: number;\n certPath?: string;\n keyPath?: string;\n}\n\nexport class QuicTransport {\n private client: QuicClient;\n private config: QuicTransportConfig;\n\n constructor(config: QuicTransportConfig = {}) {\n this.config = config;\n this.client = new QuicClient({\n serverHost: config.host || 'localhost',\n serverPort: config.port || 4433,\n maxConcurrentStreams: config.maxConcurrentStreams || 100,\n certPath: config.certPath,\n keyPath: config.keyPath\n });\n }\n\n /**\n * Connect to QUIC server\n */\n async connect(): Promise<void> {\n await this.client.initialize();\n await this.client.connect();\n }\n\n /**\n * Send data over QUIC\n */\n async send(data: any): Promise<void> {\n // Convert data to bytes and send\n const jsonStr = JSON.stringify(data);\n const bytes = new TextEncoder().encode(jsonStr);\n // Implementation will use QUIC client to send\n logger.debug('Sending data via QUIC', { bytes: bytes.length });\n }\n\n /**\n * Close connection\n */\n async close(): Promise<void> {\n await this.client.shutdown();\n }\n\n /**\n * Get connection statistics\n */\n getStats(): QuicStats {\n return this.client.getStats();\n }\n}\n"]}
|