import { VoiceTranscriptTurn } from './turnVisibility'; /** * The spoken conversation as a Markdown document. * * ★ Sessions become headings rather than one flat list. A transcript is read * later, when "which day was that?" is the actual question — running three * separate exchanges together is precisely what the session id was added to * stop, and a saved file is the copy most likely to outlive anyone's memory of * the order. * * ★ Markdown, not JSON. The audience is a person forwarding a spoken exchange to * an agronomist or an insurer; the whole-conversation JSON export already exists * for anything machine-shaped. */ export declare function buildVoiceTranscriptMarkdown(turns: readonly VoiceTranscriptTurn[], labels: { title: string; savedAt: string; session: string; earlier: string; you: string; assistant: string; }, now: Date): string; /** * A filename that sorts by date and never collides across a single day. * * ★ `product` is REQUIRED, with no default. It was hardcoded to `healthybowl`, * so every product's saved transcripts arrived in the user's downloads folder * under another product's name. A default would have kept that failure for * whoever forgot to pass it — and the whole point is that shared code cannot * know this. The value is the same `product` the transport sends, so for * HealthyBowl the output is byte-identical to before. */ export declare function voiceTranscriptFilename(product: string, now: Date): string; /** * The note that "Continue in chat" leaves in the typed thread. * * ★ It carries the user's QUESTIONS and none of the assistant's answers, capped * at three. The spec asks for "a concise summary rather than dumping every voice * turn", and the answers are the long half — they are one click away in the * transcript, and pasting them into the thread would be the exact leak the * surfaces were split to prevent. * * ★ Built from the user's own words rather than by asking the model. A generated * summary costs a round trip and can be wrong about what someone asked; their * own sentences, clipped, cannot be. This also makes the action instant and * free, which matters for a control people will press to get out of a voice * session. * * ★ It tells the MODEL nothing, and does not need to. The client sends no * history — the backend session already holds every spoken turn — so this note * exists purely so the human can see, in the thread, what was discussed. */ export declare function buildContinuedFromVoiceNote(turns: readonly VoiceTranscriptTurn[], labels: { intro: string; nothing: string; more: (count: number) => string; }): string; //# sourceMappingURL=voiceTranscript.d.ts.map