import type { SessionKey } from "@yanlinglabs/winter-agent-sdk"; import type { SwitchReview } from "@yanlinglabs/winter-provider-runtime"; import type { RuntimeSelection } from "../selection/runtime-selection.js"; export interface SwitchReviewer { /** * Reviews a switch of `session` to the FRESH `requested` selection a host already decided for the * change. Reads the canonical transcript and sidecar through the shared store; never rewrites * anything. * * fix wave 2, CRITICAL C1: the switch's SOURCE is the live tip's own identity, not the directory * row's recorded selection — a same-runtime model change never updates that row. The tip's sidecar * `kind:"origin"` record wins when Winter wrote one; otherwise the tip's own `message.model` (a * claude-written turn) is read directly. The recorded selection is the fallback ONLY when the lineage * has no assistant entry at all (a session with no reply yet). */ reviewSwitch(session: SessionKey, requested: RuntimeSelection): Promise; }