/** * The `Next steps:` block `aidlc gate` and `aidlc transition` print on failure * (say-what-to-do-next/AC-6 … AC-10). * * Both commands used to print what was wrong and stop. The worst case was * structural: `aidlc gate` fails on an open phase by design, because `aidlc * transition` is the step that marks it complete, and nothing said so. * * Pure: blockers in, strings out. The commands decide what the blockers are * from the structured results they already hold, and print the block in human * mode only — `--json` stays byte-identical (AC-11). * * @module */ import type { Blocker } from './types.js'; /** Who is reading, and about what. */ export interface NextStepsContext { command: 'gate' | 'transition'; instance: string; /** The phase the command checked. */ phase: string; /** * Running in CI. Changes only what `aidlc gate` suggests: CI can edit no * state, so it is told nothing it would have to run (AC-9). */ ci: boolean; } /** * True when the `CI` environment variable says so. * * GitHub Actions, GitLab, CircleCI, Travis and Buildkite all set it. `false` * and `0` are read as unset, because people write `CI=false` to turn it off. */ export declare function isCi(env: NodeJS.ProcessEnv): boolean; /** * One step per kind of blocker present, then how to check again. * * Any number of blockers of one kind give one step naming all of them: ten * open tasks are one thing to do, not ten (AC-6). * * @returns Steps without numbering; empty when there is nothing to fix. */ export declare function nextSteps(blockers: Blocker[], ctx: NextStepsContext): string[]; /** * Render steps in the format `aidlc review` already prints: a heading, then * numbered lines. Empty in, empty out, so a caller can append unconditionally. */ export declare function formatNextSteps(steps: string[]): string; //# sourceMappingURL=next-steps.d.ts.map