agentic-flow 3.4.3 → 3.4.4
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 +8 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/transport/index.d.ts +1 -1
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +1 -1
- package/dist/transport/index.js.map +1 -1
- package/dist/transport/quic-loader.d.ts +31 -10
- package/dist/transport/quic-loader.d.ts.map +1 -1
- package/dist/transport/quic-loader.js +35 -39
- package/dist/transport/quic-loader.js.map +1 -1
- package/dist/transport/quic.d.ts +1 -0
- package/dist/transport/quic.d.ts.map +1 -1
- package/dist/transport/quic.js +10 -1
- package/dist/transport/quic.js.map +1 -1
- package/docs/quic/QUIC-STATUS.md +20 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quic.js","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":"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","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 || '127.0.0.1',\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 || '127.0.0.1',\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"]}
|
|
1
|
+
{"version":3,"file":"quic.js","sourceRoot":"","sources":["../../src/transport/quic.ts"],"names":[],"mappings":"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","sourcesContent":["// QUIC Transport Layer for Agentic Flow\n//\n// PLACEHOLDER API: QuicClient, QuicServer and QuicTransport do not open UDP\n// sockets or transmit bytes. No native QUIC binding is published for\n// agentic-flow, and wasm/quic is a browser stub without UDP. Probe with\n// isQuicAvailable() / getQuicStatus() (re-exported below); for a transport\n// that moves bytes use loadQuicTransport() from 'agentic-flow/transport/loader'.\n\nimport { logger } from '../utils/logger.js';\nimport { QUIC_UNAVAILABLE_REASON } from './quic-loader.js';\n\nexport {\n isQuicAvailable,\n getQuicStatus,\n QUIC_UNAVAILABLE_REASON,\n type QuicStatus,\n} from './quic-loader.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 || '127.0.0.1',\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 logger.warn('agentic-flow/transport/quic is a placeholder; no QUIC packets are sent. ' + QUIC_UNAVAILABLE_REASON);\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 || '127.0.0.1',\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 logger.warn('agentic-flow/transport/quic is a placeholder; no QUIC packets are sent. ' + QUIC_UNAVAILABLE_REASON);\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"]}
|
package/docs/quic/QUIC-STATUS.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
# QUIC in npm builds: unavailable (3.4.4)
|
|
2
|
+
|
|
3
|
+
The npm package of agentic-flow does not include a working QUIC transport.
|
|
4
|
+
|
|
5
|
+
- No native (N-API) QUIC binding is built or published. The quinn-based client and server in `crates/agentic-flow-quic` have no Node bindings.
|
|
6
|
+
- `wasm/quic/` is a browser build of that crate with quinn/tokio compiled out. It cannot open UDP sockets.
|
|
7
|
+
- `agentic-flow/transport/quic` (`QuicClient`, `QuicServer`, `QuicTransport`) is a placeholder API. It sends no bytes.
|
|
8
|
+
|
|
9
|
+
`isQuicAvailable()` returns `false`, and `getQuicStatus()` / `getTransportCapabilities()` give the reason. `AGENTIC_FLOW_QUIC_NATIVE=1` is ignored. The working transport is the WebSocket fallback:
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
import { loadQuicTransport, getQuicStatus } from 'agentic-flow/transport/loader';
|
|
13
|
+
console.log(await getQuicStatus()); // { available: false, reason: '...', fallback: 'websocket' }
|
|
14
|
+
const t = await loadQuicTransport({ serverName: 'peer' }); // WebSocket transport
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The status report below is historical and overstates what ships.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
1
21
|
# QUIC Implementation Status - Agentic Flow v1.6.4
|
|
2
22
|
|
|
3
23
|
**Last Updated**: October 17, 2025
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-flow",
|
|
3
|
-
"version": "3.4.
|
|
3
|
+
"version": "3.4.4",
|
|
4
4
|
"description": "The agentic meta-harness — freeze the model, evolve the harness. An open runtime that routes each query to the cost-optimal model, evolves its own harness (planner/context/reviewer/retry/tool/memory/score policy) and autonomously repairs code, then orchestrates 66 specialized agents, 213 MCP tools, ReasoningBank memory, and multi-agent swarms on top. Built by @ruvnet on the Claude Agent SDK.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|