Plugins: allowlist compat for capability provider fallback (#62205)#62234
Conversation
Greptile SummaryFixes allowlist-gated capability provider fallback by inserting Confidence Score: 5/5Safe to merge — targeted one-liner fix with correct test coverage of the compat chain ordering. All findings are P2 or lower. The production change is a minimal, well-understood reordering that matches the established pattern in applyPluginCompatibilityOverrides. Tests directly assert chain order and the two new allowlist files confirm downstream registry behavior. No files require special attention; the minor test coverage gap for videoGenerationProviders and musicGenerationProviders in capability-provider-runtime.test.ts does not affect correctness. Reviews (1): Last reviewed commit: "Plugins: allowlist compat for capability..." | Re-trigger Greptile |
6c77ee3 to
4bfccf5
Compare
4bfccf5 to
92bbbe5
Compare
obviyus
left a comment
There was a problem hiding this comment.
Reviewed latest changes; landing now.
|
Landed on main. Thanks @neeravmakwana. |
… (thanks @neeravmakwana) * Plugins: allowlist compat for capability provider fallback (openclaw#62205) * test: cover all capability fallback keys --------- Co-authored-by: Ayaan Zaidi <[email protected]>
… (thanks @neeravmakwana) * Plugins: allowlist compat for capability provider fallback (openclaw#62205) * test: cover all capability fallback keys --------- Co-authored-by: Ayaan Zaidi <[email protected]>
… (thanks @neeravmakwana) * Plugins: allowlist compat for capability provider fallback (openclaw#62205) * test: cover all capability fallback keys --------- Co-authored-by: Ayaan Zaidi <[email protected]>
… (thanks @neeravmakwana) * Plugins: allowlist compat for capability provider fallback (openclaw#62205) * test: cover all capability fallback keys --------- Co-authored-by: Ayaan Zaidi <[email protected]>
Summary
plugins.allowlist that omitted bundled capability plugins (for exampleopenai), capability fallback only addedplugins.entries, so the loader still treated those plugins as blocked and media-understanding providers (including OpenAI-compatible STT) never registered.tools.media.audiowithprovider: "openai"could pass raw audio to the model instead of a transcript when an allowlist was used to scope plugins.resolveCapabilityProviderConfignow applieswithBundledPluginAllowlistCompatbeforewithBundledPluginEnablementCompat, matching the order inapplyPluginCompatibilityOverrides(allowlist, then enablement, then vitest compat).plugins.denyremains authoritative; denylisted plugins are not enabled by this path.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Root Cause (if applicable)
plugins.allow, soresolvePluginActivationStatereturnednot-in-allowlistand the bundled plugin did not load.withBundledPluginAllowlistCompat+withBundledPluginEnablementCompatin provider resolution tests.Regression Test Plan (if applicable)
src/plugins/capability-provider-runtime.test.ts,src/media-understanding/provider-registry.allowlist.test.ts,src/image-generation/provider-registry.allowlist.test.tsplugins.allowwhenplugins.allowis non-empty.User-visible / Behavior Changes
plugins.allowset, bundled capability plugins needed for capability fallback (media understanding, image generation, speech, and other keys using the same path) are merged into the allowlist so providers such as STT load without manually listing every capability plugin id.Diagram (if applicable)
N/A
Security Impact (required)
plugins.denystill blocks plugins before allowlist evaluation.Verification
pnpm test(scoped):src/plugins/capability-provider-runtime.test.ts,src/media-understanding/provider-registry.allowlist.test.ts,src/image-generation/provider-registry.allowlist.test.tspnpm check/pnpm build: localpnpm checkfails on unrelatedacpxextension TypeScript resolution (acpx/dist/runtime.js); scoped lint on touched files is clean.Made with Cursor