import { type RecordId, type RuntimeRecord } from "../domain/records.js"; import { type TransitionResult } from "../runtime/record-store.js"; export declare const WORKER_ACTIVITIES: readonly ["idle", "working", "blocked", "done"]; export declare const WORKER_HEALTH_STATES: readonly ["healthy", "parked", "stalled", "stopped"]; export declare const WORKER_PROVIDER_MODES: readonly ["claude_interactive", "codex_exec", "codex_goal"]; declare const WORKER_REGISTRY: unique symbol; export type WorkerActivity = (typeof WORKER_ACTIVITIES)[number]; export type WorkerHealth = (typeof WORKER_HEALTH_STATES)[number]; export type WorkerProviderMode = (typeof WORKER_PROVIDER_MODES)[number]; export type WorkerPayload = Record & { dispatch_id: string; goal_id: string; goal_version: number; ticket_id: string; ticket_version: number; external_worker_id: string; session_id: string; role_id: string; model_id: string; provider_mode: WorkerProviderMode; worktree_id: string; worktree_path: string; capabilities: string[]; health: WorkerHealth; reserved_at: string; updated_at: string; }; export type WorkerRecord = RuntimeRecord; export interface ReserveWorkerInput { readonly dispatchId: string; readonly goalId: string; readonly goalVersion: number; readonly ticketId: string; readonly ticketVersion: number; readonly leaseToken: string; readonly attempt: number; readonly externalWorkerId: string; readonly sessionId: string; readonly roleId: string; readonly modelId: string; readonly providerMode: WorkerProviderMode; readonly worktreeId: string; readonly worktreePath: string; readonly capabilities: string[]; readonly actorId: string; readonly reservedAt: string; } export interface WorkerMutationInput { readonly dispatchId: string; readonly expectedVersion: number; readonly operationId: string; readonly actorId: string; readonly observedAt: string; } export type SetWorkerActivityInput = WorkerMutationInput & { readonly activity: WorkerActivity; }; export type SetWorkerHealthInput = WorkerMutationInput & { readonly health: WorkerHealth; }; export interface WorkerRegistry { readonly [WORKER_REGISTRY]: true; reserve(input: ReserveWorkerInput): Readonly<{ status: "created" | "replayed"; record: WorkerRecord; }>; setActivity(input: SetWorkerActivityInput): TransitionResult; setHealth(input: SetWorkerHealthInput): TransitionResult; read(dispatchId: string): WorkerRecord; readIfExists(dispatchId: string): WorkerRecord | undefined; list(): readonly WorkerRecord[]; } export declare function workerRecordId(dispatchId: string): RecordId; export declare function createWorkerRegistry(options: { readonly recordsRoot: string; readonly locksRoot: string; readonly packageRoot: string; }): WorkerRegistry; export declare function assertWorkerRegistry(value: unknown): asserts value is WorkerRegistry; export {};