import type { ConfigDiagnostic } from "../domain/config-diagnostics.js"; import type { NormalizedPiStyleConfig } from "../domain/config-types.js"; export interface DoctorOperationalState { readonly compatibility?: Readonly>; readonly provider?: Readonly>; readonly installations?: Readonly>; readonly authorization?: Readonly>; } export interface DoctorState { readonly config: NormalizedPiStyleConfig; readonly diagnostics: readonly ConfigDiagnostic[]; readonly sources?: Readonly>; readonly surfaces: Readonly>; readonly piVersion?: string; readonly compatibility?: string; readonly operational?: DoctorOperationalState; } export function createDoctor(state: DoctorState): Readonly> { return Object.freeze({ config: Object.freeze({ preset: state.config.preset, enabled: state.config.enabled, placement: state.config.placement, statusLine: state.config.statusLine.enabled ? "enabled" : "disabled", editor: state.config.editor.enabled ? "enabled" : "disabled", startup: state.config.startup.mode, }), diagnostics: state.diagnostics, sources: state.sources ?? {}, surfaces: state.surfaces, ...(state.piVersion ? { piVersion: state.piVersion } : {}), ...(state.operational?.compatibility && typeof state.operational.compatibility.piVersion === "string" ? { piVersion: state.operational.compatibility.piVersion } : {}), ...(state.operational?.compatibility && typeof state.operational.compatibility.versionRange === "string" ? { piVersionRange: state.operational.compatibility.versionRange } : {}), ...(state.compatibility ? { compatibility: state.compatibility } : {}), ...(state.operational ? { operational: Object.freeze({ ...(state.operational.compatibility ? { compatibility: state.operational.compatibility } : {}), ...(state.operational.provider ? { provider: state.operational.provider } : {}), ...(state.operational.installations ? { installations: state.operational.installations } : {}), ...(state.operational.authorization ? { authorization: state.operational.authorization } : {}), }), } : {}), }); }