import type { Message, AgentResult, DomSnapshot } from "../../shared/types.js"; import type { ServerCommand, ClientMessage } from "../security/protocol.js"; export type TransportType = "websocket" | "http"; export interface AgentStartPayload { agentId: string; messages: Message[]; context?: Record; } export interface AgentEventMap { thinking: { content: string; }; tool_start: { id: string; name: string; arguments: string; }; tool_end: { id: string; name: string; result: unknown; }; complete: { result: AgentResult; }; error: { message: string; code?: string; }; confirm: { message: string; requestId: string; }; } export type AgentEventType = keyof AgentEventMap; export interface PortalEventMap { command: ServerCommand; snapshot: DomSnapshot; } export interface ServerTransportConfig { corsOrigins?: string[]; sessionStore?: SessionStoreAdapter; debug?: boolean; } export interface SessionStoreAdapter { get(sessionId: string): Promise; set(sessionId: string, data: SessionData, ttlMs?: number): Promise; delete(sessionId: string): Promise; touch(sessionId: string): Promise; } export interface SessionData { id: string; userId?: string; createdAt: number; lastActivity: number; snapshot?: DomSnapshot; messageHistory?: Record; } export interface ServerTransport { readonly type: TransportType; start(): Promise; shutdown(): Promise; onAgentStart(handler: (sessionId: string, payload: AgentStartPayload, emit: (event: K, data: AgentEventMap[K]) => void) => Promise): void; onPortalMessage(handler: (sessionId: string, message: ClientMessage) => void): void; onConfirmResponse(handler: (sessionId: string, approved: boolean) => void): void; sendPortalCommand(sessionId: string, command: ServerCommand): boolean; getSession(sessionId: string): SessionData | null; } export interface ClientTransportConfig { serverUrl: string; onCommand?: (command: ServerCommand) => void; onDisconnect?: () => void; onReconnect?: () => void; } export interface ClientTransport { readonly type: TransportType; connect(): Promise; disconnect(): void; isConnected(): boolean; startAgent(payload: AgentStartPayload): AsyncGenerator<{ type: AgentEventType; data: unknown; }>; sendPortalMessage(message: ClientMessage): void; sendConfirmResponse(approved: boolean): void; } export declare const HTTP_ENDPOINTS: { readonly AGENT_CHAT: "/_plexus/agent/chat"; readonly PORTAL_MESSAGE: "/_plexus/portal/message"; readonly PORTAL_CONFIRM: "/_plexus/portal/confirm"; readonly PORTAL_EVENTS: "/_plexus/portal/events"; readonly SESSION: "/_plexus/session"; }; //# sourceMappingURL=transport-types.d.ts.map