import type { BashOperations } from "@earendil-works/pi-coding-agent"; import type { JevFabricCli, JevFabricReceipt } from "./client.js"; /** * Streams a jev-fabric job into `onData` until its receipt is final. Bounded * previews are what jev-fabric retains: dropped bytes and evicted events are * disclosed inline, never silently joined. Aborting `signal` stops the job; * aborting `detached` only lets go of it. */ export declare function followJevFabricJob(cli: JevFabricCli, jobId: string, options: { onData: (data: Buffer) => void; signal?: AbortSignal | undefined; detached?: AbortSignal | undefined; }): Promise; export interface JevFabricLaunch { cli: JevFabricCli; taskId: string; /** Private directory for launch scripts; must survive this Pi process. */ scriptDirectory: string; shellPath?: string | undefined; /** Job lifetime when the call gives no explicit `timeout`. */ defaultTimeoutMs: number; maxTimeoutMs: number; label?: string | undefined; /** Rewrites the private launch script, e.g. to append a completion notify trailer. */ wrapScript?: ((command: string) => string) | undefined; detached: AbortSignal; onStarted: (jobId: string, scriptPath: string) => Promise | void; /** The job reached a final receipt (not a detach). */ onFinished: () => Promise | void; } /** * Local-bash-compatible operations whose process is owned by jev-fabric. The * command runs from a private script, so quoting and argv limits never apply; * cwd and the (spawn-hooked) environment are inherited by the durable worker. * Shell middleware wraps these operations exactly like the local backend. */ export declare function createJevFabricBashOperations(launch: JevFabricLaunch): BashOperations; /** * Operations that reattach to an existing job instead of launching one, so a * reattached task's output still passes through the active shell middleware. */ export declare function attachJevFabricBashOperations(cli: JevFabricCli, jobId: string, detached: AbortSignal): BashOperations; //# sourceMappingURL=operations.d.ts.map