import type { RolePolicyConfig } from "../domain/role-policy.js"; import type { Clock, KernelPaths } from "../kernel/types.js"; import { type ClaudeInteractiveLaunchPlan } from "../kernel/providers.js"; import type { ProcessResult, ProcessRunner } from "../providers/process.js"; declare const V2_TMUX_SESSION = "oms"; export interface V2ConductorLaunchPlan extends ClaudeInteractiveLaunchPlan { readonly agent_instructions_path: string; } /** * Pure v2 conductor argv builder. Provider contact and tmux ownership stay in * the physical start adapter; this function only seals the interactive policy. */ export declare function buildV2ConductorLaunchPlan(input: { readonly packageRoot: string; readonly workspaceRoot: string; readonly claudeBinary: string; readonly model: string; readonly conductorSessionId: string; readonly mcpConfigPath: string; readonly resume: boolean; readonly env?: NodeJS.ProcessEnv; }): V2ConductorLaunchPlan; export declare function resolveV2ConductorModel(policy: RolePolicyConfig): string; export interface V2ConductorStartResult { readonly ok: true; readonly sessionName: typeof V2_TMUX_SESSION; readonly action: "started" | "attached" | "repaired"; readonly detail: string; readonly needsGoal: boolean; } export type V2InteractiveRunner = (command: string, args: readonly string[], cwd: string, env: NodeJS.ProcessEnv) => ProcessResult; export type V2RuntimeLivenessState = "alive" | "dead" | "missing" | "ambiguous"; export interface V2RuntimeLiveness { readonly conductor: V2RuntimeLivenessState; readonly observer: V2RuntimeLivenessState; readonly watchdog: V2RuntimeLivenessState; } /** * Read-only status observation for the public CLI. It trusts only the sealed * session record and exact tmux pane ownership; it never attaches or repairs. */ export declare function readV2RuntimeLiveness(input: { readonly paths: KernelPaths; readonly env: NodeJS.ProcessEnv; readonly runner: ProcessRunner; }): V2RuntimeLiveness; /** * Human-attended tmux start/attach. It first creates an inert pane to obtain * the physical pane id, seals the recovery/MCP binding, then respawns that pane * with the interactive Claude argv. No print/headless mode is available. */ export declare function startOrAttachV2Conductor(input: { readonly packageRoot: string; readonly configRoot: string; readonly workspaceRoot: string; readonly repository: string | null; readonly paths: KernelPaths; readonly clock?: Clock; readonly rolePolicy: RolePolicyConfig; readonly claudeBinaryPath: string; readonly claudeBinaryVersion: string; readonly claudeBinaryHash: string; readonly mcpEntrypoint: string; readonly observerEntrypoint: string; readonly internalBridgeEntrypoint: string; readonly env?: NodeJS.ProcessEnv; readonly runner?: ProcessRunner; readonly interactiveRunner?: V2InteractiveRunner; readonly conductorSessionIdFactory?: () => string; }): V2ConductorStartResult; export declare function repairV2ConductorPane(input: { readonly packageRoot: string; readonly workspaceRoot: string; readonly paths: KernelPaths; readonly clock: Clock; readonly rolePolicy: RolePolicyConfig; readonly recordPath: string; readonly bindingPath: string; readonly env: NodeJS.ProcessEnv; readonly runner: ProcessRunner; }): boolean; export {};