import { type FinalizeChecks, type FinalizeResult, type ValidationCommandSpec } from "./finalize"; import { type PreserveResult } from "./preserve"; import { type HarnessSessionTransport } from "./session-transport"; import { type HarnessLifecycle, type Observation, type RecoveryClassification, type RetryBudget, type Severity } from "./types"; export interface OperateOptions { root: string; sessionId: string; workspace: string; branch: string; transport: HarnessSessionTransport; /** Factory used to recreate an SDK transport on restart recovery. Defaults to reusing `transport`. */ transportFactory?: () => HarnessSessionTransport; /** Bounded observation provider (scripted in tests; real = git + SDK session state). */ observe: () => Promise; /** Real dirty-worktree preservation; injectable for tests. Defaults to git stash/diff capture. */ preserve?: (workspace: string) => PreserveResult; finalizeChecks: FinalizeChecks; validationCommands?: ValidationCommandSpec[]; retryBudget?: Partial; acceptanceTimeoutMs?: number; maxIterations?: number; /** Injected event emitter. Production owner calls must pass the lease-guarded single-writer #emit. */ emit: (severity: Severity, kind: string, evidence: Record) => Promise; clock?: () => number; } export interface OperateResult { completed: boolean; lifecycle: HarnessLifecycle; iterations: number; classifications: RecoveryClassification[]; vanishReceiptIds: string[]; finalize?: FinalizeResult; blockers: string[]; } export declare function operate(goal: string, opts: OperateOptions): Promise;