/**
 * repo-schemas.ts — Canonical Zod schemas for task and config validation.
 *
 * Task schemas validate .ailf/tasks/*.yaml and .task.ts files against the
 * canonical GeneralizedTaskDefinition shape. Field names match the internal
 * domain model: `area` (not featureArea), `assertions` (not assert),
 * `context.docs` (not canonicalDocs), `prompt.text` (not vars.task).
 *
 * Previously this file re-exported from @sanity/ailf-tasks. That package
 * has been eliminated — all schema logic now lives here.
 *
 * Config schemas (RepoConfigSchema, trigger config) are eval-pipeline-
 * specific and remain here unchanged.
 *
 * @see packages/core/src/types/generalized-task.ts — canonical TypeScript types
 * @see docs/archive/exec-plans/tasks-as-content/phase-4-repo-based-tasks.md
 */
import { z } from "zod";
import type { AilfEvalWorkflow, RepoConfig } from "../../_vendor/ailf-core/index.d.ts";
/**
 * The set of assertion types allowed in task files.
 *
 * Combines a curated subset of Promptfoo assertion types (stable, well-
 * documented, useful for external authors) with the agent-harness-specific
 * types mapped by `mode-handlers/agent-harness/assertions.ts`.
 */
export declare const CURATED_ASSERTION_TYPES: readonly ["llm-rubric", "contains", "contains-any", "contains-all", "not-contains", "icontains", "icontains-any", "regex", "javascript", "similar", "cost", "latency", "file-exists", "file-contains", "command-succeeds", "diff-matches"];
export type CuratedAssertionType = (typeof CURATED_ASSERTION_TYPES)[number];
/**
 * Valid rubric template names — must match template keys in
 * `packages/eval/config/rubrics.ts`.
 */
export declare const RUBRIC_TEMPLATE_NAMES: readonly ["task-completion", "code-correctness", "doc-coverage", "mcp-input-validation", "mcp-output-correctness", "mcp-error-handling", "mcp-security", "factual-correctness", "completeness", "currency", "process-quality", "agent-output", "agent-tool-usage"];
export type RubricTemplateName = (typeof RUBRIC_TEMPLATE_NAMES)[number];
/**
 * A single criterion within an llm-rubric assertion. Stable id-text pair.
 */
export declare const CriterionRefSchema: z.ZodObject<{
    id: z.ZodString;
    text: z.ZodString;
}, z.core.$strip>;
/**
 * A templated LLM-rubric assertion — uses one of the predefined rubric
 * templates with author-supplied criteria.
 */
