export declare const JOB_QUEUE_REL = "agent-state/job-queue.json"; export declare const JOB_LOCK_TABLE_REL = "agent-state/job-locks.json"; export declare const SCHEDULER_LEASE_REL = "agent-state/scheduler-lease.json"; export declare const SCHEDULER_LOCK_REL = "agent-state/job-scheduler.lock"; export declare const PRIORITY_BANDS: readonly ["P0", "P1", "P2", "P3"]; export type JobPriorityBand = (typeof PRIORITY_BANDS)[number]; export declare const JOB_STATUS: readonly ["pending", "accepted", "blocked", "ready", "running", "done", "failed", "failed_terminal", "canceled", "unknown_recovery"]; export type JobStatus = (typeof JOB_STATUS)[number]; export type JobDependencyKind = "gate" | "handoff" | "todo" | "time"; export interface JobDependency { kind: JobDependencyKind; ref: string; expected?: string; } export interface JobRecord { job_id: string; kind: string; payload: Record; status: JobStatus; priority: JobPriorityBand; dependencies: JobDependency[]; resource_requirements: string[]; attempt: number; max_attempts: number; backoff_ms: number; next_attempt_at?: string; created_at: string; accepted_at?: string; started_at?: string; completed_at?: string; evidence_ref?: string; error?: string; reason_code?: string; } export interface JobQueueFile { version: 1; updated_at: string; jobs: JobRecord[]; } export declare const JOB_LOCK_STATUS: readonly ["active", "completed", "released", "failed"]; export type JobLockStatus = (typeof JOB_LOCK_STATUS)[number]; export interface JobLockRecord { lock_id: string; job_id: string; phase: string; resource: string; status: JobLockStatus; priority: JobPriorityBand; lease_id?: string; reason_code?: string; acquired_at?: string; heartbeat_at?: string; released_at?: string; created_at: string; } export interface JobLockTableFile { version: 1; updated_at: string; locks: JobLockRecord[]; } export interface SchedulerLeaseFile { version: 1; lease_id: string; owner: string; acquired_at: string; heartbeat_at: string; expires_at: string; } export interface EnqueueJobInput { kind: string; payload?: Record; priority?: JobPriorityBand; dependencies?: JobDependency[]; resource_requirements?: string[]; run_after?: string; max_attempts?: number; backoff_ms?: number; job_id?: string; } export interface EnqueueJobResult { ok: boolean; path: string; queue: JobQueueFile; ack?: { job_id: string; status: JobStatus; }; nack?: { reason_code: string; reason: string; }; } export interface DispatchJobsInput { owner?: string; lease_ttl_seconds?: number; now_iso?: string; } export interface DispatchJobsResult { ok: boolean; owner: string; lease_acquired: boolean; lease: SchedulerLeaseFile; queue_path: string; lock_path: string; queue: JobQueueFile; locks: JobLockTableFile; summary: { total_jobs: number; blocked_jobs: number; ready_jobs: number; running_jobs: number; started_jobs: number; recovered_jobs: number; }; } export interface DispatchJobNowInput { job_id: string; owner?: string; now_iso?: string; } export interface DispatchJobNowResult { ok: boolean; queue_path: string; lock_path: string; queue: JobQueueFile; locks: JobLockTableFile; started_lock?: { acquired_at: string; resources: string[]; }; error?: string; } export interface CompleteJobInput { job_id: string; owner?: string; success?: boolean; evidence_ref?: string; error?: string; now_iso?: string; } export interface CompleteJobResult { ok: boolean; queue_path: string; lock_path: string; queue: JobQueueFile; locks: JobLockTableFile; status?: JobStatus; retry_scheduled_for?: string; error?: string; } export interface AckJobInput { job_id: string; action: "accept" | "reject" | "cancel" | "resume"; reason?: string; } export interface AckJobResult { ok: boolean; path: string; queue: JobQueueFile; from?: JobStatus; to?: JobStatus; error?: string; } export declare function getJobQueuePath(): string; export declare function getJobLockTablePath(): string; export declare function getSchedulerLeasePath(): string; export declare function readJobQueue(): JobQueueFile; export declare function readJobLockTable(): JobLockTableFile; export declare function readSchedulerLease(): SchedulerLeaseFile | undefined; export declare function enqueueJob(input: EnqueueJobInput): Promise; export declare function acknowledgeJob(input: AckJobInput): Promise; export declare function dispatchJobs(input?: DispatchJobsInput): Promise; export declare function dispatchJobNow(input: DispatchJobNowInput): Promise; export declare function completeJob(input: CompleteJobInput): Promise; //# sourceMappingURL=job-scheduler.d.ts.map