import type { LoopPosition } from '@manehorizons/cadence-types'; import { type LegalMove } from '../progress.js'; import type { CommandIO, CommandResult } from './io.js'; /** * `cadence next` — phase 206 T2. schemaVersion:1 JSON contract (AC-2): * `{schemaVersion, position, remainingTasks, blockedOn, legalMoves[]}`. * `position` is the overall loop position (`state.loopPosition`); * `remainingTasks`/`blockedOn` are top-level convenience fields that mirror * the top-ranked move's (`legalMoves[0]`) own fields of the same name — per * T1's implementer's note these are assembled here, not new fields on * `nextAction()`'s return. */ export interface NextReport { schemaVersion: 1; position: LoopPosition; remainingTasks: string[]; blockedOn: string[]; legalMoves: LegalMove[]; } /** * `cadence next` — read-only ranked legal moves at the current loop position * (phase 206). Sourced entirely from the extended `nextAction()` (T1) via a * hint-populated call; never mutates `.cadence/` state. * * Relocated from `cli/commands/next.ts` into `services/next.ts` (phase 221 * T3) so `mcp/tools.ts` can import it directly — core never imports host * code, but MCP is part of core and previously could not reach this * `cli/commands/`-only logic. Parameter order normalized to * `(repoRoot, args, io)` to match every other `services/*.ts` module; the * CLI's own behavior, output text, flags, and exit codes are unchanged. */ export declare function nextService(repoRoot: string, args: { json?: boolean; } | undefined, io: CommandIO): Promise; //# sourceMappingURL=next.d.ts.map