fix(onboarding): scope video-only provider auth choices

This commit is contained in:
RoomWithOutRoof
2026-04-26 05:53:00 +08:00
committed by GitHub
parent ce364121aa
commit be51c98c5d
4 changed files with 23 additions and 0 deletions

View File

@@ -131,6 +131,9 @@ Docs: https://docs.openclaw.ai
- Providers/MiniMax: register `minimax-portal` for music and video generation,
preserving OAuth auth and regional MiniMax base URLs across the shared
`music_generate` and `video_generate` tools. (#63241) Thanks @tars90percent.
- Providers/onboarding: keep Runway and Alibaba Model Studio out of the
text-inference setup picker by scoping their video-generation auth choices to
the media setup flow. (#65856) Thanks @Jah-yee.
- Plugins/Bonjour: stop the gateway from crash-looping on `CIAO PROBING CANCELLED` when the mDNS watchdog cancels a stuck probe. Restores the rejection-handler wiring dropped during the bonjour plugin migration and shares unhandled-rejection state across module instances so plugin-staged copies of `openclaw/plugin-sdk/runtime` register into the same handler set the host consults. Especially affects Docker on macOS, where mDNS probing reliably hits the watchdog. Thanks @troyhitch.
- Google Meet: report pinned Chrome nodes as offline or missing capabilities in
setup/join diagnostics, keep inaccessible nodes out of auto-selection, and

View File

@@ -13,6 +13,7 @@
"groupId": "alibaba",
"groupLabel": "Alibaba Model Studio",
"groupHint": "DashScope / Model Studio API key",
"onboardingScopes": ["image-generation"],
"optionKey": "alibabaModelStudioApiKey",
"cliFlag": "--alibaba-model-studio-api-key",
"cliOption": "--alibaba-model-studio-api-key <key>",

View File

@@ -13,6 +13,7 @@
"groupId": "runway",
"groupLabel": "Runway",
"groupHint": "API key",
"onboardingScopes": ["image-generation"],
"optionKey": "runwayApiKey",
"cliFlag": "--runway-api-key",
"cliOption": "--runway-api-key <key>",

View File

@@ -104,6 +104,24 @@ describe("plugin contract registry", () => {
});
});
it("keeps video-only provider auth choices out of text onboarding", () => {
const registry = loadPluginManifestRegistry({});
for (const pluginId of ["alibaba", "runway"]) {
const plugin = registry.plugins.find(
(entry) => entry.origin === "bundled" && entry.id === pluginId,
);
expect(plugin?.providerAuthChoices).toEqual(
expect.arrayContaining([
expect.objectContaining({
provider: pluginId,
onboardingScopes: ["image-generation"],
}),
]),
);
}
});
it("covers every bundled speech plugin discovered from manifests", () => {
expectRegistryPluginIds({
actualPluginIds: pluginRegistrationContractRegistry