import { p as PluginInstallRecord } from "./types.openclaw-CpnoYlBx.js"; import { c as PluginPackageChannel, g as PluginDiagnostic, l as PluginPackageInstall, n as PluginManifestRegistry, r as PluginDiscoveryResult, t as PluginManifestRecord } from "./manifest-registry-BtEkkVE2.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/` 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..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..config.webSearch`"; readonly docsPath: "/tools/web"; readonly surfaces: readonly ["tools.web.search.apiKey", "tools.web.search."]; 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/` 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>; }; type InstalledPluginInstallRecordInfo = Pick; 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>; plugins: readonly InstalledPluginIndexRecord[]; diagnostics: readonly PluginDiagnostic[]; }; //#endregion //#region src/plugins/plugin-registry-snapshot.types.d.ts /** Source class for plugin registry snapshots used by diagnostics and cache decisions. */ type PluginRegistrySnapshotSource = "provided" | "persisted" | "derived"; //#endregion //#region src/plugins/plugin-metadata-snapshot.types.d.ts type PluginMetadataSnapshotOwnerMaps = { channels: ReadonlyMap; channelConfigs: ReadonlyMap; providers: ReadonlyMap; modelCatalogProviders: ReadonlyMap; cliBackends: ReadonlyMap; setupProviders: ReadonlyMap; commandAliases: ReadonlyMap; contracts: ReadonlyMap; }; type PluginMetadataSnapshotMetrics = { registrySnapshotMs: number; manifestRegistryMs: number; ownerMapsMs: number; totalMs: number; indexPluginCount: number; manifestPluginCount: number; }; type PluginMetadataSnapshotRegistryDiagnostic = { level: "info" | "warn"; code: "persisted-registry-disabled" | "persisted-registry-missing" | "persisted-registry-stale-policy" | "persisted-registry-stale-source"; message: string; }; type PluginMetadataSnapshot = { policyHash: string; configFingerprint?: string; pluginIds?: readonly string[]; registrySource?: PluginRegistrySnapshotSource; workspaceDir?: string; index: InstalledPluginIndex; registryDiagnostics: readonly PluginMetadataSnapshotRegistryDiagnostic[]; manifestRegistry: PluginManifestRegistry; plugins: readonly PluginManifestRecord[]; diagnostics: readonly PluginDiagnostic[]; byPluginId: ReadonlyMap; normalizePluginId: (pluginId: string) => string; owners: PluginMetadataSnapshotOwnerMaps; metrics: PluginMetadataSnapshotMetrics; discovery?: PluginDiscoveryResult; }; type PluginMetadataRegistryView = Pick; //#endregion export { PluginMetadataSnapshot as n, PluginCompatCode as r, PluginMetadataRegistryView as t };