/** * The static depth: read a recipe and report what is wrong with it. * * Mirrors the loading path the runtime itself uses — same parser, same schema, same hint table, same * semantic asserts — but collects findings instead of throwing at the first one. The throwing loader * is untouched and remains the runtime's entry point; this is a second reading of the same rules for * a different audience. * * ## Ordering: fail fast at dependency boundaries, report together within one * * A config that will not parse cannot be schema-checked, and one that fails the schema cannot be * semantically checked — running those anyway produces findings derived from a shape that does not * exist. So each boundary stops the pass. * * Within a boundary the opposite applies: schema issues are independent of one another, as are the * semantic checks, so all of them are reported at once. An agent fixing one thing per round trip is * an agent making N round trips for information we already had. */ import { type RuntimeConfig } from "../runtime/runtime-schema.js"; import type { Finding } from "./types.js"; export interface RecipeSource { /** Absolute path to read, when the recipe is on disk. */ path?: string; /** Recipe text, when supplied directly. */ content?: string; /** Absolute directory relative scanner paths resolve against, when there is one. */ baseDir?: string; } export interface RecipeValidation { findings: Finding[]; /** Present only when the recipe parsed and satisfied the schema. */ config?: RuntimeConfig; } /** * Read a recipe and report every problem the static depth can see. * * Returns the parsed config alongside the findings when it got that far, so a caller running deeper * depths does not parse a second time. */ export declare function collectRecipeFindings(source: RecipeSource): Promise; //# sourceMappingURL=recipe.d.ts.map