/** * buildReliabilityGateChart — produces a footprintjs FlowChart that wraps * an LLM call with rules-based reliability semantics, using the native * `decide()` DSL via `addDeciderFunction` decider stages. * * ⚠ NOT REACHABLE FROM ANY SHIPPED PATH (verified 2026-07-28). This header * used to say the chart "is mounted as a subflow in the agent's chart at * Agent.build() time (only when reliability is configured)". It is not: * `buildReliabilityGateChart` is exported from no barrel, and its only * consumer in the repository is its own test * (`test/reliability/gate-chart-7pattern.test.ts`). The live * `.reliability()` path is `executeWithReliability` * (`core/agent/stages/reliabilityExecution.ts`) driving * `singleProviderCall` inline in `core/agent/stages/callLLM.ts` — which * trades this chart's subflow visibility for streaming support. Keep this * file honest rather than deleting it: it is the only implementation that * honours the `providers` failover list (see MENTAL_MODEL §14 item 3). * * Inside the subflow, when something does mount it: * * PreCheck (decider) → CallProvider (function) → PostDecide (decider) * │ * ┌───────────────┘ * ▼ loopTo('pre-check') * * Branch outcomes (escape via $break() to stop the gate's loop; * fall-through via no-$break to trigger loopTo back to PreCheck): * * PreCheck: * 'continue' → no-op → falls through to CallProvider * 'fail-fast' → set failKind, $emit, $break(reason) * * PostDecide: * 'ok' → $break() (subflow exits normally; agent continues) * 'retry' → bump attempt; falls through to loopTo * 'retry-other' → bump providerIdx; falls through to loopTo * 'fallback' → call config.fallback(); $break() on success * 'fail-fast' → set failKind, $emit, $break(reason) * * The design intends the subflow to be mounted WITHOUT `propagateBreak: * true`, so subflow `$break` stays local and an agent-level * `TranslateFailFast` stage reads `scope.reliabilityFailKind` and converts * it into an agent-level `$break(reason)` — letting normal subflow exits * (`ok`/`fallback`) leave the agent running while fail-fast stops it. That * stage was never built (`grep TranslateFailFast` finds only comments), which * is part of why nothing mounts this chart; the live path throws * `ReliabilityFailFastError` from `Agent.run` instead. * * Three-channel discipline preserved: * • SCOPE STATE — failKind/failPayload/failReason mapped to parent via * outputMapper; for the intended TranslateFailFast. * • $emit — passive observability for external consumers. * • $break(reason)— control flow + human reason for narrative. */ import type { FlowChart } from 'footprintjs'; import type { ReliabilityConfig } from './types.js'; /** * Build the reliability gate FlowChart from a config. Mount via * `addSubFlowChartNext` in the agent's chart — see `Agent.build()`. * * Closure state captured by stage functions: * • `breakers` — Map; per-instance state * persists across gate invocations within ONE agent process. * • `preRules` / `postRules` — frozen rule arrays. * • `fallbackFn` — consumer's fallback function, if configured. */ export declare function buildReliabilityGateChart(config: ReliabilityConfig): FlowChart; //# sourceMappingURL=buildReliabilityGateChart.d.ts.map