import type { JobsPort } from "../../app/ports/jobs-port.js"; import { type ArtifactPage, type ArtifactPagerSource } from "./artifact-pager-source.js"; export interface JobTailSourceOptions { readonly jobs: JobsPort; readonly jobId: string; readonly stream?: "stdout" | "stderr"; readonly pageBytes?: number; } /** * Live view over a background job's output. * * Bytes are never buffered: every read is one stat plus one bounded page read * straight off the artifact file, and the path is re-resolved each time so a * rotation to `.N` is followed without restarting the view. Updates * are driven by the job manager's existing change stream, which is already * coalesced to a few notifications per second, so following adds no timer. */ export declare function createJobTailPagerSource(options: JobTailSourceOptions): ArtifactPagerSource | undefined; export declare function jobTailTitle(command: string, live: boolean): string; export declare function isLiveJobStatus(status: string): boolean; export type { ArtifactPage };