/** * The one native skill copy Skills supports beside its owned skills-cli bridge: * the Cua Driver GUI-automation skill the Cua app installs into Claude's user * skills folder. The owner decided to keep that copy and accept it explicitly * instead of retiring it, without relaxing the general unmanaged-copy or * symlink refusals. * * Identity is deliberately not a path allowlist. A copy is accepted only when * all of these hold: * - it is the exact canonical Claude user skill directory below; * - it is a real directory tree with no link anywhere in it; * - its bytes and POSIX types/modes are identical to the Cua app's own * install target at review time; * - its SKILL.md declares the Cua driver name; * - the bytes equal the content digest reviewed and pinned in the policy. * The first plan that observes the exact pair is the review: it records the * digest in the plan/policy rather than skipping the copy silently. The digest * then binds the ongoing identity; the Cua source comparison is review-time * provenance, not a per-hook re-check, and POSIX modes are not part of the * digest. A Cua update that changes the bytes is visible drift until an * operator explicitly re-reviews it; it is never adopted silently. */ export declare const CUA_DRIVER_NATIVE_ALLOWANCE: Readonly<{ id: "cua-driver"; agent: "claude"; name: "cua-driver"; relativePath: readonly [".claude", "skills", "cua-driver"]; relativeSource: readonly [".cua-driver", "skills", "cua-driver"]; }>; /** One reviewed, explicitly recorded native skill allowance. */ export interface NativeSkillAllowance { /** Reviewed allowance identity. Only the shipped Cua driver identity is understood. */ id: "cua-driver"; agent: "claude"; name: "cua-driver"; /** Canonical Claude-side skill directory. */ path: string; /** Pinned content identity of the allowed copy (tree hash). */ treeSha256: string; /** Canonical Cua app install target the reviewed copy equals. */ source: string; /** The Cua source tree hash recorded at review; must equal treeSha256. */ sourceTreeSha256: string; } /** The two canonical directories for this home: the Claude-side copy and the * Cua app install target it must equal. */ export declare function cuaDriverNativePaths(context: { home: string; canonical: (path: string) => string; }): { path: string; source: string; }; /** A reviewable allowance row for the exact Cua driver tree that was observed. */ export declare function buildCuaDriverNativeAllowance(context: { home: string; canonical: (path: string) => string; }, treeSha256: string): NativeSkillAllowance; /** A Cua driver document carries the shipped frontmatter name. The vendor * marker is checked in addition to, never instead of, the content identity. */ export declare function isCuaDriverSkillDocument(text: string): boolean; /** * Normalize only the exact reviewed Cua driver identity for this home. A policy * row that names any other agent, path, source or digest shape is ignored, so a * hand-edited or extended policy cannot turn the allowance into a path list. * Rows are bounded and deduplicated by canonical path. */ export declare function normalizeNativeSkillAllowances(value: unknown, context: { home: string; canonical: (path: string) => string; }): NativeSkillAllowance[]; /** The reviewed allowance an inventoried copy matches exactly, or undefined. */ export declare function matchingNativeSkillAllowance(entry: { agent: string; path: string; hash: string; managed: boolean; vendor: boolean; bridge?: boolean; }, allowances: readonly NativeSkillAllowance[]): NativeSkillAllowance | undefined;