import { type CaptureEvent } from "../capture-store.js"; import { type ResolvedSpeakerIdentity } from "./addressing.js"; export declare const INPUT_LIVE_FILE: string; export declare const AUDIO_LIVE_FILE: string; /** Trigger events accumulated between eval cycles; drained by the pipeline. */ export declare const pendingTriggers: CaptureEvent[]; /** * ALWAYS-ON mic ring buffer — every non-echo mic line lands here whether or not * the addressing gate lets it act. Gating decides WHEN to run; this buffer is * what was SAID. When a wake/name finally opens a turn, extractChatMessage and * the gate see the recent running transcript (including the ask spoken a few * seconds before "koi"), not only the name utterance. */ export declare const RECENT_MIC_BUFFER_MS = 90000; export declare const RECENT_MIC_BUFFER_MAX = 40; /** Snapshot of the always-on mic ring (copy; oldest → newest). */ export declare function getRecentMicBuffer(now?: number): CaptureEvent[]; /** Test helper — wipe the ring between cases. */ export declare function clearRecentMicBuffer(): void; /** Test helper — push a mic line into the always-on ring. */ export declare function pushRecentMicForTest(evt: CaptureEvent): void; /** How stale a RECOVERED (backfilled) mic line may be and still trigger. */ export declare const RECOVERED_TRIGGER_MAX_AGE_MS: number; export declare function tailLines(filePath: string, maxLines: number): string[]; export declare function isTriggerEvent(event: CaptureEvent): boolean; export declare function isDirectKoiInvocation(triggers: CaptureEvent[], resolveIdentity?: (audioPath: string | undefined) => ResolvedSpeakerIdentity | null): boolean; export declare function formatTriggersForEval(triggers: CaptureEvent[]): string; /** How far before the wake word to pull the requester's own prior lines. */ export declare const PRE_WAKE_LOOKBACK_MS = 45000; /** Cap on consecutive pre-wake requester lines (avoids whole monologues). */ export declare const PRE_WAKE_MAX_PRIOR_LINES = 8; export declare function extractChatMessage(triggers: CaptureEvent[], directKoi: boolean, gateSummary: string, triggerText: string): string; /** Start tailing from the current end of each live file — no backlog replay. */ export declare function initTailOffsets(): void; /** One poll tick: pull new triggers from the live files + capture store. */ export declare function pollTriggerSources(): void;