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