import type { CanonicalDelegateRun } from "../../plan/types.js"; import { type FabricProgramEventBus, type FabricProgramInput, type FabricTransportResult } from "./transport.js"; export type FabricRunInvocation = Pick & { readonly confineWrites: boolean; }; export interface FabricRunOptions { readonly ref: string; readonly invocation: FabricRunInvocation; readonly projectRoot: string; readonly trustedProject: boolean; readonly globalConfigPath?: string; readonly signal?: AbortSignal; readonly timeoutMs?: number; readonly thinking?: string; readonly schema?: unknown; readonly systemPrompt?: string; } export interface FabricRunDependencies { readonly events: FabricProgramEventBus | undefined; /** Return undefined for a missing file; reject unreadable or malformed JSON. */ readConfig(path: string): Promise; } export interface FabricRunReceipt { readonly runId: string; readonly worktreeResult?: { readonly path: string; readonly branch?: string; readonly baseRef?: string; }; } export type FabricRunResult = { readonly status: "dispatched"; readonly result: Extract; readonly receipt: FabricRunReceipt; } | { readonly status: "rejected"; readonly dispatchState: "not-dispatched"; readonly finding: { readonly code: "fabric-escalation-enabled" | "fabric-config-invalid"; readonly message: string; }; } | { readonly status: "indeterminate"; readonly dispatchState: "unknown"; readonly finding: { readonly code: "fabric-receipt-invalid"; readonly message: string; }; } | Extract; export declare function buildFabricRunRequest(options: FabricRunOptions): FabricProgramInput; export declare function dispatchFabricRun(options: FabricRunOptions, dependencies: FabricRunDependencies): Promise;