import type { OperationPlan, SpecRequirement, SpecScenario, SprintFile } from '../types'; export interface PlanArgs { from: string; scope: string | null; dryRun: boolean; help: boolean; updateActive: boolean; roadmap: boolean; yes: boolean; digest: string | null; } export interface LeanPlanInput { scope: string; title: string; objective: string; successCriteria: string[]; spec: { requirements: SpecRequirement[]; nonGoals: string[]; openQuestions: string[]; }; roadmap: { plannedSprintCount: number; sizingRationale: string; sprints: Array<{ n: number; slug: string; title: string; }>; }; } interface LeanSprintTaskInput { id: string; title: string; description: string; files_to_touch: string[]; context: string; acceptance_criteria: string[]; depends_on: string[]; scenario_refs: string[]; } interface LeanSprintPhaseInput { id: string; title: string; objective: string; tasks: LeanSprintTaskInput[]; } export interface LeanSprintInput { sprint: { n: number; slug: string; title: string; objective: string; }; phases: LeanSprintPhaseInput[]; definitionOfDone: string[]; scenarios: SpecScenario[]; } /** * Mode is detected from scope state, not from the `--from` file shape: a scope with no sprint.json * yet is init mode; a scope with a valid sprint.json that has no active sprint and is ready * (handoff.nextAction is plan_sprint or await_scope_completion) is sprint mode. Both modes need a resolved scope first * (from --kyro-scope, or the lean file's own "scope" field for init mode), so that resolution * happens once, up front, before we know which mode we are in. */ export declare function runPlanCommand(rawArgs: string[]): void; export declare function buildPlanInitPlan(scope: string, input: LeanPlanInput): { sprint: SprintFile; plan: OperationPlan[]; }; /** * Sprint mode: materialize the next `activeSprint` from a lean sprint-plan file, mutating a deep * clone of the current sprint.json (mirrors record-evidence's clone approach). Writes only * sprint.json — kyro.json is untouched (the scope is already registered from init mode). */ export declare function buildPlanSprintPlan(scope: string, current: SprintFile, input: LeanSprintInput): { sprint: SprintFile; plan: OperationPlan[]; }; export {}; //# sourceMappingURL=plan.d.ts.map