UNPKG

trellis

Version:

Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications

75 lines 2.34 kB
/** * WebSocket Transport for SyncEngine (TRL-334) * * Provides WebSocket-based bidirectional sync transport for realtime * full-state sync. Integrates with existing SyncEngine protocol. */ import type { SyncTransport, SyncMessage, PeerId } from './types.js'; import { type RateLimiterOptions } from './rate-limiter.js'; export interface WebSocketTransportOptions { /** WebSocket server URL (e.g., wss://localhost:8231/sync) */ url: string; /** Local peer identity. */ localPeerId: string; /** Reconnection delay in ms (default: 5000). */ reconnectDelay?: number; /** Maximum reconnection attempts (default: infinite). */ maxReconnectAttempts?: number; /** Authentication token (JWT or API key). */ authToken?: string; /** Maximum message size in bytes (default: 10MB). */ maxMessageSize?: number; /** Enforce TLS (reject ws://) - defaults to true in production. */ enforceTls?: boolean; /** Rate limiter options. */ rateLimiter?: RateLimiterOptions; } export interface WebSocketTransportState { connected: boolean; reconnectAttempts: number; lastError?: string; } /** * WebSocket-based sync transport. * Maintains persistent connection with automatic reconnection. */ export declare class WebSocketTransport implements SyncTransport { private options; private ws; private messageHandler; private state; private reconnectTimer; private rateLimiter; constructor(opts: WebSocketTransportOptions); /** * Connect to the sync server. */ connect(): Promise<void>; /** * Disconnect from the sync server. */ disconnect(): Promise<void>; /** * Send a message to the sync server. */ send(_peerId: string, message: SyncMessage): Promise<void>; /** * Register a handler for incoming messages. */ onMessage(handler: (message: SyncMessage) => void): void; /** * List connected peers. * Note: WebSocket transport connects to a single server, so this returns * the server as a peer if connected. */ peers(): PeerId[]; /** * Get current transport state. */ getState(): WebSocketTransportState; /** * Schedule reconnection attempt. */ private scheduleReconnect; } //# sourceMappingURL=websocket-transport.d.ts.map