/** * Production result-path adapter factory (Phase 5 correction-3 §G). * * Certifying structured-role / codex identities only: never inject runner, * panes, session factories, or env seams into LLM providers. * Recovery is durable (file/store readback), not process-local Maps. * PR create is always followed by exact inspect readback. */ import { type RolePolicyConfig } from "../domain/role-policy.js"; import { type ProcessRunner } from "../providers/process.js"; import type { ResultServiceConfig, StopAdapter } from "../kernel/result-service.js"; import type { UnboundLaunchStopAdapter } from "../kernel/stop.js"; export interface ProductionResultAdaptersInput { readonly packageRoot?: string; readonly workspaceRoot: string; readonly stateRoot: string; readonly rolePolicy: RolePolicyConfig; readonly repository?: string | null; readonly baseBranch?: string; readonly remote?: string; readonly claudeExecutablePath?: string; } export type ProductionResultAdapters = Omit; /** * Build production-bound result adapters for createResultService. * No injected runner/pane/session seams on LLM providers (certifying identities). */ export declare function createProductionResultAdapters(input: ProductionResultAdaptersInput): ProductionResultAdapters; /** * Exact stop: one list-panes observation of pane + OMS session/window + four * OMS pane user-options (provider session, launch op, launch identity, task). * Rehashing caller input alone is not live proof. Missing/duplicate/recycled/ * partial/mismatched bindings are ambiguous — never kill. * * `runner` is only for offline observation (fake tmux); it cannot inject * authority fields. Production composition uses default runProcess. */ export declare function createExactStopAdapter(options?: { readonly runner?: ProcessRunner; readonly env?: NodeJS.ProcessEnv; readonly cwd?: string; readonly readProcessArgv?: (pid: number) => readonly string[]; }): StopAdapter & UnboundLaunchStopAdapter;