import type { AdoptionSnapshot } from "./advisories.js"; import type { ContextBloat } from "./bloat.js"; import type { LoadGroupModel } from "./loadgroups.js"; /** * The "Next steps" panel — the report's SELF-GUIDING layer. The other panels * surface symptoms (a 67/100 score, a missing artifact, an "OVER budget" number); * this one translates them into the exact, copy-runnable `aih` commands so a reader * doesn't have to know which command fixes which gap. It also reconciles the * scary-looking full-corpus footprint with the per-turn cost that actually matters. * * Pure: no I/O, derived entirely from snapshots the panels already computed. */ export interface NextStepsInput { /** Managed-artifact presence (Configuration panel). Drives the per-gap commands. */ adoption?: AdoptionSnapshot; /** Full-corpus footprint (the union of all context files). */ bloat?: ContextBloat; /** Per-turn load-group model (what one tool actually loads). */ perTurn?: LoadGroupModel; /** Captured usage events; 0 = none captured yet. `undefined` = unknown. */ usageEvents?: number; /** Telemetry capture is wired (the usage recorder + hook exist) — even with 0 events yet. */ telemetryWired?: boolean; /** Agent shell tools (rg/fd/jq/…) not on PATH — surfaces the `aih tools` install step. */ toolsMissing?: number; /** Large repo without a graph path — broad reads would burn the agent budget. */ scaleGraphMissing?: boolean; /** AI CLIs RUNNABLE on this machine (binary on PATH) but NOT wired in this repo. */ installedUntargeted?: string[]; /** This repo's current target set — used to build the "wire them" command. */ targets?: string[]; /** Repo opted into the harness (committed marker) — only an opted-in repo is nagged. */ initialized: boolean; } /** Map a missing managed artifact to the exact command that creates it. */ export declare function commandForArtifact(name: string): string; /** * The ordered list of concrete next-steps (each names its command(s) on their own * copy-pasteable line). Empty when the repo is fully set up. Adoption gaps first, * then telemetry, tools, and untargeted-tool wiring. */ export declare function nextSteps(input: NextStepsInput): string[]; /** * B — reconcile the full-corpus footprint with the per-turn cost. Returns a * one-line clarification, or `undefined` when there's nothing to clarify. */ export declare function budgetClarification(bloat: ContextBloat | undefined, perTurn: LoadGroupModel | undefined): string | undefined; /** Headline for the Next steps digest. */ export declare function nextStepsHeadline(input: NextStepsInput): string; /** The Next steps panel body (the prominent, self-guiding action list). */ export declare function nextStepsDigest(input: NextStepsInput): string;