import { type LabelingSessionController } from "../../eval/label/controller.js"; import { type LabelingGroup } from "../../eval/label/group.js"; import { runLabelTui } from "../../eval/label/labelTui.js"; import type { Annotator } from "../../eval/label/types.js"; import { Screen } from "../../tui/screen.js"; export type LabelOptions = { /** Run directories, or directories of run directories. */ paths: string[]; checklist?: string; annotator?: string; }; /** What a session is opened with, once the CLI has resolved every flag and * path: the one group, never the paths it came from. */ export type LabelRequest = { group: LabelingGroup; checklistFile: string; annotator: Annotator; }; /** @internal Injected so the fallback order and the terminal lifecycle are * testable without a real environment or terminal. */ export type LabelDependencies = { /** The CLI creates and destroys the screen; the session runs on it. */ makeScreen(): Screen; openSession(request: LabelRequest): Promise; runTui: typeof runLabelTui; reportWarning(message: string): void; isInteractive(): boolean; environment: NodeJS.ProcessEnv; osUserName(): string | undefined; }; /** Who is judging. Recorded on every annotation, and part of the fold key, so * it must never silently change between sessions. */ export declare function resolveAnnotator(options: { annotator?: string; }, dependencies: Pick): Annotator; /** * A usable terminal dimension. * * `??` is not enough: a PTY with no attached window reports **0**, not * undefined, and a zero-width screen lays every element out to nothing and * renders a blank frame. Anything that is not a positive finite number falls * back. */ export declare function terminalDimension(value: number | undefined, fallback: number): number; /** `agency label --checklist `: judge every run the paths name * (run directories, or groups of them) against a checklist, on an * interactive screen. */ export declare function label(options: LabelOptions, dependencies?: LabelDependencies): Promise;