import type { ExtensionAPI } from "@earendil-works/pi-coding-agent"; import { Text } from "@earendil-works/pi-tui"; import type { ClassifiedError } from "./correct.ts"; const ENTRY_TYPE = "english-note"; export interface EnglishNoteData { errors: ClassifiedError[]; } /** Renders a dim, out-of-band note. registerEntryRenderer entries never enter LLM context. */ export function registerEnglishNoteRenderer(pi: ExtensionAPI): void { pi.registerEntryRenderer(ENTRY_TYPE, (entry, _options, theme) => { const errors = entry.data?.errors ?? []; if (errors.length === 0) return undefined; const lines = [ theme.fg("dim", "[english]"), ...errors.map((e) => theme.fg("dim", ` ${e.original} → ${e.corrected} (${e.category})`)), ]; return new Text(lines.join("\n"), 0, 0); }); } export function appendEnglishNote(pi: ExtensionAPI, errors: ClassifiedError[]): void { pi.appendEntry(ENTRY_TYPE, { errors }); }