/** * Line helpers shared by every shaping step: the normal form lines are compared in, the markers earlier shaping * writes, and the words lexical scores read. */ /** A line of earlier shaping (fold, gap, dump marker, note): cheap and says what is where, so never hidden or collapsed. */ export declare const MARKER: RegExp; /** Lines shorter than this (normalised) are too generic to count as already seen, or as hidden by a cut. */ export declare const WITNESS_CHARS = 12; /** Hidden lines shorter than this (normalised) are too generic to tell that the agent asks again. */ export declare const AGAIN_CHARS = 24; /** A line without its `N:` / `cat -n` / `path:N:` prefix and surrounding blanks: the key lines are compared by. */ export declare function norm(line: string): string; /** Key of normalised line `next` right after `prev` in one text: the order seen lines collapse in ({@link norm}). */ export declare function pairKey(prev: string, next: string): string; /** * Lowercase words of `text` (`[a-z_][a-z0-9_]{3,}`) without the stop words, and its compound tokens (`gen:rpc`, * `index.ts`, `shard-3`) of at least 4 characters: a name made of short parts is still a name. */ export declare function words(text: string): Set; /** Identifiers of `text` (`[A-Za-z_$][\w$]*`), for "named in the conversation". */ export declare function identifiers(text: string): string[]; /** Leading whitespace of the first non-blank line of `lines` ("" when all are blank). */ export declare function indentOfFirst(lines: readonly string[]): string;