export type TaskContractMode = 'code_edit' | 'debug' | 'research' | 'planning' | 'file_analysis' | 'safe_read_only' | 'risky_action' | 'general';
export interface TaskContract {
    task_id: string;
    /** Primary goal, stripped of conversational filler. */
    goal: string;
    mode: TaskContractMode;
    /** Raw intent type from the Mycelium classifier. */
    intent_type: string;
    /** Explicit constraints extracted from the user message. */
    constraints: string[];
    /** Paths the agent may read/write. Empty = unrestricted within project root. */
    allowed_paths: string[];
    /** Paths the agent must never touch. */
    blocked_paths: string[];
    /** Validation commands to run after task completion (e.g. "npm run typecheck"). */
    validation: string[];
    /** What a passing outcome looks like. */
    success_criteria: string[];
    /** Conditions that mean the run has failed. */
    failure_triggers: string[];
    approval_required: boolean;
    max_turns: number;
    high_risk: boolean;
    created_at: string;
    /** "derived" = auto-built from message; "explicit" = caller provided full contract. */
    source: 'derived' | 'explicit';
}
/**
 * Renders a TaskContract as a compact Markdown block to inject into the
 * system prompt so the model always sees the operating constraints.
 */
export declare function renderTaskContractBlock(contract: TaskContract): string;
//# sourceMappingURL=taskContract.d.ts.map