/** * runConductorLoop — the main deterministic loop (feature 62). * * Flow per iteration: * 1. Sensor (runSensor(cwd, runtimeBin) — Envelope v2, fail-closed) * 2. Urgency judge (deterministic short-circuits; INTERRUPT_NOW parks first) * 3. Git probe & closeout (consecutive-partial tracking) * 4. Decide (decideWorkflowAction over the mapped snapshot) * 5. invoke → sendUserMessage(invocation verbatim) | sense (bounded) | stop * * Stops on: sensor refusal, invocation refusal, stop decision, 3 consecutive * partials, 2 consecutive senses without progress, cap exceeded. NEVER sends a * merge command — merge authority stays with the human + /audit-pr (feature 20). * * Run-log line format (SPEC AC10): * YYYY-MM-DD HH:MM — — — / */ import { DEFAULT_CONDUCTOR_CONFIG } from "./types.js"; import type { LoopDeps, LoopResult } from "./types.js"; /** * The one shipped default, owned by `types.ts` (deeply frozen so that merges * always produce new objects) and re-exported here so this module's surface is * unchanged. `loop.ts` used to declare a SECOND copy of the same object literal: * the package then published two identically-named constants — * `DEFAULT_CONDUCTOR_CONFIG` and its `DEFAULT_CONDUCTOR_CONFIG_LOOP` alias — * which could silently diverge, and the loop's own fallback was mutable while * the published one was frozen. */ export { DEFAULT_CONDUCTOR_CONFIG }; /** * Run the conductor loop until convergence, stop, cap, or park. * All I/O is injected through deps; the loop itself is deterministic. */ export declare function runConductorLoop(deps: LoopDeps): Promise;