UNPKG

trellis

Version:

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

58 lines 2.13 kB
/** * Iroh Sync Transport * * Implements SyncTransport over Iroh QUIC bidirectional streams. * Each send opens its own connection (simple, reliable). * Peers are auto-registered when accepting incoming connections, * enabling true bidirectional communication. */ import { Endpoint, EndpointAddr } from '@number0/iroh'; import type { SyncTransport, SyncMessage, SyncMessageHandler, PeerId } from './types.js'; export interface IrohSyncTransportOptions { /** Pre-existing endpoint (for testing). */ endpoint?: Endpoint; /** Secret key bytes (for deterministic identity). */ secretKey?: number[]; /** Disable relay (offline/test mode). */ disableRelay?: boolean; } export declare class IrohSyncTransport implements SyncTransport { private endpoint; private handler; private peerAddrs; private peerNames; private acceptLoopRunning; private pendingMessages; private constructor(); /** * Create a new Iroh sync transport. * Binds an endpoint with the trellis-sync ALPN and starts accepting. */ static create(opts?: IrohSyncTransportOptions): Promise<IrohSyncTransport>; /** * Get a ticket string to share with peers. */ ticket(): string; /** * Connect to a remote peer by ticket string. */ connectToPeer(ticketStr: string, peerId: string, peerName?: string): Promise<void>; /** * Register a peer by explicit EndpointAddr (for programmatic use). */ addPeer(peerId: string, addr: EndpointAddr, name?: string): void; /** The local endpoint's ID (hex string). */ localId(): string; send(peerId: string, message: SyncMessage): Promise<void>; onMessage(handler: SyncMessageHandler): void; peers(): PeerId[]; /** Connect (no-op — Iroh endpoint is always listening after create). */ connect(): Promise<void>; /** Disconnect (no-op — the endpoint stays open until close()). */ disconnect(): Promise<void>; /** Tear down the endpoint. */ close(): Promise<void>; private startAcceptLoop; private handleIncoming; } //# sourceMappingURL=iroh-transport.d.ts.map