import type { StreamOperation, StreamWireEvent } from "../types"; import { StructuredStreamAdapter } from "./adapters/structured"; import { N8nStreamAdapter } from "./adapters/n8n"; export interface StreamProtocolAdapter { canHandle(event: StreamWireEvent): boolean; adapt(event: StreamWireEvent): StreamOperation[]; finish(): StreamOperation[]; } export function selectAdapter( event: StreamWireEvent, ): StreamProtocolAdapter | null { const structured = new StructuredStreamAdapter(); if (structured.canHandle(event)) return structured; const n8n = new N8nStreamAdapter(); if (n8n.canHandle(event)) return n8n; return null; }