import type { SkillTarget } from './paths'; export type SkillAction = 'create' | 'update' | 'unchanged' | 'conflict'; export interface TargetPlan { target: SkillTarget; action: SkillAction; oldVersion: string | null; newVersion: string | null; isSymlink: boolean; /** Why a `conflict` was raised — surfaced to the user. */ conflictReason?: string; } export interface FilePlanInput { target: SkillTarget; /** Freshly downloaded SKILL.md body. */ fetched: string; /** Current on-disk content, or null when the file is absent. */ current: string | null; /** True when the file or its skill directory is a symlink. */ isSymlink: boolean; /** `--force`: overwrite user-modified files and write through symlinks. */ force: boolean; } /** * Plan a `copy`/`canonical` target (a real SKILL.md file). Idempotent: * byte-identical content is a no-op. We own files whose frontmatter `name` is * `a14y`; a differing foreign file (or a symlink we'd write through) is a * conflict the user resolves with `--force`. */ export declare function planFile(input: FilePlanInput): TargetPlan; export interface LinkPlanInput { target: SkillTarget; /** Version of the freshly downloaded skill (for reporting). */ fetchedVersion: string | null; /** Current state of the symlink path. */ existing: { kind: 'absent' | 'symlink' | 'other'; linkTarget?: string | null; }; force: boolean; } /** Plan a `link` target (a symlink at an agent's `a14y` dir → the canonical dir). */ export declare function planLink(input: LinkPlanInput): TargetPlan;