import { type ProcessJobErrorCode, type ProcessJobProjection, type ProcessJobState } from "@mono-agent/agent-contracts"; import type { ProcessJobsController } from "@mono-agent/runtime-adapter"; import type { NotifyDeliveryResult } from "./channels.js"; import { type ProcessJobsSettings } from "./process-jobs-config.js"; import { type OwnerPrivateLock } from "./owner-private-lock.js"; import { attestProcessJobsRootRegistration, type ProcessJobsRootRegistrationProof } from "./process-jobs-root-registry.js"; import { isSameProcessIncarnation, readProcessIncarnation, type ProcessIncarnation } from "./process-incarnation.js"; import { type ProcessJobOriginRecord, type ProcessJobStore } from "./process-jobs-store.js"; export interface ProcessJobsHealth { readonly state: "ok" | "degraded"; readonly quarantinedTransactions: number; readonly failureOperation?: string; readonly failureDetectedAt?: string; } export interface ProcessJobWakeInput { readonly projection: ProcessJobProjection; readonly prompt: string; readonly conversationId: string; readonly channel: ProcessJobOriginRecord["channel"]; readonly deliveryKey: string; readonly chainDepth: number; } export interface OpenProcessJobsServiceOptions { readonly cwd: string; readonly workspace: string; readonly settings: ProcessJobsSettings; /** Durable registration proof which must predate all state-root creation/mutation. */ readonly registration: ProcessJobsRootRegistrationProof; /** Deterministic unit-test seam; production always re-attests the durable proof. */ readonly attestRegistration?: typeof attestProcessJobsRootRegistration; readonly wake: (input: ProcessJobWakeInput) => Promise; /** Best-effort retained lifecycle update for the exact originating surface. */ readonly surfaceUpdate?: (projection: ProcessJobProjection) => Promise; readonly onHealthChange?: (health: ProcessJobsHealth) => void | Promise; readonly logger?: { info?(message: string, details?: Readonly>): void; warn?(message: string, details?: Readonly>): void; }; readonly now?: () => Date; readonly platform?: NodeJS.Platform; readonly randomId?: () => string; readonly currentIncarnation?: () => Promise; readonly readIncarnation?: typeof readProcessIncarnation; readonly sameIncarnation?: typeof isSameProcessIncarnation; readonly signalProcess?: (pid: number, signal: NodeJS.Signals) => void; readonly processGroupExists?: (pgid: number) => boolean; readonly sleep?: (milliseconds: number) => Promise; readonly wakeBusyRearmMs?: number; readonly acquireLock?: () => Promise; readonly store?: ProcessJobStore; } export interface ProcessJobsServiceHandle { readonly settings: ProcessJobsSettings; readonly operatorToken: string; readonly health: ProcessJobsHealth; controller(origin: ProcessJobOriginRecord, chainDepth: number | (() => number)): ProcessJobsController; list(): Promise; get(jobId: string): Promise; cancel(jobId: string): Promise; counts(): Promise>>; activateWakes(): Promise; stop(): Promise; } export declare class ProcessJobServiceError extends Error { readonly code: ProcessJobErrorCode; constructor(code: ProcessJobErrorCode, _message?: string); } /** Acquire exclusive ownership, recover interrupted work, and expose one host controller. */ export declare function openProcessJobsService(options: OpenProcessJobsServiceOptions): Promise; //# sourceMappingURL=process-jobs-service.d.ts.map