openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
966 lines • 51.5 kB
TypeScript
import { i as OpenClawConfig, p as PluginInstallRecord } from "./types.openclaw-DBHlrrVj.js";
import { _ as PluginDiagnostic, i as PluginDiscoveryResult, l as PluginPackageChannel, r as PluginCandidate, t as PluginManifestRecord, u as PluginPackageInstall } from "./manifest-registry-C_uwfra_.js";
//#region src/plugins/compat/registry.d.ts
declare const PLUGIN_COMPAT_RECORDS: readonly [{
readonly code: "legacy-before-agent-start";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-24";
readonly warningStarts: "2026-04-24";
readonly removeAfter: "2026-07-24";
readonly replacement: "`before_model_resolve` and `before_prompt_build` hooks";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["plugin hooks", "plugins inspect", "status diagnostics"];
readonly diagnostics: readonly ["plugin compatibility notice"];
readonly tests: readonly ["src/plugins/status.test.ts", "src/plugins/contracts/shape.contract.test.ts"];
readonly releaseNote: "Legacy `before_agent_start` hook compatibility remains wired while plugins migrate to modern hook stages.";
}, {
readonly code: "legacy-deactivate-hook-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-05-16";
readonly deprecated: "2026-05-16";
readonly warningStarts: "2026-05-16";
readonly removeAfter: "2026-08-16";
readonly replacement: "`gateway_stop` hook";
readonly docsPath: "/plugins/hooks#upcoming-deprecations";
readonly surfaces: readonly ["api.on(\"deactivate\", ...)", "plugin typed hook registration"];
readonly diagnostics: readonly ["plugin runtime compatibility warning"];
readonly tests: readonly ["src/plugins/loader.test.ts"];
readonly releaseNote: "`api.on(\"deactivate\", ...)` remains wired as a deprecated compatibility alias while plugins migrate to `gateway_stop`.";
}, {
readonly code: "legacy-subagent-spawning-hook";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-05-30";
readonly deprecated: "2026-05-30";
readonly warningStarts: "2026-05-30";
readonly removeAfter: "2026-08-30";
readonly replacement: "`subagent_spawned` for post-launch observation; core session-binding adapters for thread routing";
readonly docsPath: "/plugins/hooks#upcoming-deprecations";
readonly surfaces: readonly ["api.on(\"subagent_spawning\", ...)", "PluginHookSubagentSpawningEvent", "PluginHookSubagentSpawningResult", "SubagentLifecycleHookRunner.runSubagentSpawning"];
readonly diagnostics: readonly ["plugin runtime compatibility warning"];
readonly tests: readonly ["src/plugins/loader.test.ts", "src/plugins/compat/registry.test.ts"];
readonly releaseNote: "`api.on(\"subagent_spawning\", ...)` remains wired only for older plugins; core now owns thread-bound subagent routing.";
}, {
readonly code: "hook-only-plugin-shape";
readonly status: "active";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly replacement: "explicit capability registration";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["plugin shape inspection", "plugins inspect", "status diagnostics"];
readonly diagnostics: readonly ["plugin compatibility notice"];
readonly tests: readonly ["src/plugins/status.test.ts", "src/plugins/contracts/shape.contract.test.ts"];
}, {
readonly code: "deprecated-memory-embedding-provider-api";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-05-21";
readonly deprecated: "2026-05-21";
readonly warningStarts: "2026-05-21";
readonly removeAfter: "2026-08-21";
readonly replacement: "`api.registerEmbeddingProvider(...)` and `contracts.embeddingProviders`";
readonly docsPath: "/plugins/sdk-migration#memory-embedding-provider-api";
readonly surfaces: readonly ["api.registerMemoryEmbeddingProvider(...)", "contracts.memoryEmbeddingProviders", "openclaw/plugin-sdk/memory-core-host-engine-embeddings registerMemoryEmbeddingProvider", "plugins inspect compatibility notices"];
readonly diagnostics: readonly ["plugin compatibility notice", "plugin SDK package guardrail"];
readonly tests: readonly ["src/plugins/status.test.ts", "src/plugins/compat/registry.test.ts", "src/plugins/contracts/plugin-sdk-package-contract-guardrails.test.ts"];
readonly releaseNote: "Memory-specific embedding provider registration remains wired as a deprecated compatibility path while providers migrate to the generic embedding provider contract.";
}, {
readonly code: "legacy-root-sdk-import";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-24";
readonly warningStarts: "2026-04-24";
readonly removeAfter: "2026-07-24";
readonly replacement: "focused `openclaw/plugin-sdk/<subpath>` imports";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk", "openclaw/plugin-sdk/compat"];
readonly diagnostics: readonly ["OPENCLAW_PLUGIN_SDK_COMPAT_DEPRECATED"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-index.test.ts", "src/plugins/contracts/plugin-sdk-root-alias.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "hook.before_tool_call.terminal-block-approval";
readonly status: "active";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-29";
readonly docsPath: "/plugins/hooks";
readonly surfaces: readonly ["before_tool_call block result", "before_tool_call approval result"];
readonly diagnostics: readonly ["hook runner contract probe"];
readonly tests: readonly ["src/plugins/hooks.security.test.ts", "src/agents/agent-tools.before-tool-call.e2e.test.ts"];
}, {
readonly code: "hook.llm-observer.privacy-payload";
readonly status: "active";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-29";
readonly docsPath: "/plugins/hooks";
readonly surfaces: readonly ["llm_input", "llm_output", "agent_end", "allowConversationAccess"];
readonly diagnostics: readonly ["conversation access hook contract probe"];
readonly tests: readonly ["src/agents/cli-runner.reliability.test.ts", "src/config/schema.help.quality.test.ts"];
}, {
readonly code: "api.capture.runtime-registrars";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-29";
readonly docsPath: "/plugins/architecture-internals";
readonly surfaces: readonly ["createCapturedPluginRegistration", "capturePluginRegistration", "OpenClawPluginApi"];
readonly diagnostics: readonly ["runtime registration capture contract probe"];
readonly tests: readonly ["src/plugins/captured-registration.test.ts"];
}, {
readonly code: "channel.runtime.envelope-config-metadata";
readonly status: "active";
readonly owner: "channel";
readonly introduced: "2026-04-29";
readonly docsPath: "/plugins/sdk-channel-plugins";
readonly surfaces: readonly ["api.registerChannel", "channel setup metadata", "channel message envelope"];
readonly diagnostics: readonly ["channel runtime contract probe"];
readonly tests: readonly ["src/plugin-sdk/channel-entry-contract.test.ts", "src/plugins/captured-registration.test.ts"];
}, {
readonly code: "bundled-channel-sdk-compat-facades";
readonly status: "active";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly replacement: "generic channel SDK subpaths or plugin-local `api.ts` / `runtime-api.ts` barrels for new plugins";
readonly docsPath: "/plugins/sdk-overview";
readonly surfaces: readonly ["openclaw/plugin-sdk/discord component message helpers", "openclaw/plugin-sdk/telegram-account resolveTelegramAccount"];
readonly diagnostics: readonly ["plugin SDK compatibility registry"];
readonly tests: readonly ["src/plugin-sdk/discord.test.ts", "src/plugin-sdk/telegram-account.test.ts", "src/plugins/contracts/plugin-sdk-package-contract-guardrails.test.ts"];
}, {
readonly code: "bundled-channel-config-schema-legacy";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-04-28";
readonly warningStarts: "2026-04-28";
readonly removeAfter: "2026-07-28";
readonly replacement: "`openclaw/plugin-sdk/bundled-channel-config-schema` for maintained bundled plugins; plugin-local schemas for third-party plugins";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/channel-config-schema-legacy"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/config-footprint-guardrails.test.ts", "test/extension-test-boundary.test.ts"];
}, {
readonly code: "plugin-sdk-testing-barrel";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-04-28";
readonly warningStarts: "2026-04-28";
readonly removeAfter: "2026-07-28";
readonly replacement: "focused `openclaw/plugin-sdk/*` test subpaths such as `plugin-test-runtime`, `channel-test-helpers`, `test-env`, and `test-fixtures`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/testing"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/compat/registry.test.ts", "scripts/check-no-extension-test-core-imports.ts", "test/extension-test-boundary.test.ts"];
}, {
readonly code: "channel-route-key-aliases";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-04-28";
readonly warningStarts: "2026-04-28";
readonly removeAfter: "2026-07-28";
readonly replacement: "`channelRouteDedupeKey` and `channelRouteCompactKey`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/channel-route channelRouteIdentityKey", "openclaw/plugin-sdk/channel-route channelRouteKey"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugin-sdk/channel-route.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "channel-target-comparable-aliases";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-04-28";
readonly warningStarts: "2026-04-28";
readonly removeAfter: "2026-07-28";
readonly replacement: "`ChannelRouteParsedTarget`, `channelRouteTargetsMatchExact`, `channelRouteTargetsShareConversation`, and `messaging.resolveOutboundSessionRoute` for provider-specific target grammar";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["src/channels/plugins/target-parsing-loaded ComparableChannelTarget", "src/channels/plugins/target-parsing-loaded resolveComparableTargetForLoadedChannel", "src/channels/plugins/target-parsing-loaded comparableChannelTargetsMatch", "src/channels/plugins/target-parsing-loaded comparableChannelTargetsShareRoute"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/channels/plugins/target-parsing.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "channel-explicit-target-parser";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-05-23";
readonly warningStarts: "2026-05-23";
readonly removeAfter: "2026-08-23";
readonly replacement: "`messaging.targetResolver` for target normalization and `messaging.resolveOutboundSessionRoute` for session/thread identity";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["ChannelMessagingAdapter.parseExplicitTarget", "openclaw/plugin-sdk/channel-route ChannelRouteExplicitTarget", "openclaw/plugin-sdk/channel-route ChannelRouteExplicitTargetParser", "openclaw/plugin-sdk/channel-route resolveChannelRouteTargetWithParser", "src/channels/plugins/target-parsing-loaded ParsedChannelExplicitTarget", "src/channels/plugins/target-parsing-loaded parseExplicitTargetForLoadedChannel", "src/channels/plugins/target-parsing-loaded resolveRouteTargetForLoadedChannel"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/channels/plugins/contracts/test-helpers/surface-contract-suite.ts", "src/plugins/compat/registry.test.ts"];
}, {
readonly code: "channel-messaging-targets-subpath";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-28";
readonly deprecated: "2026-05-23";
readonly warningStarts: "2026-05-23";
readonly removeAfter: "2026-08-23";
readonly replacement: "`openclaw/plugin-sdk/channel-targets`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/messaging-targets"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/compat/registry.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "bundled-plugin-allowlist";
readonly status: "active";
readonly owner: "config";
readonly introduced: "2026-04-24";
readonly replacement: "manifest-owned plugin enablement and scoped load plans";
readonly docsPath: "/plugins/architecture";
readonly surfaces: readonly ["plugins.allow", "bundled provider startup", "plugins status"];
readonly diagnostics: readonly ["plugin status report"];
readonly tests: readonly ["src/plugins/status.test.ts", "src/plugins/config-state.test.ts"];
}, {
readonly code: "bundled-plugin-enablement";
readonly status: "active";
readonly owner: "config";
readonly introduced: "2026-04-24";
readonly replacement: "manifest-owned plugin defaults and scoped load plans";
readonly docsPath: "/plugins/architecture";
readonly surfaces: readonly ["plugins.entries", "bundled provider startup", "plugins status"];
readonly diagnostics: readonly ["plugin status report"];
readonly tests: readonly ["src/plugins/status.test.ts", "src/plugins/config-state.test.ts"];
}, {
readonly code: "bundled-plugin-vitest-defaults";
readonly status: "active";
readonly owner: "config";
readonly introduced: "2026-04-24";
readonly replacement: "explicit test plugin config fixtures";
readonly docsPath: "/plugins/architecture";
readonly surfaces: readonly ["Vitest plugin defaults", "bundled provider tests"];
readonly diagnostics: readonly ["test-only compatibility path"];
readonly tests: readonly ["src/plugins/config-state.test.ts"];
}, {
readonly code: "provider-auth-env-vars";
readonly status: "deprecated";
readonly owner: "setup";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-24";
readonly warningStarts: "2026-04-24";
readonly removeAfter: "2026-07-24";
readonly replacement: "`setup.providers[].envVars` and `providerAuthChoices`";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["openclaw.plugin.json providerAuthEnvVars", "provider setup"];
readonly diagnostics: readonly ["manifest compatibility diagnostic"];
readonly tests: readonly ["src/plugins/setup-registry.test.ts", "src/plugins/provider-auth-choices.test.ts"];
}, {
readonly code: "channel-env-vars";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-24";
readonly warningStarts: "2026-04-24";
readonly removeAfter: "2026-07-24";
readonly replacement: "`channelConfigs.<id>.schema` and setup descriptors";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["openclaw.plugin.json channelEnvVars", "channel setup"];
readonly diagnostics: readonly ["manifest compatibility diagnostic"];
readonly tests: readonly ["src/plugins/setup-registry.test.ts", "src/channels/plugins/setup-group-access.test.ts"];
}, {
readonly code: "activation-agent-harness-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "top-level `cliBackends[]` for CLI aliases and future `agentRuntime` ownership metadata";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onAgentHarnesses", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "activation-provider-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "`providers[]` manifest ownership";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onProviders", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "activation-channel-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "`channels[]` manifest ownership";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onChannels", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "activation-command-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "`commandAliases` or command contribution metadata";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onCommands", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "activation-route-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "HTTP route contribution metadata";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onRoutes", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "activation-config-path-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-27";
readonly replacement: "manifest contribution ownership for root config surfaces";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onConfigPaths", "startup plugin selection"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/channel-plugin-ids.test.ts"];
}, {
readonly code: "activation-capability-hint";
readonly status: "active";
readonly owner: "plugin-execution";
readonly introduced: "2026-04-24";
readonly replacement: "manifest contribution ownership";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["activation.onCapabilities", "activation planner"];
readonly diagnostics: readonly ["activation plan compat reason"];
readonly tests: readonly ["src/plugins/activation-planner.test.ts"];
}, {
readonly code: "embedded-harness-config-alias";
readonly status: "deprecated";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-25";
readonly warningStarts: "2026-04-25";
readonly removeAfter: "2026-07-25";
readonly replacement: "`agentRuntime` config naming";
readonly docsPath: "/plugins/sdk-agent-harness";
readonly surfaces: readonly ["agents.defaults.embeddedHarness", "model/provider runtime selection"];
readonly diagnostics: readonly ["agent runtime config compatibility"];
readonly tests: readonly [string];
}, {
readonly code: "agent-harness-sdk-alias";
readonly status: "deprecated";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-25";
readonly warningStarts: "2026-04-25";
readonly removeAfter: "2026-07-25";
readonly replacement: "`openclaw/plugin-sdk/agent-runtime`";
readonly docsPath: "/plugins/sdk-agent-harness";
readonly surfaces: readonly ["openclaw/plugin-sdk/agent-harness", "openclaw/plugin-sdk/agent-harness-runtime"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "embedded-pi-agent-sdk-aliases";
readonly status: "deprecated";
readonly owner: "agent-runtime";
readonly introduced: "2026-05-21";
readonly deprecated: "2026-05-21";
readonly warningStarts: "2026-05-21";
readonly removeAfter: "2026-08-21";
readonly replacement: "`runEmbeddedAgent` and `EmbeddedAgent*` SDK/runtime names";
readonly docsPath: "/plugins/sdk-runtime";
readonly surfaces: readonly ["api.runtime.agent.runEmbeddedPiAgent", "openclaw/extension-api runEmbeddedPiAgent", "openclaw/plugin-sdk/agent-harness-runtime EmbeddedPi* aliases"];
readonly diagnostics: readonly ["plugin SDK compatibility registry"];
readonly tests: readonly ["src/plugins/runtime/index.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
readonly releaseNote: "Legacy `runEmbeddedPiAgent` and `EmbeddedPi*` plugin aliases remain as deprecated SDK compatibility only.";
}, {
readonly code: "agent-harness-id-alias";
readonly status: "deprecated";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-25";
readonly warningStarts: "2026-04-25";
readonly removeAfter: "2026-07-25";
readonly replacement: "`agentRuntime` ids and policy metadata";
readonly docsPath: "/plugins/sdk-agent-harness";
readonly surfaces: readonly ["manifest/catalog execution policy", "runtime selection"];
readonly diagnostics: readonly ["agent runtime compatibility warning"];
readonly tests: readonly ["src/plugins/provider-runtime.test.ts", "packages/web-content-core/src/provider-runtime-shared.test.ts"];
}, {
readonly code: "generated-bundled-channel-config-fallback";
readonly status: "active";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly replacement: "manifest registry `channelConfigs` metadata";
readonly docsPath: "/plugins/manifest";
readonly surfaces: readonly ["generated bundled channel config metadata", "channel config validation"];
readonly diagnostics: readonly ["channel config metadata fallback"];
readonly tests: readonly ["src/plugins/contracts/config-footprint-guardrails.test.ts"];
}, {
readonly code: "disable-persisted-plugin-registry-env";
readonly status: "deprecated";
readonly owner: "config";
readonly introduced: "2026-04-25";
readonly deprecated: "2026-04-25";
readonly warningStarts: "2026-04-25";
readonly removeAfter: "2026-07-25";
readonly replacement: "`openclaw plugins registry --refresh` and `openclaw doctor --fix`";
readonly docsPath: "/cli/plugins#registry";
readonly surfaces: readonly ["OPENCLAW_DISABLE_PERSISTED_PLUGIN_REGISTRY", "plugin registry reads"];
readonly diagnostics: readonly ["persisted-registry-disabled"];
readonly tests: readonly ["src/plugins/plugin-registry.test.ts"];
}, {
readonly code: "plugin-registry-install-migration-env";
readonly status: "deprecated";
readonly owner: "config";
readonly introduced: "2026-04-25";
readonly deprecated: "2026-04-25";
readonly warningStarts: "2026-04-25";
readonly removeAfter: "2026-07-25";
readonly replacement: "`openclaw plugins registry --refresh` and `openclaw doctor --fix`";
readonly docsPath: "/cli/plugins#registry";
readonly surfaces: readonly ["OPENCLAW_DISABLE_PLUGIN_REGISTRY_MIGRATION", "OPENCLAW_FORCE_PLUGIN_REGISTRY_MIGRATION", "package postinstall plugin registry migration"];
readonly diagnostics: readonly ["postinstall migration skip", "postinstall migration force deprecation warning"];
readonly tests: readonly ["src/commands/doctor/shared/plugin-registry-migration.test.ts"];
}, {
readonly code: "plugin-install-config-ledger";
readonly status: "deprecated";
readonly owner: "config";
readonly introduced: "2026-04-25";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "shared SQLite `installed_plugin_index` install ledger";
readonly docsPath: "/cli/plugins#registry";
readonly surfaces: readonly ["plugins.installs authored config", "plugin install/update migration"];
readonly diagnostics: readonly ["config write migration warning", "doctor registry migration"];
readonly tests: readonly ["src/config/io.write-config.test.ts", "src/commands/doctor/shared/plugin-registry-migration.test.ts"];
}, {
readonly code: "bundled-plugin-load-path-aliases";
readonly status: "deprecated";
readonly owner: "config";
readonly introduced: "2026-04-25";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "packaged bundled plugins resolved through the persisted plugin registry";
readonly docsPath: "/cli/plugins#registry";
readonly surfaces: readonly ["plugins.load.paths entries pointing at bundled plugin source/dist paths"];
readonly diagnostics: readonly ["doctor bundled plugin load-path warning"];
readonly tests: readonly ["src/commands/doctor/shared/bundled-plugin-load-paths.test.ts"];
}, {
readonly code: "plugin-owned-web-search-config";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-26";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`plugins.entries.<plugin>.config.webSearch`";
readonly docsPath: "/tools/web";
readonly surfaces: readonly ["tools.web.search.apiKey", "tools.web.search.<provider>"];
readonly diagnostics: readonly ["doctor legacy web-search config migration"];
readonly tests: readonly ["src/commands/doctor/shared/legacy-web-search-migrate.test.ts"];
}, {
readonly code: "plugin-owned-web-fetch-config";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-26";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`plugins.entries.firecrawl.config.webFetch`";
readonly docsPath: "/tools/web-fetch";
readonly surfaces: readonly ["tools.web.fetch.firecrawl"];
readonly diagnostics: readonly ["doctor legacy web-fetch config migration"];
readonly tests: readonly ["src/commands/doctor/shared/legacy-web-fetch-migrate.test.ts"];
}, {
readonly code: "plugin-owned-x-search-config";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-26";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`plugins.entries.xai.config.webSearch.apiKey`";
readonly docsPath: "/tools/grok-search";
readonly surfaces: readonly ["tools.web.x_search.apiKey"];
readonly diagnostics: readonly ["doctor legacy x_search config migration"];
readonly tests: readonly ["src/commands/doctor/shared/legacy-x-search-migrate.test.ts", string];
}, {
readonly code: "plugin-activate-entrypoint-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`register(api)` plugin entrypoint";
readonly docsPath: "/plugins/sdk-entrypoints";
readonly surfaces: readonly ["plugin module `activate(api)`", "plugin loader registration"];
readonly diagnostics: readonly ["loader compatibility path"];
readonly tests: readonly ["src/plugins/loader.test.ts"];
}, {
readonly code: "setup-runtime-fallback";
readonly status: "active";
readonly owner: "setup";
readonly introduced: "2026-04-24";
readonly replacement: "`setup.requiresRuntime: false` with complete setup descriptors";
readonly docsPath: "/plugins/manifest#setup-reference";
readonly surfaces: readonly ["setup-api runtime fallback", "setup.requiresRuntime omitted"];
readonly diagnostics: readonly ["setup registry runtime diagnostic"];
readonly tests: readonly ["src/plugins/setup-registry.test.ts", "src/plugins/setup-registry.runtime.test.ts"];
}, {
readonly code: "provider-discovery-hook-alias";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`catalog.run(...)` provider catalog hook";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["provider plugin `discovery` hook", "provider catalog resolution"];
readonly diagnostics: readonly ["provider validation warning when catalog and discovery both register"];
readonly tests: readonly ["src/plugins/provider-discovery.test.ts", "src/plugins/provider-validation.test.ts"];
}, {
readonly code: "channel-exposure-legacy-aliases";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`openclaw.channel.exposure` metadata";
readonly docsPath: "/plugins/sdk-setup";
readonly surfaces: readonly ["openclaw.channel.showConfigured", "openclaw.channel.showInSetup"];
readonly diagnostics: readonly ["channel exposure compatibility path"];
readonly tests: readonly ["src/commands/channel-setup/discovery.test.ts"];
}, {
readonly code: "channel-runtime-sdk-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "focused channel SDK subpaths, especially `openclaw/plugin-sdk/channel-runtime-context`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly [string];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "command-auth-status-builders";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`openclaw/plugin-sdk/command-status`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/command-auth buildCommandsMessage", "openclaw/plugin-sdk/command-auth buildCommandsMessagePaginated", "openclaw/plugin-sdk/command-auth buildHelpMessage"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugin-sdk/command-auth.test.ts"];
}, {
readonly code: "clawdbot-config-type-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`OpenClawConfig`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk `ClawdbotConfig` type export"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-index.test.ts"];
}, {
readonly code: "openclaw-schema-type-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-26";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`OpenClawConfig` from `openclaw/plugin-sdk/config-schema`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk `OpenClawSchemaType` type export"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-index.test.ts"];
}, {
readonly code: "legacy-extension-api-import";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "injected `api.runtime.*` helpers or focused `openclaw/plugin-sdk/<subpath>` imports";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/extension-api"];
readonly diagnostics: readonly ["OPENCLAW_EXTENSION_API_DEPRECATED"];
readonly tests: readonly ["src/plugins/sdk-alias.test.ts", "src/index.test.ts"];
}, {
readonly code: "memory-split-registration";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`api.registerMemoryCapability({ promptBuilder, flushPlanResolver, runtime })`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["api.registerMemoryPromptSection", "api.registerMemoryFlushPlan", "api.registerMemoryRuntime", "src/plugins/memory-state split registration helpers"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/memory-state.test.ts", "src/plugins/loader.test.ts"];
}, {
readonly code: "provider-static-capabilities-bag";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "explicit provider hooks such as `buildReplayPolicy`, `normalizeToolSchemas`, and `wrapStreamFn`";
readonly docsPath: "/plugins/sdk-provider-plugins";
readonly surfaces: readonly ["ProviderPlugin.capabilities", "ProviderCapabilities"];
readonly diagnostics: readonly ["provider validation warning"];
readonly tests: readonly ["src/plugins/provider-runtime.test.ts", "src/plugins/contracts/provider-family-plugin-tests.test.ts"];
}, {
readonly code: "provider-discovery-type-aliases";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`ProviderCatalogOrder`, `ProviderCatalogContext`, `ProviderCatalogResult`, and `ProviderPluginCatalog`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["ProviderDiscoveryOrder", "ProviderDiscoveryContext", "ProviderDiscoveryResult", "ProviderPluginDiscovery"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-index.test.ts"];
}, {
readonly code: "provider-thinking-policy-hooks";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`resolveThinkingProfile`";
readonly docsPath: "/plugins/sdk-provider-plugins";
readonly surfaces: readonly ["ProviderPlugin.isBinaryThinking", "ProviderPlugin.supportsXHighThinking", "ProviderPlugin.resolveDefaultThinkingLevel"];
readonly diagnostics: readonly ["provider runtime compatibility warning"];
readonly tests: readonly ["src/plugins/provider-runtime.test.ts"];
}, {
readonly code: "provider-external-oauth-profiles-hook";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`contracts.externalAuthProviders` plus `resolveExternalAuthProfiles`";
readonly docsPath: "/plugins/sdk-provider-plugins";
readonly surfaces: readonly ["ProviderPlugin.resolveExternalOAuthProfiles"];
readonly diagnostics: readonly ["provider external auth fallback warning"];
readonly tests: readonly ["src/plugins/provider-runtime.test.ts"];
}, {
readonly code: "agent-tool-result-harness-alias";
readonly status: "deprecated";
readonly owner: "agent-runtime";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`runtime` and `runtimes` agent tool-result middleware fields";
readonly docsPath: "/plugins/sdk-agent-harness";
readonly surfaces: readonly ["AgentToolResultMiddlewareHarness", "AgentToolResultMiddlewareContext.harness", "AgentToolResultMiddlewareOptions.harnesses", "normalizeAgentToolResultMiddlewareHarnesses"];
readonly diagnostics: readonly ["agent runtime compatibility warning"];
readonly tests: readonly ["src/plugins/captured-registration.test.ts", "src/agents/codex-app-server.extensions.test.ts"];
}, {
readonly code: "runtime-config-load-write";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-27";
readonly deprecated: "2026-04-27";
readonly warningStarts: "2026-04-27";
readonly removeAfter: "2026-07-27";
readonly replacement: "`api.runtime.config.current()`, passed config values, `mutateConfigFile(...)`, or `replaceConfigFile(...)`";
readonly docsPath: "/plugins/sdk-runtime#config-loading-and-writes";
readonly surfaces: readonly ["api.runtime.config.loadConfig", "api.runtime.config.writeConfigFile"];
readonly diagnostics: readonly ["plugin runtime compatibility warning", "deprecated API usage guard", "runtime channel config boundary guard"];
readonly tests: readonly ["src/plugins/runtime/runtime-config.test.ts", "src/plugins/contracts/deprecated-internal-config-api.test.ts", "src/plugins/contracts/config-boundary-guard.test.ts"];
}, {
readonly code: "runtime-taskflow-legacy-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`api.runtime.tasks.managedFlows` for managed mutations or `api.runtime.tasks.flows` for DTO reads";
readonly docsPath: "/plugins/sdk-runtime";
readonly surfaces: readonly ["api.runtime.taskFlow", "api.runtime.tasks.flow"];
readonly diagnostics: readonly ["plugin runtime compatibility warning"];
readonly tests: readonly ["src/plugins/runtime/index.test.ts", "src/plugins/runtime/runtime-tasks.test.ts"];
}, {
readonly code: "runtime-subagent-get-session-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`api.runtime.subagent.getSessionMessages`";
readonly docsPath: "/plugins/sdk-runtime";
readonly surfaces: readonly ["api.runtime.subagent.getSession"];
readonly diagnostics: readonly ["plugin runtime compatibility warning"];
readonly tests: readonly ["src/plugins/runtime/index.test.ts"];
}, {
readonly code: "runtime-stt-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`api.runtime.mediaUnderstanding.transcribeAudioFile`";
readonly docsPath: "/plugins/sdk-runtime";
readonly surfaces: readonly ["api.runtime.stt.transcribeAudioFile"];
readonly diagnostics: readonly ["plugin runtime compatibility warning"];
readonly tests: readonly ["src/plugins/runtime/index.test.ts"];
}, {
readonly code: "runtime-inbound-envelope-alias";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`BodyForAgent` plus structured user-context blocks";
readonly docsPath: "/plugins/sdk-runtime";
readonly surfaces: readonly ["api.runtime.channel.reply.formatInboundEnvelope"];
readonly diagnostics: readonly ["channel runtime compatibility warning"];
readonly tests: readonly ["src/plugins/runtime/index.test.ts"];
}, {
readonly code: "channel-native-message-schema-helpers";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "semantic `presentation` capabilities";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/channel-actions createMessageToolButtonsSchema", "openclaw/plugin-sdk/channel-actions createMessageToolCardSchema"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "channel-mention-gating-legacy-helpers";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "`resolveInboundMentionDecision({ facts, policy })`";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/channel-inbound resolveMentionGating", "openclaw/plugin-sdk/channel-inbound resolveMentionGatingWithBypass", "openclaw/plugin-sdk/channel-mention-gating resolveMentionGating", "openclaw/plugin-sdk/channel-mention-gating resolveMentionGatingWithBypass"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "provider-web-search-core-wrapper";
readonly status: "deprecated";
readonly owner: "provider";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "provider-owned `createTool(...)` on the returned `WebSearchProviderPlugin`";
readonly docsPath: "/plugins/sdk-provider-plugins";
readonly surfaces: readonly ["openclaw/plugin-sdk/provider-web-search createPluginBackedWebSearchProvider"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}, {
readonly code: "approval-capability-approvals-alias";
readonly status: "deprecated";
readonly owner: "channel";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "top-level `delivery`, `nativeRuntime`, `render`, and `native` approval capability fields";
readonly docsPath: "/plugins/sdk-channel-plugins";
readonly surfaces: readonly ["createChannelApprovalCapability({ approvals })"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugin-sdk/approval-delivery-helpers.test.ts"];
}, {
readonly code: "plugin-sdk-test-utils-alias";
readonly status: "deprecated";
readonly owner: "sdk";
readonly introduced: "2026-04-24";
readonly deprecated: "2026-04-26";
readonly warningStarts: "2026-04-26";
readonly removeAfter: "2026-07-26";
readonly replacement: "focused `openclaw/plugin-sdk/*` test subpaths";
readonly docsPath: "/plugins/sdk-migration";
readonly surfaces: readonly ["openclaw/plugin-sdk/test-utils"];
readonly diagnostics: readonly ["plugin SDK compatibility warning"];
readonly tests: readonly ["src/plugins/compat/registry.test.ts", "src/plugins/contracts/plugin-sdk-subpaths.test.ts"];
}];
type PluginCompatCode = (typeof PLUGIN_COMPAT_RECORDS)[number]["code"];
//#endregion
//#region src/infra/npm-registry-spec.d.ts
/**
* Parsed registry-only npm spec accepted by plugin install flows.
* Selectors are limited to exact versions and dist-tags; URL/git/file specs
* are rejected before they can execute on the gateway host.
*/
type ParsedRegistryNpmSpec = {
name: string;
raw: string;
selector?: string;
selectorKind: "none" | "exact-version" | "tag";
selectorIsPrerelease: boolean;
};
//#endregion
//#region src/plugins/install-source-info.d.ts
/** Warning emitted while describing plugin package install source metadata. */
type PluginInstallSourceWarning = "invalid-clawhub-spec" | "invalid-npm-spec" | "invalid-default-choice" | "default-choice-missing-source" | "clawhub-spec-floating" | "npm-integrity-without-source" | "npm-spec-floating" | "npm-spec-missing-integrity" | "npm-spec-package-name-mismatch";
/** Pinning state for npm plugin install metadata. */
type PluginInstallNpmPinState = "exact-with-integrity" | "exact-without-integrity" | "floating-with-integrity" | "floating-without-integrity";
/** Parsed npm install source metadata for a plugin package. */
type PluginInstallNpmSourceInfo = {
spec: string;
packageName: string;
expectedPackageName?: string;
selector?: string;
selectorKind: ParsedRegistryNpmSpec["selectorKind"];
exactVersion: boolean;
expectedIntegrity?: string;
pinState: PluginInstallNpmPinState;
};
/** Parsed local install source metadata for a plugin package. */
type PluginInstallLocalSourceInfo = {
path: string;
};
/** Parsed ClawHub install source metadata for a plugin package. */
type PluginInstallClawHubSourceInfo = {
spec: string;
packageName: string;
version?: string;
exactVersion: boolean;
};
/** Parsed plugin install sources plus validation warnings. */
type PluginInstallSourceInfo = {
defaultChoice?: PluginPackageInstall["defaultChoice"];
clawhub?: PluginInstallClawHubSourceInfo;
npm?: PluginInstallNpmSourceInfo;
local?: PluginInstallLocalSourceInfo;
warnings: readonly PluginInstallSourceWarning[];
};
//#endregion
//#region src/plugins/installed-plugin-index-hash.d.ts
/** File metadata signature used to skip unchanged installed plugin files. */
type InstalledPluginFileSignature = {
size: number;
mtimeMs: number;
ctimeMs?: number;
};
//#endregion
//#region src/plugins/installed-plugin-index-types.d.ts
/** Schema version for installed plugin index files. */
declare const INSTALLED_PLUGIN_INDEX_VERSION = 1;
declare const INSTALLED_PLUGIN_INDEX_MIGRATION_VERSION = 1;
type InstalledPluginIndexRefreshReason = "missing" | "stale-manifest" | "stale-package" | "source-changed" | "policy-changed" | "migration" | "host-contract-changed" | "compat-registry-changed" | "manual";
type InstalledPluginStartupInfo = {
sidecar: boolean;
memory: boolean;
deferConfiguredChannelFullLoadUntilAfterListen: boolean;
agentHarnesses: readonly string[];
/**
* Manifest activation.onConfigPaths copied into the installed index for
* pre-manifest startup scoping. Missing on older persisted index files.
*/
configPaths?: readonly string[];
};
type InstalledPluginContributionInfo = {
channels: readonly string[];
channelConfigs: readonly string[];
providers: readonly string[];
modelCatalogProviders: readonly string[];
modelSupportPrefixes: readonly string[];
modelSupportPatterns: readonly string[];
autoEnableProviderIds: readonly string[];
commandAliases: readonly string[];
contracts: Readonly<Record<string, readonly string[]>>;
};
type InstalledPluginInstallRecordInfo = Pick<PluginInstallRecord, "source" | "spec" | "sourcePath" | "installPath" | "version" | "resolvedName" | "resolvedVersion" | "resolvedSpec" | "integrity" | "shasum" | "resolvedAt" | "installedAt" | "clawhubUrl" | "clawhubPackage" | "clawhubFamily" | "clawhubChannel" | "artifactKind" | "artifactFormat" | "npmIntegrity" | "npmShasum" | "npmTarballName" | "clawpackSha256" | "clawpackSpecVersion" | "clawpackManifestSha256" | "clawpackSize" | "gitUrl" | "gitRef" | "gitCommit" | "marketplaceName" | "marketplaceSource" | "marketplacePlugin">;
type InstalledPluginPackageChannelInfo = PluginPackageChannel;
/** One manifest-backed plugin entry in the generated installed plugin index. */
type InstalledPluginIndexRecord = {
pluginId: string;
packageName?: string;
packageVersion?: string;
/**
* Legacy embedded install record accepted when reading earlier index files.
* New index writes keep install records in InstalledPluginIndex.installRecords.
*/
installRecord?: InstalledPluginInstallRecordInfo; /** Hash of the top-level installRecords entry; used to detect source-changed invalidation. */
installRecordHash?: string;
/**
* Package-authored openclaw.install metadata. This describes catalog/package
* install intent and must not be treated as the durable install record.
*/
packageInstall?: PluginInstallSourceInfo;
packageChannel?: InstalledPluginPackageChannelInfo;
manifestPath: string;
manifestHash: string;
manifestFile?: InstalledPluginFileSignature;
format?: PluginManifestRecord["format"];
bundleFormat?: PluginManifestRecord["bundleFormat"];
source?: string;
setupSource?: string;
packageJson?: {
path: string;
hash: string;
fileSignature?: InstalledPluginFileSignature;
};
rootDir: string;
origin: PluginManifestRecord["origin"];
enabled: boolean;
enabledByDefault?: boolean;
enabledByDefaultOnPlatforms?: readonly string[];
syntheticAuthRefs?: readonly string[];
startup: InstalledPluginStartupInfo;
contributions?: InstalledPluginContributionInfo;
compat: readonly PluginCompatCode[];
};
/** Full installed-index payload used by control-plane plugin registry loading. */
type InstalledPluginIndex = {
version: typeof INSTALLED_PLUGIN_INDEX_VERSION;
warning?: string;
hostContractVersion: string;
compatRegistryVersion: string;
migrationVersion: typeof INSTALLED_PLUGIN_INDEX_MIGRATION_VERSION;
policyHash: string;
generatedAtMs: number;
refreshReason?: InstalledPluginIndexRefreshReason;
installRecords: Readonly<Record<string, InstalledPluginInstallRecordInfo>>;
plugins: readonly InstalledPluginIndexRecord[];
diagnostics: readonly PluginDiagnostic[];
};
type LoadInstalledPluginIndexParams = {
config?: OpenClawConfig;
workspaceDir?: string;
env?: NodeJS.ProcessEnv;
stateDir?: string;
pluginIndexFilePath?: string;
installRecords?: Record<string, PluginInstallRecord>;
candidates?: PluginCandidate[];
diagnostics?: PluginDiagnostic[];
discovery?: PluginDiscoveryResult;
now?: () => Date;
};
//#endregion
export { PluginCompatCode as i, InstalledPluginIndexRefreshReason as n, LoadInstalledPluginIndexParams as r, InstalledPluginIndex as t };