/** * Factory for the `plugin.json`-style formats (native `.agents-plugin` and * Claude Code `.claude-plugin`). They share one on-disk layout — a JSON manifest * under a marker directory plus `skills/`, `commands/`, `agents/`, `themes/`, * `hooks/hooks.json` — and differ only in the marker directory, the format id, * and whether `providers` are honored (native-only). Both adapters are produced * from this factory so the shared reader/writer lives in one place. */ import type { PluginFormatAdapter, PluginFormatId } from "./types.js"; /** Component locations that make a directory a plugin even with no manifest. */ export declare const CONVENTIONAL_COMPONENTS: string[]; /** * Everything this adapter resolves, including surfaces that are read from the * manifest rather than auto-discovered. Distinct from * {@link CONVENTIONAL_COMPONENTS}, which drives *detection* — `themes` is parsed * but has never made a directory a plugin on its own. */ export declare const JSON_MANIFEST_READ_PATHS: string[]; interface JsonManifestOptions { id: Extract; /** * Honor the vendor's manifest-optional rule. True for Claude, whose reference * states the manifest is optional for marketplace and `--plugin-dir` plugins. */ allowManifestless?: boolean; /** Marker subdirectory, e.g. ".agents-plugin". */ manifestDir: string; /** Workspace-level artifact root, e.g. ".agents" / ".claude" (skills/, agents/, commands/ live under it). */ workspaceRoot: string; precedence: number; label: string; /** Native honors `providers`; the Claude-compat path ignores them. */ supportsProviders: boolean; } export declare function createJsonManifestAdapter(opts: JsonManifestOptions): PluginFormatAdapter; export {}; //# sourceMappingURL=jsonManifest.d.ts.map