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 { HookLockEntry, KnowledgeLockEntry, McpServerLockEntry, PackLockEntry, RuleLockEntry, SkillLockEntry, SubagentLockEntry } from "../lockfile/index.js"; import { type DesiredConstraintContributor, type DesiredExtensionNode } from "./desired-state-graph.js"; import type { WorkspaceLayout } from "./layout.js"; export type CanonicalObservationStatus = "not-applicable" | "missing" | "missing-resolution" | "constraint-mismatch" | "wrong-origin" | "corrupt" | "incomplete" | "locally-modified" | "materialization-mismatch" | "usable"; export type CanonicalConstraintContributor = DesiredConstraintContributor; interface CanonicalObservationBase { readonly type: ExtensionType; readonly name: string; readonly path?: string; readonly contentIdentity?: string; } export interface CanonicalConstraintMismatchObservation extends CanonicalObservationBase { readonly status: "constraint-mismatch"; readonly authority: { readonly source: "desired-state-graph"; readonly identity: string; readonly locator: string; readonly constraints: ReadonlyArray; }; readonly acceptedVersion?: string; readonly observedVersion?: string; } export type CanonicalObservation = CanonicalConstraintMismatchObservation | (CanonicalObservationBase & { readonly status: Exclude; }); interface ObserveCanonicalArgs { readonly layout: WorkspaceLayout; readonly desired: DesiredExtensionNode; readonly accepted: AcceptedExtensionResolution | undefined; } export type AcceptedExtensionResolution = SkillLockEntry | McpServerLockEntry | SubagentLockEntry | RuleLockEntry | HookLockEntry | KnowledgeLockEntry | PackLockEntry; export declare const canonicalPathForAcceptedExtension: (path: Path.Path, layout: WorkspaceLayout, desired: DesiredExtensionNode, accepted: AcceptedExtensionResolution | undefined) => string | undefined; export declare const observeCanonicalExtension: ({ layout, desired, accepted, }: ObserveCanonicalArgs) => Effect.Effect; export {}; //# sourceMappingURL=canonical-observation.d.ts.map