fix(tts): prefer active speech provider lookup

This commit is contained in:
Peter Steinberger
2026-04-25 05:39:01 +01:00
parent 2033075570
commit 2f39e6df59
2 changed files with 12 additions and 2 deletions

View File

@@ -69,6 +69,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- Talk/TTS: resolve configured extension speech providers from the active runtime registry before provider-list discovery, so Talk mode no longer rejects valid plugin speech providers as unsupported.
- Sessions/subagents: stop stale ended runs and old store-only child reverse links from reappearing in `childSessions`, while keeping live descendants and recently-ended children visible. Fixes #57920.
- Subagents: stop stale unended runs from counting as active or pending forever, while preserving restart-aborted recovery for recoverable child sessions. Fixes #71252. Thanks @hclsys.
- Gateway/tools: allow `POST /tools/invoke` to reach plugin-backed catalog tools such as `browser` when no core implementation exists, while still preferring built-in tools for real core names. Thanks @chat2way.

View File

@@ -1,5 +1,8 @@
import type { OpenClawConfig } from "../config/types.js";
import { resolvePluginCapabilityProviders } from "../plugins/capability-provider-runtime.js";
import {
resolvePluginCapabilityProvider,
resolvePluginCapabilityProviders,
} from "../plugins/capability-provider-runtime.js";
import {
buildCapabilityProviderMaps,
normalizeCapabilityProviderId,
@@ -39,7 +42,13 @@ export function getSpeechProvider(
if (!normalized) {
return undefined;
}
return buildProviderMaps(cfg).aliases.get(normalized);
return (
resolvePluginCapabilityProvider({
key: "speechProviders",
providerId: normalized,
cfg,
}) ?? buildProviderMaps(cfg).aliases.get(normalized)
);
}
export function canonicalizeSpeechProviderId(