/** * Registry and Plugin Manifest Schemas * * Defines Zod schemas for validating registry manifests (registry.json) * and plugin manifests (plugin.json) following SPEC-FORGE-005. */ import { z } from 'zod'; /** * Plugin reference in registry manifest * Points to a plugin's manifest URL with metadata */ export declare const RegistryPluginReferenceSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; manifest_url: z.ZodString; homepage: z.ZodOptional; repository: z.ZodString; license: z.ZodString; tags: z.ZodArray; checksum: z.ZodString; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }, { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }>; export type RegistryPluginReference = z.infer; /** * Registry manifest (registry.json) * Lives at repository root (e.g., fractary/plugins/registry.json) */ export declare const RegistryManifestSchema: z.ZodObject<{ $schema: z.ZodOptional; name: z.ZodString; version: z.ZodString; description: z.ZodString; updated: z.ZodString; plugins: z.ZodArray; repository: z.ZodString; license: z.ZodString; tags: z.ZodArray; checksum: z.ZodString; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }, { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }>, "many">; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; updated: string; plugins: { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }[]; $schema?: string | undefined; }, { name: string; version: string; description: string; updated: string; plugins: { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }[]; $schema?: string | undefined; }>; export type RegistryManifest = z.infer; /** * Generic plugin item (agents, tools, workflows, templates) * All have same base structure with name, version, source URL, checksum */ export declare const PluginItemSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; dependencies: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }>; export type PluginItem = z.infer; /** * Plugin hook definition * Hooks are scripts that execute on specific events */ export declare const PluginHookSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; type: z.ZodEnum<["pre-commit", "post-commit", "pre-push", "post-push", "session-start", "session-end"]>; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; }, "strip", z.ZodTypeAny, { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }, { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }>; export type PluginHook = z.infer; /** * Plugin command definition * Commands are markdown prompts that can be invoked */ export declare const PluginCommandSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; }>; export type PluginCommand = z.infer; /** * Plugin workflow definition * Workflows orchestrate multiple agents in sequence */ export declare const PluginWorkflowSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; dependencies: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }>; export type PluginWorkflow = z.infer; /** * Plugin template definition * Templates provide reusable structures for specs, configs, etc. */ export declare const PluginTemplateSchema: z.ZodObject<{ name: z.ZodString; version: z.ZodString; description: z.ZodString; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; }>; export type PluginTemplate = z.infer; /** * Plugin configuration * Default settings for LLM and permissions */ export declare const PluginConfigSchema: z.ZodOptional; model: z.ZodString; }, "strip", z.ZodTypeAny, { provider: "anthropic" | "openai" | "google"; model: string; }, { provider: "anthropic" | "openai" | "google"; model: string; }>>; permissions: z.ZodOptional>; write: z.ZodOptional>; execute: z.ZodOptional>; }, "strip", z.ZodTypeAny, { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; }, { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; }>>; }, "strip", z.ZodTypeAny, { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; }, { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; }>>; export type PluginConfig = z.infer; /** * Plugin manifest (plugin.json) * Lives in each plugin directory (e.g., fractary/plugins/faber-plugin/plugin.json) */ export declare const PluginManifestSchema: z.ZodObject<{ $schema: z.ZodOptional; name: z.ZodString; version: z.ZodString; description: z.ZodString; author: z.ZodString; homepage: z.ZodOptional; repository: z.ZodString; license: z.ZodString; tags: z.ZodArray; agents: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }>, "many">>; tools: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }>, "many">>; workflows: z.ZodOptional>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }, { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }>, "many">>; templates: z.ZodOptional, "many">>; hooks: z.ZodOptional; source: z.ZodString; checksum: z.ZodString; size: z.ZodNumber; }, "strip", z.ZodTypeAny, { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }, { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }>, "many">>; commands: z.ZodOptional, "many">>; config: z.ZodOptional; model: z.ZodString; }, "strip", z.ZodTypeAny, { provider: "anthropic" | "openai" | "google"; model: string; }, { provider: "anthropic" | "openai" | "google"; model: string; }>>; permissions: z.ZodOptional>; write: z.ZodOptional>; execute: z.ZodOptional>; }, "strip", z.ZodTypeAny, { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; }, { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; }>>; }, "strip", z.ZodTypeAny, { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; }, { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { name: string; version: string; description: string; repository: string; license: string; tags: string[]; author: string; homepage?: string | undefined; $schema?: string | undefined; agents?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; tools?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; workflows?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; templates?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; hooks?: { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; commands?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; config?: { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; } | undefined; }, { name: string; version: string; description: string; repository: string; license: string; tags: string[]; author: string; homepage?: string | undefined; $schema?: string | undefined; agents?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; tools?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; workflows?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; templates?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; hooks?: { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; commands?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; config?: { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; } | undefined; }>; export type PluginManifest = z.infer; /** * Validate and parse registry manifest * @throws ZodError if validation fails */ export declare function validateRegistryManifest(data: unknown): RegistryManifest; /** * Validate and parse plugin manifest * @throws ZodError if validation fails */ export declare function validatePluginManifest(data: unknown): PluginManifest; /** * Safe validation - returns result object instead of throwing */ export declare function safeValidateRegistryManifest(data: unknown): z.SafeParseReturnType<{ name: string; version: string; description: string; updated: string; plugins: { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }[]; $schema?: string | undefined; }, { name: string; version: string; description: string; updated: string; plugins: { name: string; version: string; description: string; manifest_url: string; repository: string; license: string; tags: string[]; checksum: string; homepage?: string | undefined; }[]; $schema?: string | undefined; }>; /** * Safe validation - returns result object instead of throwing */ export declare function safeValidatePluginManifest(data: unknown): z.SafeParseReturnType<{ name: string; version: string; description: string; repository: string; license: string; tags: string[]; author: string; homepage?: string | undefined; $schema?: string | undefined; agents?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; tools?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; workflows?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; templates?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; hooks?: { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; commands?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; config?: { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; } | undefined; }, { name: string; version: string; description: string; repository: string; license: string; tags: string[]; author: string; homepage?: string | undefined; $schema?: string | undefined; agents?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; tools?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; workflows?: { name: string; version: string; description: string; checksum: string; source: string; size: number; dependencies?: string[] | undefined; }[] | undefined; templates?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; hooks?: { type: "pre-commit" | "post-commit" | "pre-push" | "post-push" | "session-start" | "session-end"; name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; commands?: { name: string; version: string; description: string; checksum: string; source: string; size: number; }[] | undefined; config?: { default_llm?: { provider: "anthropic" | "openai" | "google"; model: string; } | undefined; permissions?: { read?: string[] | undefined; write?: string[] | undefined; execute?: string[] | undefined; } | undefined; } | undefined; }>; //# sourceMappingURL=manifest.d.ts.map