import type { CodexBridgeEvent } from './codex-transcript.js'; export interface HermesSessionFilterDrop { uuid: string; kind: CodexBridgeEvent['kind']; sourceSessionId?: string; expectedSourceSessionId?: string; reason: 'unbound' | 'foreign_source' | 'missing_source'; } export interface HermesSessionFilterResult { events: CodexBridgeEvent[]; boundSourceSessionId?: string; /** Every native source this call newly bound, in order. A single drain can * bind more than one source when the worker starts unbound and Hermes * `/clear`-rotates mid-batch; the worker must announce each to the daemon so * a completed turn from an earlier source is not dropped as unauthorized. */ newlyBoundSourceSessionIds: string[]; drops: HermesSessionFilterDrop[]; } /** Keep Hermes' global state.db scoped to the native session that belongs to * this botmux worker. The binding row is the Hermes user row containing the * botmux-injected `...` marker. Before that row appears we must * not queue assistant finals from the shared DB, otherwise a sibling Hermes * process can close this worker's pending Lark turn. */ export declare function filterHermesEventsForBotmuxSession(events: readonly CodexBridgeEvent[], opts: { botmuxSessionId: string; boundSourceSessionId?: string; }): HermesSessionFilterResult; //# sourceMappingURL=hermes-session-filter.d.ts.map