/** * outdated-cost-hooks migration: re-install cost hooks whose command text is not * what this version writes. * * `legacy-cost-hooks` answers one historical question — does this hook predate the * shim? — and had to be written when that change shipped. This one answers the * question that recurs: is the installed command current? Every future * command-shape change is then repaired by machinery that already exists, instead * of by another bespoke detector nobody remembers to add. * * The change that prompted it: the claude-code SessionEnd hook now passes * `--session-end`, so the recorder drops the ending session's active-session stash * entry. An install without the flag is not broken — `cost record` also accepts the * `hook_event_name: "SessionEnd"` signal in the payload, which is deliberately what * makes the fix land without a re-install — but it should not stay behind. * * Same narrow warrant as `legacy-cost-hooks`: it only ever replaces hook entries * carrying our own `#aidlc-cost-hook` marker, through the merge-not-clobber * installer, so nothing the user wrote is touched. Self-clearing — after the * re-install the status reads current. * * Ordered after `legacy-cost-hooks`, which re-installs and therefore leaves those * platforms current: each migration then reports only its own condition. */ import type { Migration } from '../types.js'; /** * Platforms whose installed hook command differs from the current one. Read-only * half, exported for reuse and direct testing. * * Only installed hooks count: an absent hook was never armed, which is a different * condition that `aidlc cost hooks status` already reports. */ export declare function outdatedCostHookPlatforms(projectRoot: string): string[]; export declare const outdatedCostHooks: Migration; //# sourceMappingURL=outdated-cost-hooks.d.ts.map