import { type RequestArtifactRole, type RequestArtifactSummary } from '../artifacts/request-artifact-service.js'; import type { OpenSpecChangeSummary } from '../openspec/openspec-types.js'; import type { CapabilityItem } from '../recommendations/recommendation-types.js'; import { type SkillPresence } from '../skills/skill-presence-service.js'; export type ProjectDashboardRequests = { count: number; byRole: Record; byState: Record; }; export type ProjectDashboardOpenSpec = { exists: boolean; count: number; changes: OpenSpecChangeSummary[]; }; export type ProjectDashboardDoctor = { ok: boolean; passed: number; failed: number; okCount?: number; failCount?: number; lastRunAt?: string; checkIds?: string[]; }; export type DashboardOkPolicy = 'workspace-only' | 'strict'; /** * Resolves the user-facing `ok` field. `workspace-only` (default) returns true * when the runbook / workspace layout is healthy, even if 1-2 non-blocking * doctor checks fail. `strict` returns false when the doctor aggregate fails. * The CLI default is `workspace-only`; `peaks project dashboard --strict` * restores the legacy aggregate semantics. */ export declare function resolveDashboardOk(args: { okPolicy: DashboardOkPolicy; doctor: ProjectDashboardDoctor; runbookHealth: ProjectDashboardRunbookHealth; }): { ok: boolean; okPolicy: DashboardOkPolicy; }; export type ProjectDashboardRunbookHealth = { ok: boolean; required: number; healthy: number; missingRunbook: string[]; applyNoteFailed: string[]; }; export type ProjectDashboardCapabilities = { count: number; sample: Array>; }; export type ProjectDashboardSkillPresence = { active: boolean; fresh: boolean; skill?: string; mode?: string; gate?: string; setAt?: string; }; export type ProjectDashboard = { generatedAt: string; projectRoot: string; ok: boolean; okPolicy: DashboardOkPolicy; requests: ProjectDashboardRequests; openspec: ProjectDashboardOpenSpec; doctor: ProjectDashboardDoctor; runbookHealth: ProjectDashboardRunbookHealth; capabilities: ProjectDashboardCapabilities; skillPresence: ProjectDashboardSkillPresence; }; export type LoadProjectDashboardOptions = { projectRoot: string; sampleCapabilities?: number; clock?: () => string; doctorReport?: { ok: boolean; passed: number; failed: number; }; runbookHealth?: ProjectDashboardRunbookHealth; skillPresence?: SkillPresence | null; okPolicy?: DashboardOkPolicy; }; export declare function loadProjectDashboard(options: LoadProjectDashboardOptions): Promise;