trellis
Version:
Agentic State Engine — event-sourced causal graph with branching, decision traces, and realtime sync for AI-native applications
53 lines • 1.76 kB
TypeScript
import type { VcsOp } from '../vcs/types.js';
import type { PeerId, SyncMessage } from './types.js';
export interface SyncRoomAppendRejection {
op: VcsOp;
reason: 'invalid-kind' | 'hash-mismatch' | 'missing-dependency';
message: string;
}
export interface SyncRoomAppendResult {
applied: number;
skipped: number;
rejected: SyncRoomAppendRejection[];
acceptedOps: VcsOp[];
}
export interface SyncRoomDelivery {
peerId: string;
message: SyncMessage;
}
/** Default max ops returned for snapshot / tail catch-up. */
export declare const DEFAULT_SNAPSHOT_MAX_OPS = 500;
export interface SyncRoomSnapshot {
headHash?: string;
opCount: number;
truncated: boolean;
ops: VcsOp[];
}
/**
* Canonical room log and catch-up protocol shared by room transports.
*/
export declare class SyncRoomCore {
private roomPeer;
private peers;
private ops;
constructor(roomId?: string, roomName?: string);
connectPeer(peerId: string, peerName?: string): void;
disconnectPeer(peerId: string): void;
getRoomPeer(): PeerId;
peersFor(peerId: string): PeerId[];
getOps(): VcsOp[];
getOpCount(): number;
/** Build a tail snapshot for late-joiner catch-up. */
buildSnapshot(maxOps?: number): SyncRoomSnapshot;
/** Deliver a snapshot message to a connected peer. */
snapshotDeliveries(peerId: string, maxOps?: number): SyncRoomDelivery[];
receive(fromPeerId: string, message: SyncMessage): Promise<SyncRoomDelivery[]>;
private handleHave;
private handleWant;
private handleOps;
appendOps(incomingOps: VcsOp[]): Promise<SyncRoomAppendResult>;
private roomOpsDeliveries;
private opsDelivery;
private broadcastOps;
}
//# sourceMappingURL=room-core.d.ts.map