/** * Composite planning view - aggregates multiple task queries for planning. * @task T4914 * @epic T4454 */ import type { Task } from '@cleocode/contracts'; import { type EngineResult } from '../engine-result.js'; /** In-progress epic entry. */ export interface InProgressEpic { epicId: string; epicTitle: string; activeTasks: number; completionPercent: number; } /** Ready task entry with leverage analysis. */ export interface ReadyTask extends Pick { epicId: string; leverage: number; score: number; reasons: string[]; } /** Blocked task entry. */ export interface BlockedTask extends Pick { blockedBy: string[]; blocksCount: number; } /** Open bug entry. */ export interface OpenBug extends Pick { epicId: string; } /** Planning metrics. */ export interface PlanMetrics { totalEpics: number; activeEpics: number; totalTasks: number; actionable: number; blocked: number; openBugs: number; avgLeverage: number; } /** Composite planning view result. */ export interface PlanResult { inProgress: InProgressEpic[]; ready: ReadyTask[]; blocked: BlockedTask[]; openBugs: OpenBug[]; metrics: PlanMetrics; } /** * Build a composite plan with canonical hard-dependency evidence. * * @remarks * Candidate selection, hierarchy and metrics retain the active query population. * A separate lookup resolves explicit external dependencies, including archived * records. Missing or cancelled dependencies remain blockers; required read * failures propagate rather than returning an apparently healthy empty plan. * * @param projectRoot - Explicit owning project root. * @returns Ranked candidates, unresolved blockers and selected-population metrics. * @throws Error when required task or dependency evidence cannot be read. * @example * ```ts * const plan = await coreTaskPlan(projectRoot); * ``` * @task T4914 */ export declare function coreTaskPlan(projectRoot: string): Promise; /** * Compute a ranked plan: in-progress epics, ready tasks, blockers, bugs. * Wrapped in EngineResult for use by the dispatch layer. * * @param projectRoot - Absolute path to the project root * @returns EngineResult with the plan data * * @task T1568 * @epic T1566 */ export declare function taskPlan(projectRoot: string): Promise; //# sourceMappingURL=plan.d.ts.map