import type { PlanContext } from "../internals/plan.js"; import type { Check } from "../internals/verify.js"; /** * Pin currency for the wired MCP tool pins (issue #504). The catalog pins are * compile-time constants, so picking up an upstream improvement is a double lag * by construction: the pin must be bumped in an aih RELEASE, and each repo must * then RE-PROJECT its `.mcp.json`. This probe makes both halves visible: * * - offline, every run: each exactly-pinned launch in `.mcp.json` is compared * against the pin THIS aih build's catalog generates for the same server — a * difference is the re-projection half (`mcp.projection-stale`, fixed by * `aih mcp --apply`); * - opt-in `aih doctor --check-pin-currency`: each pin is compared against its * registry's latest release (npm via `npm view`, PyPI via its JSON metadata * endpoint over curl). A newer release warns `mcp.pin-stale` — a candidate * for the vet-then-bump flow, never an automatic upgrade. The query reads * registry METADATA only; nothing is downloaded or executed, but it is still * network egress from a read-only command, so it stays opt-in (mirroring * `--attest-mcp-pins`). * * Registry responses are cross-boundary data: sanitized, bounded, and parsed * strictly before they are echoed into the report. */ /** `ctx.options` key for the `--check-pin-currency` doctor flag. */ export declare const CHECK_PIN_CURRENCY_OPTION = "checkPinCurrency"; interface ExactLaunchPin { packageName: string; version: string; spec: string; } /** * The exact pins the CURRENT build's catalog generates, by server name, read * under {@link ALL_SERVERS_STACK}. Exported for the catalog-pin visibility * guard in tests/mcp/mcp.test.ts, which fails when any exact pin declared in * servers.ts is missing here — the enforcement that no catalog pin can be * invisible to the offline currency tier. */ export declare function bakedCatalogPins(): Map; /** * The doctor probe. Verdict grammar: `pass` only when the registries were * actually queried (`--check-pin-currency`), every pin matches its registry's * latest release, and no projection lag exists. A newer upstream release is an * advisory `skip` coded `mcp.pin-stale`; a `.mcp.json` pin off this build's * catalog pin is an advisory `skip` coded `mcp.projection-stale` (reported even * without the flag — it needs no network). Every cannot-check state is a * visible uncoded `skip`, never silence and never a false green. */ export declare function mcpPinCurrencyProbe(ctx: PlanContext): Promise; export {};