/** * Verification-step inlining and the generated-skill smoke check. * * Two responsibilities, both consequences of decision D-5: * * - `extractVerifySteps` reads the delimited region of * `packages/content/guidance/content-operations.md` **from the installed content * package**, so generation never depends on a project-level `.aidlc/guidance/` * directory (AC-36). That matters because the guidance-layer machinery does not * work: `{{guidance:}}` placeholders have no production resolver and bundled * layers are never installed into a project. * - `checkOperationalSkill` is the AC-38 smoke check. It is a plain function, not * a test-framework test, because a generated skill lives in the user's repo, * which may have no JS toolchain at all. * * Requirements: AC-35, AC-36, AC-37, AC-38 * * @module */ /** Filename of the verification-steps source inside the content package. */ export declare const VERIFY_SOURCE_FILE = "content-operations.md"; /** Opening delimiter of the machine-managed region. */ export declare const VERIFY_BEGIN = ""; /** Closing delimiter of the machine-managed region. */ export declare const VERIFY_END = ""; /** Thrown when the verification source is missing or malformed. */ export declare class VerifySourceError extends Error { constructor(reason: string); } /** * Absolute path to the verification-steps source. * * @param contentRoot - Content package root (see `compile/content-root.ts`). */ export declare function verifySourcePath(contentRoot: string): string; /** * Read the verification steps from the content package. * * Returns the bytes strictly between the delimiters, trimmed of surrounding blank * lines. Byte-exactness matters: AC-37 asserts that the text in a generated skill * is identical to this region. * * @param contentRoot - Content package root. * @returns The verification-steps text. * @throws {VerifySourceError} When the file is absent, the delimiters are missing * or inverted, the region is empty, or it contains a `{{` sequence. */ export declare function extractVerifySteps(contentRoot: string): string; /** * Wrap verification steps in the delimiters that mark them machine-managed. * * Re-emit replaces only the bytes between these markers, which is what lets a * content-package update reach existing skills while leaving user-authored * content untouched (AC-50 as scoped by the design). * * @param steps - Verification-steps text. * @returns The delimited block. */ export declare function wrapVerifySection(steps: string): string; /** * Extract the managed region from a generated skill body. * * @param body - Generated skill body. * @returns The verification text, or null when no managed region is present. */ export declare function readVerifySection(body: string): string | null; /** * Replace the managed region of a body, leaving every other byte alone. * * @param body - Existing skill body. * @param steps - Replacement verification steps. * @returns The updated body, or null when the body has no managed region. */ export declare function replaceVerifySection(body: string, steps: string): string | null; /** Result of the generated-skill smoke check. */ export interface SkillCheckResult { ok: boolean; /** Human-readable failures; empty when `ok`. */ failures: string[]; } /** * Smoke-check a generated operational skill. * * Assertions, in order: * 1. The file parses against the operational-skill schema. * 2. A verification section is present, and the managed region contains no `{{`. * 3. Every path declared in `meta.paths` exists. * * Path checking reads **only** `meta.paths` — never prose, never fenced code * blocks. That is how AC-38's false-failure exclusion is satisfied structurally * rather than by heuristic. Likewise the `{{` check is scoped to the managed * region, so a skill that legitimately documents Handlebars or `${{ }}` syntax in * its own instructions does not fail its own smoke check. * * @param raw - Full content of the generated skill file. * @param projectRoot - Root the declared paths are relative to. * @returns Pass/fail plus every failure found (not just the first). */ export declare function checkOperationalSkill(raw: string, projectRoot: string): SkillCheckResult; //# sourceMappingURL=verify.d.ts.map