export interface TranscriptTurn { userMessageTs: string; userMessageText: string; responseMessageTimestamps: string[]; status: 'processing' | 'completed' | 'superseded'; } export interface TranscriptData { sessionId: string; channel: string; turns: TranscriptTurn[]; } /** * Per-conduit serial work queue port. The concrete impl (app.ts) wraps the shared * @orch/conduit-queue singletons so TUI message work serializes with the rest of * the pipeline on the same conduit key. */ export interface ConduitQueuePort { enqueue(conduitId: string, fn: () => Promise): boolean; remove(conduitId: string): void; }