import type { SkillBundleEntry } from "./skill-bundle.js"; import type { SkillSelection } from "../types/skill-selection.js"; export declare const PLUGIN_PROJECTION_MANIFEST = "plugin-projection.json"; export declare const PLUGIN_PROJECTION_LIMITS: Readonly<{ files: 1024; bytes: number; fileBytes: number; metadataBytes: number; registrations: 64; history: 128; }>; export interface PluginPayloadMapping { path: string; kind: "skill" | "command"; /** Digest of the original one-file tree, including its path and mode. */ sourceDigest: string; target: Pick; } interface PluginProjectionFields { agent: "claude"; pluginId: string; payloads: PluginPayloadMapping[]; } interface PluginUpstream { source: string; revision: string; license: string; treeDigest: string; } interface PluginReview { hooks: "reviewed-no-skill-injection"; dependencies: "reviewed-no-retired-payload-dependency"; } export type PluginProjectionManifest = PluginProjectionFields & ({ schemaVersion: 1; upstream: PluginUpstream & { version: string; }; review: PluginReview; } | { schemaVersion: 2; upstream: PluginUpstream & { version: string | null; }; review: PluginReview & { documentation: Array<{ path: string; sourceDigest: string; }>; }; }); export interface PluginFileWitness { path: string; mode: number; size: number; sha256: string; } export interface PluginProjection { manifest: PluginProjectionManifest; payloads: PluginPayloadMapping[]; files: SkillBundleEntry[]; witnesses: PluginFileWitness[]; originalTreeDigest: string; projectionTreeDigest: string; removed: PluginFileWitness[]; } export declare function pluginRefusal(message: string): never; export declare function pluginNeed(value: unknown, message: string): asserts value; export declare const pluginHash: (bytes: string | Uint8Array) => string; export declare function pluginObject(value: unknown): value is Record; export declare function pluginKeys(value: unknown, keys: string[]): asserts value is Record; export declare function pluginText(value: unknown, limit?: number): asserts value is string; export declare function pluginId(value: unknown): asserts value is string; export declare function pluginDigest(value: unknown): asserts value is string; export declare function validatePluginManifest(value: unknown): asserts value is PluginProjectionManifest; export declare function pluginFileWitnesses(entries: SkillBundleEntry[]): PluginFileWitness[]; export declare function pluginTreeDigest(entries: SkillBundleEntry[]): string; /** Pure projection: no filesystem access, upstream commands, package installation or publication. */ export declare function buildPluginProjection(entries: SkillBundleEntry[]): PluginProjection; export {};