import type { QuestionAnswer } from "./types.js"; /** * Continuation message used in the LLM-facing envelope. Two-sentence form — * the model needs the "Stop…wait…" directive to know what to do next after the * user picks chat instead of answering. */ export declare const CHAT_CONTINUATION_MESSAGE = "User wants to chat about this. Stop the current task flow and wait for the user's next message."; /** * One-sentence summary form shown in the on-screen Submit-tab review pane. The dialog * already shows the question; the imperative continuation directive belongs in the * envelope, not in the user-facing summary box. */ export declare const CHAT_SUMMARY_MESSAGE = "User wants to chat about this"; /** * Placeholder for empty / null answer text. Used uniformly across both variants — the * earlier `(no answer)` fallback in the dialog summary was accidental drift; tests pin * `(no input)` only. */ export declare const NO_INPUT_PLACEHOLDER = "(no input)"; export type FormatAnswerVariant = "summary" | "envelope"; /** * Return the user-provided chat message, or undefined for the legacy signal-only * chat answer. Whitespace-only text and the reserved sentinel label both keep * the legacy stop/wait semantics. */ export declare function chatAnswerIntent(a: QuestionAnswer): string | undefined; /** * Format a `QuestionAnswer` to its scalar string form. Variant controls only the * `kind: "chat"` branch — the envelope's stop/wait directive is needed by the LLM, * the dialog summary's one-sentence reminder is not. All other branches return identical * strings; the `kind: "custom"` empty-string handling and the option fallback both unify * on `NO_INPUT_PLACEHOLDER`. Switch is exhaustive — non-`void` return enforces every * variant is handled. */ export declare function formatAnswerScalar(a: QuestionAnswer, variant: FormatAnswerVariant): string; //# sourceMappingURL=format-answer.d.ts.map