/** * Style Targets — machine-readable quantitative prose targets. * * A project may ship a `style-targets.yml` at its root declaring the numeric * style targets that the deterministic analyzers compare against (sentence * length, modifier density, passive voice %, punctuation cadence, etc.). This * is the structured counterpart to the prose STYLE_GUIDE.md files: the .md * guides hold qualitative voice guidance for the LLM editors, while this file * holds the numbers the deterministic tools can actually measure against. * * Missing file → sensible general-fiction defaults are used. Any field omitted * from the file falls back to its default; a field set to `null` disables that * check entirely. */ /** An inclusive target band. `min`/`max` are each optional. */ export interface Range { min?: number; max?: number; } /** * Quantitative style targets. Every metric is optional; omit (or set null in * YAML) to skip that check. Densities are per 1000 words; per-chapter counts * are evaluated against a single chapter file. */ export interface StyleTargets { /** Mean sentence length, in words. */ meanSentenceWords?: Range | null; /** Adjectives per 1000 words (suffix heuristic). */ adjectivesPer1000?: Range | null; /** Adverbs per 1000 words (-ly heuristic). */ adverbsPer1000?: Range | null; /** Passive-voice sentences as a percentage of all sentences. */ passivePercent?: Range | null; /** Filter words ("saw", "felt", "noticed"…) per 1000 words. */ filterWordsPer1000?: Range | null; /** Showing as a percentage of show+tell indicators (min = floor on showing). */ showingPercent?: Range | null; /** Distinct senses (of 5) that appear in the chapter. */ sensesPerChapter?: Range | null; /** Em dashes per chapter. */ emDashesPerChapter?: Range | null; /** Semicolons per chapter. */ semicolonsPerChapter?: Range | null; /** Ellipses per chapter. */ ellipsesPerChapter?: Range | null; /** Sentence fragments per chapter (heuristic). */ fragmentsPerChapter?: Range | null; /** Single-sentence paragraphs per chapter. */ singleSentenceParagraphsPerChapter?: Range | null; /** Expected narrative tense (informational; consumed by the copy editor). */ tense?: 'past' | 'present' | null; } /** General-fiction defaults — deliberately loose so they don't nag untuned projects. */ export declare const DEFAULT_STYLE_TARGETS: StyleTargets; export declare const STYLE_TARGETS_FILENAME = "style-targets.yml"; export interface LoadedStyleTargets { targets: StyleTargets; /** Whether the targets came from a project file or the built-in defaults. */ source: 'file' | 'defaults'; } /** * Load `style-targets.yml` from a project directory, merged over the defaults. * Never throws — a missing or malformed file falls back to defaults. */ export declare function loadStyleTargets(projectPath: string): LoadedStyleTargets; //# sourceMappingURL=style-targets.d.ts.map