export declare const TemplatedAssertionSchema: z.ZodObject<{
    type: z.ZodLiteral<"llm-rubric">;
    template: z.ZodEnum<{
        "task-completion": "task-completion";
        "code-correctness": "code-correctness";
        "doc-coverage": "doc-coverage";
        "mcp-input-validation": "mcp-input-validation";
        "mcp-output-correctness": "mcp-output-correctness";
        "mcp-error-handling": "mcp-error-handling";
        "mcp-security": "mcp-security";
        "factual-correctness": "factual-correctness";
        completeness: "completeness";
        currency: "currency";
        "process-quality": "process-quality";
        "agent-output": "agent-output";
        "agent-tool-usage": "agent-tool-usage";
    }>;
    criteria: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        text: z.ZodString;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Zod schema for a single task definition — a mode-discriminated union
 * mirroring `GeneralizedTaskDefinition`.
 *
 * Unknown keys are rejected on each variant. Invalid modes are rejected
 * by the discriminator itself.
 */
export declare const CanonicalTaskSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"literacy">;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    referenceSolution: z.ZodOptional<z.ZodString>;
    docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"mcp-server">;
    serverConfig: z.ZodOptional<z.ZodObject<{
        transport: z.ZodEnum<{
            stdio: "stdio";
            sse: "sse";
            "streamable-http": "streamable-http";
        }>;
        command: z.ZodOptional<z.ZodString>;
        url: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        startupTimeoutMs: z.ZodOptional<z.ZodNumber>;
        auth: z.ZodOptional<z.ZodObject<{
            type: z.ZodEnum<{
                basic: "basic";
                bearer: "bearer";
                api_key: "api_key";
                oauth: "oauth";
            }>;
            token: z.ZodOptional<z.ZodString>;
            username: z.ZodOptional<z.ZodString>;
            password: z.ZodOptional<z.ZodString>;
            value: z.ZodOptional<z.ZodString>;
            keyName: z.ZodOptional<z.ZodString>;
            placement: z.ZodOptional<z.ZodEnum<{
                query: "query";
                header: "header";
            }>>;
            grantType: z.ZodOptional<z.ZodEnum<{
                password: "password";
                client_credentials: "client_credentials";
            }>>;
            tokenUrl: z.ZodOptional<z.ZodString>;
            clientId: z.ZodOptional<z.ZodString>;
            clientSecret: z.ZodOptional<z.ZodString>;
            scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
        tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    multiTurn: z.ZodOptional<z.ZodObject<{
        turns: z.ZodArray<z.ZodObject<{
            role: z.ZodEnum<{
                user: "user";
                assistant: "assistant";
            }>;
            content: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    models: z.ZodOptional<z.ZodArray<z.ZodString>>;
    maxToolRounds: z.ZodOptional<z.ZodNumber>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"agent-harness">;
    sandbox: z.ZodOptional<z.ZodObject<{
        type: z.ZodEnum<{
            none: "none";
            docker: "docker";
            "git-worktree": "git-worktree";
            nsjail: "nsjail";
            tempdir: "tempdir";
        }>;
        image: z.ZodOptional<z.ZodString>;
        limits: z.ZodOptional<z.ZodObject<{
            cpus: z.ZodOptional<z.ZodNumber>;
            memoryBytes: z.ZodOptional<z.ZodNumber>;
            diskBytes: z.ZodOptional<z.ZodNumber>;
            networkAccess: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
    fixtures: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        from: z.ZodString;
        to: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>]>>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
            from: z.ZodString;
            to: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>]>>>;
    }, z.core.$strip>>;
    multiTurn: z.ZodOptional<z.ZodObject<{
        turns: z.ZodArray<z.ZodObject<{
            role: z.ZodEnum<{
                user: "user";
                assistant: "assistant";
            }>;
            content: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"knowledge-probe">;
    probeStrategy: z.ZodOptional<z.ZodEnum<{
        "breadth-first": "breadth-first";
        "depth-first": "depth-first";
        "random-sample": "random-sample";
        "coverage-guided": "coverage-guided";
    }>>;
    knowledgeBase: z.ZodOptional<z.ZodObject<{
        type: z.ZodEnum<{
            "sanity-dataset": "sanity-dataset";
            "embeddings-index": "embeddings-index";
            "file-corpus": "file-corpus";
        }>;
        name: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"custom">;
    handler: z.ZodString;
    schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
}, z.core.$strict>], "mode">;
export type CanonicalTask = z.infer<typeof CanonicalTaskSchema>;
export declare const ContentLakeAuthorableTaskSchema: z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"literacy">;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    referenceSolution: z.ZodOptional<z.ZodString>;
    docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strict>;
export type ContentLakeAuthorableTaskParsed = z.infer<typeof ContentLakeAuthorableTaskSchema>;
/**
 * Schema for an array of canonical tasks — what a single .ailf/tasks/*.yaml
 * file contains. Each file must define at least one task.
 */
export declare const CanonicalTaskFileSchema: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"literacy">;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    referenceSolution: z.ZodOptional<z.ZodString>;
    docCoverage: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    baseline: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        rubric: z.ZodOptional<z.ZodEnum<{
            full: "full";
            abbreviated: "abbreviated";
            none: "none";
        }>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"mcp-server">;
    serverConfig: z.ZodOptional<z.ZodObject<{
        transport: z.ZodEnum<{
            stdio: "stdio";
            sse: "sse";
            "streamable-http": "streamable-http";
        }>;
        command: z.ZodOptional<z.ZodString>;
        url: z.ZodOptional<z.ZodString>;
        env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        startupTimeoutMs: z.ZodOptional<z.ZodNumber>;
        auth: z.ZodOptional<z.ZodObject<{
            type: z.ZodEnum<{
                basic: "basic";
                bearer: "bearer";
                api_key: "api_key";
                oauth: "oauth";
            }>;
            token: z.ZodOptional<z.ZodString>;
            username: z.ZodOptional<z.ZodString>;
            password: z.ZodOptional<z.ZodString>;
            value: z.ZodOptional<z.ZodString>;
            keyName: z.ZodOptional<z.ZodString>;
            placement: z.ZodOptional<z.ZodEnum<{
                query: "query";
                header: "header";
            }>>;
            grantType: z.ZodOptional<z.ZodEnum<{
                password: "password";
                client_credentials: "client_credentials";
            }>>;
            tokenUrl: z.ZodOptional<z.ZodString>;
            clientId: z.ZodOptional<z.ZodString>;
            clientSecret: z.ZodOptional<z.ZodString>;
            scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
        tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    multiTurn: z.ZodOptional<z.ZodObject<{
        turns: z.ZodArray<z.ZodObject<{
            role: z.ZodEnum<{
                user: "user";
                assistant: "assistant";
            }>;
            content: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    models: z.ZodOptional<z.ZodArray<z.ZodString>>;
    maxToolRounds: z.ZodOptional<z.ZodNumber>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"agent-harness">;
    sandbox: z.ZodOptional<z.ZodObject<{
        type: z.ZodEnum<{
            none: "none";
            docker: "docker";
            "git-worktree": "git-worktree";
            nsjail: "nsjail";
            tempdir: "tempdir";
        }>;
        image: z.ZodOptional<z.ZodString>;
        limits: z.ZodOptional<z.ZodObject<{
            cpus: z.ZodOptional<z.ZodNumber>;
            memoryBytes: z.ZodOptional<z.ZodNumber>;
            diskBytes: z.ZodOptional<z.ZodNumber>;
            networkAccess: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    tools: z.ZodOptional<z.ZodArray<z.ZodString>>;
    fixtures: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        from: z.ZodString;
        to: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>]>>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
            from: z.ZodString;
            to: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>]>>>;
    }, z.core.$strip>>;
    multiTurn: z.ZodOptional<z.ZodObject<{
        turns: z.ZodArray<z.ZodObject<{
            role: z.ZodEnum<{
                user: "user";
                assistant: "assistant";
            }>;
            content: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"knowledge-probe">;
    probeStrategy: z.ZodOptional<z.ZodEnum<{
        "breadth-first": "breadth-first";
        "depth-first": "depth-first";
        "random-sample": "random-sample";
        "coverage-guided": "coverage-guided";
    }>>;
    knowledgeBase: z.ZodOptional<z.ZodObject<{
        type: z.ZodEnum<{
            "sanity-dataset": "sanity-dataset";
            "embeddings-index": "embeddings-index";
            "file-corpus": "file-corpus";
        }>;
        name: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
}, z.core.$strict>, z.ZodObject<{
    id: z.ZodString;
    title: z.ZodString;
    description: z.ZodOptional<z.ZodString>;
    area: z.ZodOptional<z.ZodString>;
    difficulty: z.ZodOptional<z.ZodEnum<{
        basic: "basic";
        intermediate: "intermediate";
        advanced: "advanced";
    }>>;
    tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
    status: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        active: "active";
        draft: "draft";
        paused: "paused";
        archived: "archived";
    }>>>;
    assertions: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        type: z.ZodLiteral<"llm-rubric">;
        template: z.ZodEnum<{
            "task-completion": "task-completion";
            "code-correctness": "code-correctness";
            "doc-coverage": "doc-coverage";
            "mcp-input-validation": "mcp-input-validation";
            "mcp-output-correctness": "mcp-output-correctness";
            "mcp-error-handling": "mcp-error-handling";
            "mcp-security": "mcp-security";
            "factual-correctness": "factual-correctness";
            completeness: "completeness";
            currency: "currency";
            "process-quality": "process-quality";
            "agent-output": "agent-output";
            "agent-tool-usage": "agent-tool-usage";
        }>;
        criteria: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            text: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodEnum<{
            cost: "cost";
            "llm-rubric": "llm-rubric";
            contains: "contains";
            "contains-any": "contains-any";
            "contains-all": "contains-all";
            "not-contains": "not-contains";
            icontains: "icontains";
            "icontains-any": "icontains-any";
            regex: "regex";
            javascript: "javascript";
            similar: "similar";
            latency: "latency";
            "file-exists": "file-exists";
            "file-contains": "file-contains";
            "command-succeeds": "command-succeeds";
            "diff-matches": "diff-matches";
        }>;
        value: z.ZodOptional<z.ZodUnknown>;
        threshold: z.ZodOptional<z.ZodNumber>;
    }, z.core.$loose>]>>>;
    rubric: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
        ref: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        inline: z.ZodString;
        dimensions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            weight: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>]>>;
    providers: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>>;
    options: z.ZodOptional<z.ZodObject<{
        timeout: z.ZodOptional<z.ZodNumber>;
        cache: z.ZodOptional<z.ZodBoolean>;
        transformOutput: z.ZodOptional<z.ZodString>;
        promptfooOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    prompt: z.ZodOptional<z.ZodObject<{
        template: z.ZodOptional<z.ZodString>;
        text: z.ZodOptional<z.ZodString>;
        systemMessage: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, z.core.$strip>>;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    mode: z.ZodLiteral<"custom">;
    handler: z.ZodString;
    schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    context: z.ZodOptional<z.ZodObject<{
        docs: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
            id: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
            slug: z.ZodOptional<z.ZodString>;
            path: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodObject<{
            slug: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            path: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>, z.ZodObject<{
            perspective: z.ZodString;
            reason: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        }, z.core.$strip>]>>>;
        fixtures: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
}, z.core.$strict>], "mode">>;
/** A Zod issue flattened to an absolute path + its leaf message. */
export interface FlatTaskIssue {
    message: string;
    path: PropertyKey[];
}
/**
 * Flatten Zod issues, descending into `invalid_union` errors to surface the
 * closest-matching branch (the one with the fewest issues) instead of the
 * union's generic "Invalid input".
 *
 * The assertion field is a `z.union([TemplatedAssertionSchema, ValueAssertionSchema])`.
 * When a value assertion is malformed, the union fails on both branches and
 * Zod v4 reports an `invalid_union` issue whose real messages live nested in
 * `errors[]`. Without this, a malformed assertion aborts with "Invalid input"
 * at `assertions.0` — hiding the per-type reason and the `values:` typo hint.
 * The union's own path is prefixed onto each branch issue so the reported path
 * is absolute (e.g. `0.assertions.0.value`). See W-reject-malformed-assertions.
 */
export declare function flattenTaskIssues(issues: readonly z.core.$ZodIssue[], basePath?: readonly PropertyKey[]): FlatTaskIssue[];
/**
 * Parse and validate a task file's content against the canonical schema.
 * Returns typed tasks or throws with a user-friendly Zod error message.
 *
 * Accepts pre-parsed YAML data (unknown), not a raw string.
 */
export declare function parseCanonicalTaskFile(raw: unknown, filename: string): CanonicalTask[];
/**
 * Detect legacy field names in raw task data and return helpful messages.
 *
 * Runs BEFORE Zod parsing to catch the most common migration mistake —
 * using old field names from @sanity/ailf-tasks instead of the canonical
 * GeneralizedTaskDefinition shape.
 */
export declare function detectLegacyFieldNames(raw: unknown, filename: string): string[];
interface MigrationResult {
    migrated: unknown;
    warnings: string[];
}
/**
 * Pre-process legacy `prompt.vars.{task,docs,__featureArea}` into the
 * canonical shape. Backwards-compatible: legacy-shape tasks continue to
 * load, but a deprecation warning is emitted per affected task.
 *
 *   Legacy:    prompt: { vars: { task: "...", docs: "file://..." } }
 *   Canonical: prompt: { text: "..." }
 *
 * Applies to every task regardless of mode. Per-task dedup: at most one
 * warning per task per call, listing every reserved key that was present.
 */
export declare function migratePromptShape(raw: unknown, filename: string): MigrationResult;
/**
 * Zod schema for .ailf/config.yaml — controls documentation source,
 * report destination, and trigger behavior for evaluations from an
 * external repository.
 *
 * The blocks shared with `EvalConfigSchema` (--config files) are composed
 * from `@sanity/ailf-core`'s config-blocks module (D0060) — defined once,
 * drift is a compile error. `source` is the shared union of a registered
 * named-source string and the inline-location object (D0060 mitigation
 * #2). Only the repo-only `owner` and `triggers` blocks stay local here.
 */
export declare const RepoConfigSchema: z.ZodObject<{
    source: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
        projectId: z.ZodOptional<z.ZodString>;
        dataset: z.ZodOptional<z.ZodString>;
        baseUrl: z.ZodOptional<z.ZodString>;
        studioOrigin: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>]>>;
    reportStore: z.ZodOptional<z.ZodObject<{
        projectId: z.ZodString;
        dataset: z.ZodString;
    }, z.core.$strip>>;
    publish: z.ZodOptional<z.ZodObject<{
        auto: z.ZodOptional<z.ZodEnum<{
            never: "never";
            always: "always";
            "full-runs": "full-runs";
        }>>;
        tag: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    execution: z.ZodOptional<z.ZodObject<{
        concurrency: z.ZodOptional<z.ZodNumber>;
        graderReplications: z.ZodOptional<z.ZodNumber>;
        borderlineReplications: z.ZodOptional<z.ZodNumber>;
        gapAnalysis: z.ZodOptional<z.ZodBoolean>;
        apiUrl: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    grader: z.ZodOptional<z.ZodObject<{
        context: z.ZodOptional<z.ZodEnum<{
            "rubric-only": "rubric-only";
            "with-docs": "with-docs";
        }>>;
    }, z.core.$strip>>;
    output: z.ZodOptional<z.ZodObject<{
        dir: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    owner: z.ZodOptional<z.ZodObject<{
        team: z.ZodOptional<z.ZodString>;
        individual: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    provenance: z.ZodOptional<z.ZodObject<{
        team: z.ZodOptional<z.ZodEnum<{
            error: "error";
            warn: "warn";
            off: "off";
        }>>;
        individual: z.ZodOptional<z.ZodEnum<{
            error: "error";
            warn: "warn";
            off: "off";
        }>>;
        classification: z.ZodOptional<z.ZodEnum<{
            error: "error";
            warn: "warn";
            off: "off";
        }>>;
        purpose: z.ZodOptional<z.ZodEnum<{
            error: "error";
            warn: "warn";
            off: "off";
        }>>;
        rules: z.ZodOptional<z.ZodArray<z.ZodObject<{
            when: z.ZodObject<{
                classification: z.ZodEnum<{
                    external: "external";
                    official: "official";
                    adhoc: "adhoc";
                    experimental: "experimental";
                    test: "test";
                }>;
            }, z.core.$strip>;
            require: z.ZodObject<{
                team: z.ZodOptional<z.ZodEnum<{
                    present: "present";
                    known: "known";
                }>>;
                individual: z.ZodOptional<z.ZodEnum<{
                    error: "error";
                    warn: "warn";
                    off: "off";
                }>>;
            }, z.core.$strip>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    agentic: z.ZodOptional<z.ZodObject<{
        headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        allowedOrigins: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    artifacts: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodOptional<z.ZodBoolean>;
        dir: z.ZodOptional<z.ZodString>;
        exclude: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strip>>;
    summary: z.ZodOptional<z.ZodObject<{
        onRun: z.ZodOptional<z.ZodEnum<{
            never: "never";
            always: "always";
            auto: "auto";
        }>>;
    }, z.core.$strip>>;
    taskSource: z.ZodOptional<z.ZodObject<{
        type: z.ZodOptional<z.ZodEnum<{
            "content-lake": "content-lake";
            repo: "repo";
        }>>;
        repoTasksPath: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    triggers: z.ZodOptional<z.ZodObject<{
        pr: z.ZodOptional<z.ZodObject<{
            mode: z.ZodDefault<z.ZodEnum<{
                eval: "eval";
                "validate-only": "validate-only";
            }>>;
            paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
            blocking: z.ZodOptional<z.ZodBoolean>;
            notify: z.ZodOptional<z.ZodBoolean>;
            compare: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        "pr-task-change": z.ZodOptional<z.ZodObject<{
            mode: z.ZodDefault<z.ZodEnum<{
                eval: "eval";
                "validate-only": "validate-only";
            }>>;
            paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
            blocking: z.ZodOptional<z.ZodBoolean>;
            notify: z.ZodOptional<z.ZodBoolean>;
            compare: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        main: z.ZodOptional<z.ZodObject<{
            mode: z.ZodDefault<z.ZodEnum<{
                eval: "eval";
                "validate-only": "validate-only";
            }>>;
            paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
            blocking: z.ZodOptional<z.ZodBoolean>;
            notify: z.ZodOptional<z.ZodBoolean>;
            compare: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
        schedule: z.ZodOptional<z.ZodObject<{
            mode: z.ZodDefault<z.ZodEnum<{
                eval: "eval";
                "validate-only": "validate-only";
            }>>;
            paths: z.ZodOptional<z.ZodArray<z.ZodString>>;
            blocking: z.ZodOptional<z.ZodBoolean>;
            notify: z.ZodOptional<z.ZodBoolean>;
            compare: z.ZodOptional<z.ZodBoolean>;
            cron: z.ZodString;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type { RepoConfig } from "../../_vendor/ailf-core/index.d.ts";
/**
 * Parse and validate .ailf/config.yaml content. Returns typed config or throws.
 */
export declare function parseRepoConfig(raw: unknown, filename?: string): RepoConfig;
/**
 * Structural schema for the `ailf-eval.yml` workflow template emitted by
 * `ailf init`. Validates the consumer-visible contract: a workflow named
 * "AI Literacy Eval" with at least one job containing checkout + eval
 * steps. The literal YAML body is intentionally not pinned — comments,
 * step ordering, and option flags can shift without breaking consumers.
 */
export declare const AilfEvalWorkflowSchema: z.ZodObject<{
    name: z.ZodString;
    on: z.ZodUnknown;
    jobs: z.ZodRecord<z.ZodString, z.ZodObject<{
        name: z.ZodOptional<z.ZodString>;
        "runs-on": z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
        permissions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        steps: z.ZodArray<z.ZodObject<{
            name: z.ZodOptional<z.ZodString>;
            id: z.ZodOptional<z.ZodString>;
            if: z.ZodOptional<z.ZodString>;
            uses: z.ZodOptional<z.ZodString>;
            run: z.ZodOptional<z.ZodString>;
            env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
            with: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$loose>>;
    }, z.core.$loose>>;
}, z.core.$loose>;
export type { AilfEvalWorkflow } from "../../_vendor/ailf-core/index.d.ts";
/**
 * Parse and validate a `.github/workflows/ailf-eval.yml` payload (already
 * loaded from YAML). Throws with a Zod-formatted message on failure.
 */
export declare function parseAilfEvalWorkflow(raw: unknown, filename?: string): AilfEvalWorkflow;
