export declare const rawCaptureEnabled: () => boolean; /** * Outcome of a per-turn digest: * - "digest": relevant items distilled — inject `text`. * - "nothing": triage ran fine and judged the block irrelevant — inject nothing. * - "failed": triage could not run (no key, timeout, HTTP error, empty * completion). The caller should tell the smart model its view of * device activity is INCOMPLETE — silence here reads as "nothing * happened" and makes the koi look deaf. */ export type DigestOutcome = { kind: "digest"; text: string; } | { kind: "nothing"; } | { kind: "failed"; reason: string; }; /** * Put the device-activity block and the user's message together so the model * cannot confuse one for the other. * * They used to be joined by a bare `---`, with the capture FIRST — and the * capture deliberately carries ambient items that have nothing to do with the * request ("at most a 1-2 line ambient summary … even if unrelated"). Nothing * said which half was the request, so the koi sometimes answered the ambient * half instead: a nearby voice caught by the mic saying "Koi, are you * listening?" got the reply, while the task the user had actually typed went * unanswered. That is the "responds with stuff unrelated to what I asked" * report. * * So the background is labelled as background, the request is labelled as the * request, and the request goes LAST — closest to the model's answer. */ export declare function frameCaptureContext(captureBlock: string, userMessage: string): string; /** * Distill the raw capture block down to what is relevant to `userMessage`. * Retries once on failure (never on a clean "NOTHING"). Never throws. */ export declare function digestCaptureForTurn(rawBlock: string, userMessage: string): Promise;