/** * HTTP/SSE Transport * * Implements the Transport interface using HTTP requests and Server-Sent Events. * Also handles WebSocket upgrades on the same port, so a single server can * serve both browser clients (HTTP/SSE) and WS clients (TUI, native apps). */ import { type IncomingMessage, type ServerResponse } from "http"; import type { Message, ToolConfirmationResponse } from "@agentick/shared"; import type { UserContext } from "./types.js"; import { BaseTransport, type NetworkTransportConfig } from "./transport.js"; export interface HTTPTransportConfig extends NetworkTransportConfig { /** CORS origin (default: "*") */ corsOrigin?: string; /** Path prefix for all endpoints (default: "") */ pathPrefix?: string; /** Direct send handler for streaming response. * Accepts SendInput (messages array) — the standard client format. */ onDirectSend?: (sessionId: string, input: { messages?: Message[]; metadata?: Record; }, opts?: { excludeClientId?: string; }) => AsyncIterable<{ type: string; data?: unknown; }>; /** Method invocation handler */ onInvoke?: (method: string, params: Record, user?: UserContext) => Promise; /** Tool confirmation response handler */ onToolResponse?: (sessionId: string, toolUseId: string, result: ToolConfirmationResponse) => Promise; /** Abort session handler */ onAbort?: (sessionId: string, reason?: string) => Promise; /** Plugin route matcher — called before built-in routes. * Returns true if the route was handled. */ onRouteMatch?: (path: string, req: IncomingMessage, res: ServerResponse) => boolean | Promise; } export declare class HTTPTransport extends BaseTransport { readonly type: "http"; private server; private wss; protected config: HTTPTransportConfig; constructor(config: HTTPTransportConfig); start(): Promise; stop(): Promise; private handleRequest; /** * SSE endpoint - establishes long-lived connection for events */ private handleSSE; /** * Send endpoint - receives messages and streams response */ private handleSend; /** * Invoke endpoint - execute custom gateway methods * Returns JSON (not streaming) for simpler client handling */ private handleInvoke; /** * Subscribe endpoint - manage session subscriptions */ private handleSubscribe; /** * Abort endpoint */ private handleAbort; /** * Close endpoint */ private handleClose; /** * Channel endpoint */ private handleChannel; private handleToolResponse; private handleWSConnection; private handleWSMessage; private handleWSConnect; /** * Handle a request from Express middleware. * This allows the gateway to be mounted in an existing Express app. */ handleExpressRequest(req: IncomingMessage & { path?: string; }, res: ServerResponse & { status?: (code: number) => any; json?: (body: unknown) => void; }, next: (err?: unknown) => void): void; private parseBody; } export declare function createHTTPTransport(config: HTTPTransportConfig): HTTPTransport; //# sourceMappingURL=http-transport.d.ts.map