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
TypeScript
/**
* 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