import * as Effect from "effect/Effect"; import * as FileSystem from "effect/FileSystem"; import * as Path from "effect/Path"; import { type ExtensionType } from "../extensions/index.js"; import type { PackRef } from "../packs/refs.js"; import type { Settings } from "../settings/index.js"; import { type WorkspaceLayout } from "./layout.js"; export type DesiredExtensionOrigin = { readonly type: "settings"; readonly authority?: "sourced"; readonly source: string; readonly enabled: boolean; readonly constraint?: string; } | { readonly type: "settings"; readonly authority: "inline"; readonly source?: undefined; readonly constraint?: undefined; readonly enabled: boolean; } | { readonly type: "pack"; readonly pack: string; readonly manifestPath: string; readonly source: string; readonly constraint: string; readonly enabled: boolean; }; interface DesiredExtensionNodeCommon { readonly type: ExtensionType; readonly name: string; readonly identity: string; readonly enabled: boolean; readonly constraints: ReadonlyArray; readonly origins: ReadonlyArray; } export type DesiredExtensionNode = DesiredExtensionNodeCommon & ({ readonly authority?: "sourced"; readonly source: string; } | { readonly type: "mcp-server"; readonly authority: "inline"; readonly source?: undefined; }); export declare const isInlineDesiredExtension: (node: DesiredExtensionNode) => node is DesiredExtensionNode & { readonly authority: "inline"; }; export declare const isSourcedDesiredExtension: (node: DesiredExtensionNode) => node is DesiredExtensionNode & { readonly source: string; }; export interface DesiredConstraintContributor { readonly source: "settings" | "pack"; readonly range: string; readonly location: string; readonly dependingPack?: string; } export type DesiredStateProblem = { readonly type: "workspace-owner-missing"; readonly extensionType: ExtensionType; readonly name: string; } | { readonly type: "pack-manifest-unavailable"; readonly pack: string; readonly path: string; } | { readonly type: "pack-manifest-invalid"; readonly pack: string; readonly path: string; } | { readonly type: "pack-identity-mismatch"; readonly pack: string; readonly path: string; readonly detail: string; } | { readonly type: "pack-resolution-unavailable"; readonly pack: string; readonly detail: string; } | { readonly type: "pack-manifest-content-mismatch"; readonly pack: string; readonly path?: string; readonly status: string; readonly acceptedVersion: string; readonly acceptedContentIdentity: string; readonly observedVersion?: string; readonly observedContentIdentity?: string; } | { readonly type: "projection-collision"; readonly extensionType: ExtensionType; readonly name: string; readonly identities: ReadonlyArray; } | { readonly type: "constraint-conflict"; readonly extensionType: ExtensionType; readonly name: string; readonly constraints: ReadonlyArray; readonly contributors: ReadonlyArray; }; export interface DesiredStateGraph { readonly complete: boolean; readonly nodes: ReadonlyArray; readonly problems: ReadonlyArray; } export type ProspectivePackRef = Pick; interface DesiredStateGraphArgs { readonly baseDir: string; readonly settings: Settings; readonly layout?: WorkspaceLayout; /** Resolved Pack roots whose manifests supersede the currently materialized copy. */ readonly prospectivePacks?: ReadonlyArray; } export declare const collectDesiredConstraintContributors: (_path: Path.Path, origins: ReadonlyArray) => ReadonlyArray; export declare const buildDesiredStateGraph: ({ baseDir, settings, layout, prospectivePacks, }: DesiredStateGraphArgs) => Effect.Effect; export {}; //# sourceMappingURL=desired-state-graph.d.ts.map