import type { PlanContext } from "../internals/plan.js"; import type { Check } from "../internals/verify.js"; /** * Resolved-artifact attestation for uvx MCP pins (issue #502). An exact pin in * `.mcp.json` proves what the config ASKS FOR, never what the resolved artifact * actually is: in the field, a launched server's self-reported * `serverInfo.version` (the MCP `initialize` result) has differed from the * honored pin. Doctor previously verified allowlist/config shape only, so that * state was invisible. * * The probe always renders a row (an unattested pin is a visible advisory, never * silence). Actually LAUNCHING the pinned server executes a third-party artifact * and may touch the network, so the live handshake is OPT-IN via * `aih doctor --attest-mcp-pins` — mirroring heal's `--probe-mcp-endpoints` * boundary for config-derived targets. Only a literal `uvx` command with exact * end-to-end pins and no config-supplied environment is ever executed * ({@link mcpResolverPinState} is the fail-closed gate); everything else is * reported as unattestable. A mismatch WARNS (an advisory coded `skip`) rather * than hard-failing: packaging lag can be benign, but it must be seen and * reviewed. The server's output is cross-boundary data — parsed defensively and * sanitized before it is echoed into the report. */ /** `ctx.options` key for the `--attest-mcp-pins` doctor flag. */ export declare const ATTEST_MCP_PINS_OPTION = "attestMcpPins"; /** * The doctor probe. Verdict grammar: `pass` only when every uvx pin was launched * and its `serverInfo.version` matches the pin; a mismatch is an advisory `skip` * coded `mcp.version-drift`; every not-attested state (opt-in flag absent, * unpinned launcher, launch/handshake failure) is an advisory `skip` coded * `mcp.pin-unattested` — visible, never green. */ export declare function mcpUvxPinAttestationProbe(ctx: PlanContext): Promise;