import { z } from "zod"; /** * Schema for ue-mcp.plugin.yml, the author-side declaration shipped inside * each plugin npm package. Resolved from node_modules; never authored by the * end user. */ declare const ParamTypeSchema: z.ZodEnum<["string", "number", "boolean", "object", "array"]>; export type ManifestParamType = z.infer; declare const SchemaFieldSchema: z.ZodObject<{ type: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>; export type ManifestSchemaField = z.infer; /** * What a plugin action does to the addressed editor, in the plugin author's * own words. Optional because manifests written before this existed are still * valid; a manifest that stays silent has its effect inferred from the action * name, which is a guess and is recorded as one. */ export declare const ActionEffectSchema: z.ZodEnum<["read", "mutate", "unknown"]>; declare const InjectActionSchema: z.ZodObject<{ task: z.ZodString; description: z.ZodOptional; effect: z.ZodOptional>; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; export type ManifestInjectAction = z.infer; /** * One action contributed by a `provides:` entry. Same shape as inject but * lives under a plugin-owned category, not a built-in one, so action names * are NOT prefixed - the category itself is the namespace. */ declare const ProvidedActionSchema: z.ZodObject<{ task: z.ZodString; description: z.ZodOptional; effect: z.ZodOptional>; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; export type ManifestProvidedAction = z.infer; declare const ProvidedCategorySchema: z.ZodObject<{ description: z.ZodOptional; actions: z.ZodRecord; effect: z.ZodOptional>; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>>; }, "strip", z.ZodTypeAny, { actions: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }, { actions: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }>; export type ManifestProvidedCategory = z.infer; /** * Native UE C++ module that ships with this plugin. When present, the CLI * copies `source/` into the user's project Plugins/ at install time and * tracks the deposit for clean uninstall. The plugin's StartupModule is * expected to register handlers via UEMCP::RegisterExternalHandler (see * MCPHandlerRegistration.h shipped under the bridge's Public/). * * nativeModule: * uePluginName: PIE_Studio * minBridgeApi: 1 * source: ue/Plugins/PIE_Studio * handlers: * inject_input: { description: "..." } */ declare const NativeModuleSchema: z.ZodObject<{ uePluginName: z.ZodString; minBridgeApi: z.ZodNumber; source: z.ZodString; supportedEngineVersions: z.ZodDefault>; category: z.ZodOptional; categoryDescription: z.ZodOptional; handlers: z.ZodDefault; timeoutSeconds: z.ZodOptional; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { description?: string | undefined; schema?: Record | undefined; timeoutSeconds?: number | undefined; }, { description?: string | undefined; schema?: Record | undefined; timeoutSeconds?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { source: string; uePluginName: string; minBridgeApi: number; supportedEngineVersions: string[]; handlers: Record | undefined; timeoutSeconds?: number | undefined; }>; category?: string | undefined; categoryDescription?: string | undefined; }, { source: string; uePluginName: string; minBridgeApi: number; category?: string | undefined; supportedEngineVersions?: string[] | undefined; categoryDescription?: string | undefined; handlers?: Record | undefined; timeoutSeconds?: number | undefined; }> | undefined; }>; export type ManifestNativeModule = z.infer; export declare const PluginManifestSchema: z.ZodObject<{ actionPrefix: z.ZodString; minServerVersion: z.ZodOptional; uePluginDependency: z.ZodOptional; inject: z.ZodDefault; effect: z.ZodOptional>; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>>>>; provides: z.ZodDefault; actions: z.ZodRecord; effect: z.ZodOptional>; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }, { task: string; description?: string | undefined; schema?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>>; }, "strip", z.ZodTypeAny, { actions: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }, { actions: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }>>>; nativeModule: z.ZodOptional>; category: z.ZodOptional; categoryDescription: z.ZodOptional; handlers: z.ZodDefault; timeoutSeconds: z.ZodOptional; schema: z.ZodOptional, z.ZodArray, "atleastone">]>>; required: z.ZodOptional; description: z.ZodOptional; }, "strip", z.ZodTypeAny, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }, { type?: "string" | "number" | "boolean" | "object" | "array" | ["string" | "number" | "boolean" | "object" | "array", ...("string" | "number" | "boolean" | "object" | "array")[]] | undefined; description?: string | undefined; required?: boolean | undefined; }>>>; }, "strip", z.ZodTypeAny, { description?: string | undefined; schema?: Record | undefined; timeoutSeconds?: number | undefined; }, { description?: string | undefined; schema?: Record | undefined; timeoutSeconds?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { source: string; uePluginName: string; minBridgeApi: number; supportedEngineVersions: string[]; handlers: Record | undefined; timeoutSeconds?: number | undefined; }>; category?: string | undefined; categoryDescription?: string | undefined; }, { source: string; uePluginName: string; minBridgeApi: number; category?: string | undefined; supportedEngineVersions?: string[] | undefined; categoryDescription?: string | undefined; handlers?: Record | undefined; timeoutSeconds?: number | undefined; }> | undefined; }>>; knowledge: z.ZodDefault>; tasks: z.ZodDefault; }, "strip", z.ZodTypeAny, { class_path: string; description?: string | undefined; }, { class_path: string; description?: string | undefined; }>>>; flows: z.ZodDefault; group: z.ZodOptional; steps: z.ZodRecord; flow: z.ZodOptional; options: z.ZodOptional>; retries: z.ZodOptional; retryDelay: z.ZodOptional; retryOn: z.ZodOptional; }, "strip", z.ZodTypeAny, { options?: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }, { options?: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }>>; }, "strip", z.ZodTypeAny, { description: string; steps: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }>; group?: string | undefined; rollback_on_failure?: boolean | undefined; }, { description: string; steps: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }>; group?: string | undefined; rollback_on_failure?: boolean | undefined; }>>>; guards: z.ZodDefault; scope: z.ZodDefault>; order: z.ZodDefault; before: z.ZodOptional>; }, "strip", z.ZodTypeAny, { options: Record; class_path: string; }, { class_path: string; options?: Record | undefined; }>>; after: z.ZodOptional>; }, "strip", z.ZodTypeAny, { options: Record; class_path: string; }, { class_path: string; options?: Record | undefined; }>>; }, "strip", z.ZodTypeAny, { order: number; scope: "unknown" | "all" | "mutations" | "writes" | "reads"; description?: string | undefined; before?: { options: Record; class_path: string; } | undefined; after?: { options: Record; class_path: string; } | undefined; }, { order?: number | undefined; description?: string | undefined; before?: { class_path: string; options?: Record | undefined; } | undefined; after?: { class_path: string; options?: Record | undefined; } | undefined; scope?: "unknown" | "all" | "mutations" | "writes" | "reads" | undefined; }>, { order: number; scope: "unknown" | "all" | "mutations" | "writes" | "reads"; description?: string | undefined; before?: { options: Record; class_path: string; } | undefined; after?: { options: Record; class_path: string; } | undefined; }, { order?: number | undefined; description?: string | undefined; before?: { class_path: string; options?: Record | undefined; } | undefined; after?: { class_path: string; options?: Record | undefined; } | undefined; scope?: "unknown" | "all" | "mutations" | "writes" | "reads" | undefined; }>>>; }, "strip", z.ZodTypeAny, { actionPrefix: string; flows: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }>; group?: string | undefined; rollback_on_failure?: boolean | undefined; }>; knowledge: Record; tasks: Record; guards: Record; class_path: string; } | undefined; after?: { options: Record; class_path: string; } | undefined; }>; inject: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>>; provides: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }>; uePluginDependency?: string | undefined; minServerVersion?: string | undefined; nativeModule?: { source: string; uePluginName: string; minBridgeApi: number; supportedEngineVersions: string[]; handlers: Record | undefined; timeoutSeconds?: number | undefined; }>; category?: string | undefined; categoryDescription?: string | undefined; } | undefined; }, { actionPrefix: string; flows?: Record | undefined; flow?: string | undefined; task?: string | undefined; retries?: number | undefined; retryDelay?: number | undefined; retryOn?: string | undefined; }>; group?: string | undefined; rollback_on_failure?: boolean | undefined; }> | undefined; uePluginDependency?: string | undefined; minServerVersion?: string | undefined; knowledge?: Record | undefined; tasks?: Record | undefined; guards?: Record | undefined; } | undefined; after?: { class_path: string; options?: Record | undefined; } | undefined; scope?: "unknown" | "all" | "mutations" | "writes" | "reads" | undefined; }> | undefined; inject?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>> | undefined; provides?: Record | undefined; effect?: "read" | "unknown" | "mutate" | undefined; }>; description?: string | undefined; }> | undefined; nativeModule?: { source: string; uePluginName: string; minBridgeApi: number; category?: string | undefined; supportedEngineVersions?: string[] | undefined; categoryDescription?: string | undefined; handlers?: Record | undefined; timeoutSeconds?: number | undefined; }> | undefined; } | undefined; }>; export type PluginManifest = z.infer; /** * Locate the manifest file inside a plugin package directory. Convention is * `ue-mcp.plugin.yml`, but `.yaml` is accepted as a fallback. */ export declare function findManifestPath(pkgDir: string): string | null; /** One manifest subtree removed to keep the rest of the plugin loadable. */ export interface DroppedUnit { /** Dotted manifest path, e.g. `nativeModule.handlers.actor_set`. */ path: string; /** The validation error that cost it, already rendered for a log line. */ reason: string; } export interface ManifestParseResult { manifest: PluginManifest; manifestPath: string; /** Units dropped by salvage. Empty when the manifest validated as authored. */ dropped: DroppedUnit[]; } /** * Validate a manifest, dropping individually-salvageable units rather than * rejecting the whole plugin. Throws (with Zod's full issue dump, as before) * when any error lands outside a droppable unit. */ export declare function parseManifest(raw: unknown): { manifest: PluginManifest; dropped: DroppedUnit[]; }; export declare function loadManifest(pkgDir: string): ManifestParseResult; /** * Compile a manifest schema field map into a Zod object schema. Used to merge * plugin action params into the host category tool's schema. */ export declare function compileSchemaFields(fields: Record | undefined): Record; /** * Compute the prefixed action name as it appears on the injected category * tool: `_`. */ export declare function prefixedActionName(prefix: string, action: string): string; export {};