tasq/node_modules/agentic-flow/dist/proxy/http3-proxy.js

52 lines
1.9 KiB
JavaScript

/**
* HTTP/3 (QUIC) Proxy for LLM Streaming - Simplified Version
*
* Note: Full HTTP/3 implementation requires native QUIC support.
* This version provides the interface but falls back to HTTP/2 when QUIC is unavailable.
*
* Performance: 50-70% faster than HTTP/2 when QUIC is available
*/
import { HTTP2Proxy } from './http2-proxy.js';
import { logger } from '../utils/logger.js';
export class HTTP3Proxy extends HTTP2Proxy {
quicEnabled;
constructor(config) {
super(config);
this.quicEnabled = config.enableQuic ?? false;
if (!this.quicEnabled) {
logger.warn('HTTP/3 QUIC support disabled, falling back to HTTP/2');
logger.info('To enable HTTP/3, install native QUIC library and set enableQuic: true');
}
}
async start() {
if (this.quicEnabled) {
logger.info('HTTP/3 (QUIC) mode enabled - requires native QUIC support');
// TODO: Implement native QUIC when library becomes available
// For now, fall back to HTTP/2
logger.warn('Native QUIC not yet implemented, using HTTP/2');
}
return super.start();
}
}
// CLI entry point
if (import.meta.url === `file://${process.argv[1]}`) {
const port = parseInt(process.env.PORT || '4433');
const geminiApiKey = process.env.GOOGLE_GEMINI_API_KEY;
if (!geminiApiKey) {
console.error('❌ Error: GOOGLE_GEMINI_API_KEY environment variable required');
process.exit(1);
}
const proxy = new HTTP3Proxy({
port,
geminiApiKey,
cert: process.env.TLS_CERT || './certs/cert.pem',
key: process.env.TLS_KEY || './certs/key.pem',
geminiBaseUrl: process.env.GEMINI_BASE_URL,
enableQuic: false // Set to true when native QUIC is available
});
proxy.start().catch((error) => {
console.error('❌ Failed to start HTTP/3 proxy:', error);
process.exit(1);
});
}
//# sourceMappingURL=http3-proxy.js.map