import { type ACodeCommandSpec, type ACodePluginBridge, type PluginCatalogSnapshot, type PluginInvokeContext, type PluginManageRequest, type PluginManageResult, type PluginSummary, type PluginToolInvocationResult, type PluginToolSchema, type JsonObject } from "@agentswork/acode"; import { type PluginEventMessage, type PluginEventPriority } from "./plugin-event-buffer.js"; export declare const BUILTIN_PLUGIN_NAME = "plugin-manager"; export declare const BUILTIN_PLUGIN_DESCRIPTION = "\u7CFB\u7EDF\u5185\u7F6E\uFF1A\u7BA1\u7406\u63D2\u4EF6\u7684\u751F\u547D\u5468\u671F\uFF08\u5B89\u88C5/\u5378\u8F7D/\u542F\u505C/\u91CD\u8F7D\uFF09\uFF1B\u5F00\u53D1\u63D2\u4EF6\u7528\u5185\u7F6E /create-plugin \u547D\u4EE4"; export declare const BUILTIN_PLUGIN_MANAGE_DESC = "\u300C\u63D2\u4EF6\u7BA1\u7406\u63D2\u4EF6\u300D\u7684\u751F\u547D\u5468\u671F\u5DE5\u5177\uFF1A\u7BA1\u7406\u63D2\u4EF6\uFF08\u5B89\u88C5/\u5378\u8F7D/\u91CD\u8F7D/\u542F\u505C/\u5217\u8868\uFF09\u3002\u4EC5\u5F53\u7528\u6237\u660E\u786E\u8981\u6C42\u5B89\u88C5\u3001\u79FB\u9664\u6216\u4FEE\u590D\u63D2\u4EF6\u65F6\u4F7F\u7528\u3002\n- action=list\uFF1A\u5217\u51FA\u5DF2\u5B89\u88C5\u63D2\u4EF6\uFF08\u72B6\u6001\u3001\u76D1\u542C\u5668\u5065\u5EB7\u3001\u5DE5\u5177\u6570\uFF09\u3002\n- action=install\uFF1Asource \u4E3A\u63D2\u4EF6\u6765\u6E90\uFF0C\u5F53\u524D\u652F\u6301 \"local:<\u4EFB\u610F\u63D2\u4EF6\u76EE\u5F55\u7EDD\u5BF9\u8DEF\u5F84>\"\uFF08\u4E0D\u505A\u76EE\u5F55\u4F4D\u7F6E\u9650\u5236\uFF09\uFF1Bconfig \u4F20\u63D2\u4EF6 manifest \u91CC userConfig \u58F0\u660E\u7684\u914D\u7F6E\u503C\u3002\u5B89\u88C5\u65F6\u4F1A\u5148\u628A\u8BE5\u76EE\u5F55\u79FB\u52A8\u5230\u672C agent \u52A0\u8F7D\u63D2\u4EF6\u7684\u4F4D\u7F6E\uFF0C\u518D\u52A0\u8F7D\u79FB\u52A8\u540E\u7684\u526F\u672C\uFF08\u79FB\u52A8\u540E\u6E90\u76EE\u5F55\u4E0D\u518D\u4FDD\u7559\uFF09\uFF0C\u5B89\u88C5\u540E\u7ACB\u5373\u751F\u6548\uFF1A\u4E0B\u4E00\u6B21 poll_message \u7684 pluginCatalog \u5373\u53EF\u89C1\u3002\n- action=reload\uFF1A\u91CD\u8F7D\u6307\u5B9A\u63D2\u4EF6\uFF08\u6539\u8FC7\u63D2\u4EF6\u6587\u4EF6\u540E\u4F7F\u7528\uFF09\uFF0C\u539F\u5B50\u6362\u88C5\uFF0C\u76D1\u542C\u5668\u91CD\u542F\u3002\n- action=enable / disable\uFF1A\u505C\u7528/\u542F\u7528\uFF08disable \u4FDD\u7559\u5B89\u88C5\u4E0E\u914D\u7F6E\uFF0C\u4EC5\u505C\u6B62\u76D1\u542C\u4E0E\u5DE5\u5177\u8C03\u7528\uFF09\u3002\n- action=uninstall\uFF1A\u5378\u8F7D\u5E76\u5220\u9664\u63D2\u4EF6\u76EE\u5F55\uFF08\u4E0D\u53EF\u9006\uFF0C\u9700\u7528\u6237\u660E\u786E\u8981\u6C42\uFF09\u3002"; export declare function getBuiltinCommandDir(): string; export interface PluginUserConfigField { key: string; type?: "string" | "number" | "boolean"; required?: boolean; sensitive?: boolean; description?: string; default?: string; } export interface PluginHandlerDef { type: "process" | "module" | "mcp"; command?: string; shell?: boolean; stdin?: "none" | "params"; timeoutMs?: number; module?: string; export?: string; } export interface PluginToolDef { name: string; title?: string; description: string; inputSchema?: Record; handler: PluginHandlerDef; } export interface PluginTransportDef { type: "command-stream" | "poll-command" | "http-callback"; command?: string; intervalMs?: number; restartBackoffMs?: number; } export interface PluginListenerDef { event: string; description?: string; transport: PluginTransportDef; delivery?: "poll" | "force" | "wake"; priority?: PluginEventPriority; matcher?: Record>; dedupKey?: string; toolHints?: string[]; promptTemplate?: string; } export interface PluginManifest { name: string; version?: string; description?: string; author?: Record; tools?: string; listeners?: string; commands?: string; userConfig?: PluginUserConfigField[]; [key: string]: unknown; } export declare function validateAgainstSchema(schema: unknown, value: unknown, path?: string): string[]; export interface PluginManagerOptions { rootDir?: string; runtimeRootDir?: string; } export declare class PluginManager { private agents; private readonly rootDir; private readonly runtimeRootDir?; private moduleNonce; constructor(options?: PluginManagerOptions); forAgent(agentId: string): ACodePluginBridge; setOnPluginsChanged(cb: (agentId: string) => void): void; private onPluginsChanged?; private notifyPluginsChanged; getCommandDirs(agentId: string): Promise; getPluginCommands(agentId: string): Promise; private parsePluginCommandDir; private parseCommandDir; list(agentId: string): Promise; private deployedPluginVersion; getCatalog(agentId: string): Promise; getToolSchema(agentId: string, qualifiedName: string): Promise; invokeTool(agentId: string, pluginName: string, toolName: string, params: JsonObject, ctx?: PluginInvokeContext): Promise; private buildManageRequest; private executeHandler; private invokeProcessHandler; private invokeModuleHandler; private buildPluginEnv; manage(agentId: string, request: PluginManageRequest): Promise; private doManage; private installPlugin; installFromZip(agentId: string, zipBuffer: Buffer, originalName: string, config?: Record): Promise; private installFromDirectory; private uninstallPlugin; private reloadPlugin; private setEnabled; private deployedDir; private deployedManifestFile; private deployedPluginDir; private legacySharedDir; private readSharedManifest; private writeSharedManifest; private migrateLegacySharedIfNeeded; private deployedPluginHealthy; private runtimeDirFor; private runtimeLinkPath; private ensureRuntimeLink; private removeRuntimeLink; saveSharedPlugin(zipBuffer: Buffer, originalName: string, defaultEnabled?: boolean, sha256?: string): Promise<{ ok: boolean; error?: string; pluginName?: string; }>; private deployPluginZipToPersistentDir; private suspendDeployedPluginAcrossAgents; applySharedToKnownAgents(): Promise>; private syncSharedIntoStateQueued; private effectiveSharedEnabled; private templatePullInFlight; private backgroundTemplatePulls; private pullTemplatePluginsFromCapabilities; private queueTemplatePull; private syncSharedIntoState; private cleanupRuntimeDir; applyCapabilities(agentId: string): Promise; exposePlugin(agentId: string, plugin: string): void; drainEvents(agentId: string, opts?: { maxPerKey?: number; }): Promise<{ revision: number; events: PluginEventMessage[]; catalog: PluginCatalogSnapshot | null; compactionSeq: number; }>; private consumeExposedCatalog; private pushDeprecatedNotice; markAgentCompacted(agentId: string): void; enqueueExternalEvent(agentId: string, pluginName: string, payload: Record): Promise<{ ok: boolean; error?: string; }>; private bumpCatalogRevision; private agentState; private hydrate; private doHydrate; private installedFile; private persistInstalled; private sensitiveKeysOf; private stripSensitiveValues; private secretsFile; private readSecrets; private persistSecrets; private readJsonFile; private loadManifestOnly; private validateUserConfigValues; private loadPluginFromDir; private ensureListenersRunning; private startAllListeners; private stopAllListeners; private startListener; private spawnListenerChild; private scheduleListenerRestart; private pollListenerOnce; private stopListener; private handleListenerLine; private enqueueEvent; private requiredParamsOf; private toSummary; getLogs(agentId: string, pluginName: string): Promise<{ ok: boolean; error?: string; logs: string[]; }>; stopAgent(agentId: string): Promise; stopAll(): Promise; listDeployed(): Promise>; deployedDefaultEnabled(): Record; removeDeployedPlugin(pluginName: string): Promise<{ ok: boolean; error?: string; }>; } export declare function isValidPluginName(name: unknown): name is string; export declare function validateManifest(manifest: Record): string | null; export declare function renderCommandArgv(command: string, lookup: Record): string[]; export declare const pluginManager: PluginManager; export declare const reconcilePluginsDefaultsFromDeployed: () => number;