import { type ChildProcess } from "node:child_process"; import type { ToolResult } from "../types.js"; import { responderPollingPolicy } from "./jobs/polling-policy.js"; import { formatJobElapsed } from "./jobs/helpers.js"; import { BackgroundJob, BackgroundSpawnSpec, JobLinkMetadata, JobManagerListener, JobStatus, PendingSettlement, ResponderNotification, StartJobOptions } from "./jobs/types.js"; export type { BackgroundJob, BackgroundSpawnSpec, JobArtifactReceipt, JobKind, JobLinkMetadata, JobManagerChange, JobManagerListener, JobMonitorMetadata, JobStatus, JobTerminalStatus, PendingSettlement, ResponderNotification, StartJobOptions, SupersededResultRevision } from "./jobs/types.js"; export { formatJobElapsed }; export { responderPollingPolicy }; export type { ResponderPollingPolicyInput } from "./jobs/polling-policy.js"; interface TailCursor { stream?: "stdout" | "stderr" | "combined"; offset?: number; bytes?: number; } export declare class JobManager { private readonly jobsDir; private jobs; private notifications; private readonly claimedNotifications; private processes; private writers; private abortControllers; private authorizationTimers; private responderLeases; private settlementTimers; private pendingSettlements; private consumedResponderResults; private livenessWatchTimer; private finalizations; private listeners; private livenessMisses; private livenessCheckedAt; private registryRetryTimer; private readonly registryPath; private readonly transientV2RegistryPath; constructor(jobsDir?: string); private isDurable; private artifactPathsOf; private removeJobArtifacts; private forgetJob; private sweepOrphanArtifacts; private isLive; private isTerminalStatus; private emit; subscribe(listener: JobManagerListener): () => void; private matchesSession; private clearAuthorizationTimer; private scheduleAuthorizationExpiry; activateResponderLease(sessionId: string): string; getResponderLeaseId(sessionId: string | undefined): string | undefined; releaseResponderLease(sessionId: string, leaseId?: string): void; private cloneReceipt; private notificationForJob; private ensureCompletionNotification; private closeWriters; private finalizeJob; private refreshJobLiveness; private scheduleTaskSettlement; private completeSettlement; private retrySettlement; private scheduleLivenessWatch; private ownsNotification; private startJobReceipt; getPendingSettlements(): PendingSettlement[]; registerJob(id: string, job: BackgroundJob, ac?: AbortController, child?: ChildProcess): void; updateJobStatus(id: string, status: JobStatus, exitCode?: number): void; startJob(command: string | BackgroundSpawnSpec, options?: StartJobOptions): Promise; listJobs(sessionId?: string): ToolResult; private resolveJobId; getJob(id: string): BackgroundJob | undefined; getPendingNotifications(sessionId?: string): ResponderNotification[]; pendingNotifications(sessionId?: string): ResponderNotification[]; claimNextResponderNotification(sessionId: string, leaseId: string): ResponderNotification | undefined; releaseResponderNotificationClaim(notificationId: string): void; markDeliveryStarted(notificationId: string, sessionId?: string): boolean; markDelivered(notificationId: string, sessionId?: string): boolean; markRead(notificationId: string, sessionId: string): boolean; markAnalyzed(notificationId: string, sessionId?: string): boolean; acknowledge(notificationId: string, sessionId?: string): boolean; linkJob(jobId: string, metadata: JobLinkMetadata): BackgroundJob | undefined; waitForJob(id: string, options?: { timeoutMs?: number | undefined; signal?: AbortSignal | undefined; }): Promise; tailJob(id: string, bytesOrCursor?: number | TailCursor): Promise; stopJob(id: string, options?: { signal?: NodeJS.Signals; graceMs?: number; escalate?: boolean; suppressWake?: boolean; }): Promise; cancelAll(sessionId: string): Promise; getRunningJobs(sessionId?: string): BackgroundJob[]; getRecentJobs(limit?: number, sessionId?: string): BackgroundJob[]; pruneTerminalJobs(): void; private loadAndReconcile; private registry; private scheduleRegistryRetry; private persistSync; private persist; } export declare const jobManager: JobManager;