/**
 * Shared types for the agent harness mode handler.
 */
import type { PromptfooPrompt, PromptfooProvider, PromptfooTestCase } from "../../promptfoo-compiler.js";
import type { RubricResolutionInput } from "../../rubric-resolution.js";
import type { SandboxType } from "../../sandbox/sandbox-strategy.js";
/** Options for compiling an agent harness task */
export interface AgentHarnessCompileOptions {
    /** Grader provider for LLM-graded assertions */
    graderProvider?: string;
    /** Root directory for fixture resolution */
    rootDir?: string;
    /** Rubric config (templates, weights, profiles) — loaded from rubrics config */
    rubricConfig?: RubricResolutionInput;
}
/** Result of compiling a single agent harness task */
export interface AgentHarnessCompileResult {
    /** Promptfoo provider config */
    providers: PromptfooProvider[];
    /** Compiled test cases */
    tests: PromptfooTestCase[];
    /** Prompts for evaluation */
    prompts: PromptfooPrompt[];
    /** Promptfoo extensions for sandbox lifecycle */
    extensions: PromptfooExtension[];
    /** Sandbox configuration metadata */
    sandboxConfig: SandboxConfigMeta;
    /** Warnings generated during compilation */
    warnings: string[];
}
/** Promptfoo extension hook */
export interface PromptfooExtension {
    type: "afterEach" | "beforeEach";
    /** JavaScript code or module path for the hook */
    code: string;
}
/** A fixture resolved to an absolute source and a sandbox-relative dest. */
export interface ResolvedFixture {
    src: string;
    /** Sandbox-relative destination; `null` flattens contents to the root. */
    dest: string | null;
}
/** Metadata about sandbox configuration for this task */
export interface SandboxConfigMeta {
    type: SandboxType;
    image?: string;
    fixtures: ResolvedFixture[];
    limits?: {
        cpus?: number;
        memoryBytes?: number;
        networkAccess?: boolean;
    };
}
/** Validation errors for agent harness task definitions */
export interface AgentHarnessValidationError {
    field: string;
    message: string;
}
