/** * Screen-reader-friendly output transformations. * * When accessibility.screenReader is enabled, all terminal output passes * through `applyScreenReader()` first. This: * - strips ANSI escape codes (NVDA/JAWS/VoiceOver read them literally) * - replaces decorative emoji + unicode glyphs with their word meaning * ("✓" → "done", "→" → "to", "•" → "bullet", etc.) * - normalizes whitespace so the reader doesn't pause mid-sentence on * box-drawing characters * * Also exports utilities for blind-friendly UX: * - `summarize()` — heuristic short-summary of a long response, so the * reader can ask "give me the gist" instead of listening to 800 words * - `isLikelyDestructive(toolName, args)` — used by the destructive-action * verbal-confirm path in query.ts * - `countWords()` — quick word count for the long-response threshold */ import type { CrowcoderConfig } from './types.js'; export declare function stripAnsi(s: string): string; export declare function stripAllAnsi(s: string): string; /** * Replace decorative symbols + emoji with spoken-language equivalents. */ export declare function symbolsToWords(s: string): string; /** * Full screen-reader transform: ANSI off, symbols → words, then a final * pass that drops any remaining lone control character. */ export declare function applyScreenReader(s: string): string; /** * Conditional transform: only runs when screenReader is enabled, otherwise * returns the input unchanged. Use this as the standard sink for any * terminal output (console.log replacements, status lines, etc.). */ export declare function screenReaderFilter(s: string, config: CrowcoderConfig): string; export declare function countWords(s: string): number; /** * Cheap, no-LLM summary: take the first sentence of each paragraph (up to * 3 paragraphs) and return as a single paragraph. Good enough to answer * "give me the gist" for a blind user without burning another API call. * * If the response is shorter than the threshold, returns it unchanged. */ export declare function summarize(text: string, thresholdWords?: number, maxSentences?: number): string; export declare function isLikelyDestructive(toolName: string, args: unknown): boolean; /** * Build a one-sentence "I am about to X" announcement for the destructive * confirmation prompt. Kept terse — TTS time is user time. */ export declare function describeDestructive(toolName: string, args: unknown): string;