UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

966 lines 51.5 kB
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 };