/** * Narrative document optimizer — content-level improvements for narrative docs. * * Handles deterministic transforms that don't require LLM: * - Code block language tag detection * - Opening callout injection (from first content paragraph) * - Blockquote → callout conversion for key phrases * - Bold signpost phrases for scannability * * LLM-assisted transforms (red/green emphasis): * - Extract candidate sentences → save to JSON * - User saves LLM results → apply from JSON * * Ported from skills/lark-hirono/references/optimization-guide.md rules. */ export interface NarrativeAnalysis { codeBlocksWithoutLang: number; paragraphs: string[]; headings: string[]; hasOpeningCallout: boolean; blockquoteCount: number; tldrCount: number; signpostPhrasesFound: number; } export interface EmphasisCandidate { paragraphIndex: number; text: string; type: "red" | "green" | "bold-signpost"; reason: string; } /** Detect and tag code blocks with language. */ export declare function tagCodeBlocks(md: string): { text: string; tagged: number; }; /** Check if doc has an opening callout (XML or bracket DSL [!callout]). */ export declare function hasOpeningCallout(md: string): boolean; /** Strip LLM chatbot tail from end of fetched docs. */ export declare function stripChatbotTail(md: string): { text: string; stripped: boolean; }; /** Convert leading blockquotes to callout format. */ export declare function convertBlockquotesToCallouts(md: string): { text: string; converted: number; }; /** Bold signpost phrases for scannability. */ export declare function boldSignpostPhrases(md: string): { text: string; bolded: number; }; /** Add section separators before H2 headings. */ export declare function addSectionSeparators(md: string): string; /** Inject opening callout if missing. */ export declare function injectOpeningCallout(md: string, icon?: string, description?: string): { text: string; injected: boolean; }; /** Analyze a narrative document for optimization opportunities. */ export declare function analyzeNarrativeDoc(md: string): NarrativeAnalysis; /** Extract emphasis candidates for LLM keyword selection. */ export declare function extractEmphasisCandidates(md: string): EmphasisCandidate[][]; /** Save emphasis candidate batches to JSON. */ export declare function saveEmphasisBatches(batches: EmphasisCandidate[][], inputPath: string): string[]; /** Apply emphasis from LLM results. */ export declare function applyEmphasis(md: string, selections: { index: number; emphasis: string; }[]): string; export interface NarrativeOptimizeOptions { calloutIcon?: string; calloutDescription?: string; convertBlockquotes?: boolean; boldSignposts?: boolean; sectionSeparators?: boolean; tagCode?: boolean; } export interface NarrativeOptimizeResult { text: string; stats: { calloutInjected: boolean; blockquotesConverted: number; signpostsBolded: number; separatorsAdded: number; codeBlocksTagged: number; }; } /** * Apply all deterministic narrative optimizations. */ export declare function optimizeNarrative(md: string, opts?: NarrativeOptimizeOptions): NarrativeOptimizeResult; //# sourceMappingURL=narrative.d.ts.map