diff --git a/src/components/ha-conversation-agent-picker.ts b/src/components/ha-conversation-agent-picker.ts
index 1296289e73..858d6f687b 100644
--- a/src/components/ha-conversation-agent-picker.ts
+++ b/src/components/ha-conversation-agent-picker.ts
@@ -63,7 +63,7 @@ export class HaConversationAgentPicker extends LitElement {
(agent) =>
html`
${agent.name}
`
@@ -88,11 +88,13 @@ export class HaConversationAgentPicker extends LitElement {
this._agents = agents;
- if (
- this.value &&
- agents.find((agent) => agent.id === this.value)?.language_supported ===
- false
- ) {
+ if (!this.value) {
+ return;
+ }
+
+ const selectedAgent = agents.find((agent) => agent.id === this.value);
+
+ if (!selectedAgent || selectedAgent.supported_languages?.length === 0) {
this.value = undefined;
fireEvent(this, "value-changed", { value: this.value });
}
diff --git a/src/components/ha-stt-picker.ts b/src/components/ha-stt-picker.ts
index 85dfcdc7cd..c506adcb92 100644
--- a/src/components/ha-stt-picker.ts
+++ b/src/components/ha-stt-picker.ts
@@ -42,7 +42,9 @@ export class HaSTTPicker extends LitElement {
const value =
this.value ??
(this.required
- ? this._engines.find((engine) => engine.language_supported)
+ ? this._engines.find(
+ (engine) => engine.supported_languages?.length !== 0
+ )
: NONE);
return html`
${stateObj ? computeStateName(stateObj) : engine.engine_id}
`;
@@ -88,11 +90,15 @@ export class HaSTTPicker extends LitElement {
private async _updateEngines() {
this._engines = (await listSTTEngines(this.hass, this.language)).providers;
- if (
- this.value &&
- this._engines.find((engine) => engine.engine_id === this.value)
- ?.language_supported === false
- ) {
+ if (!this.value) {
+ return;
+ }
+
+ const selectedEngine = this._engines.find(
+ (engine) => engine.engine_id === this.value
+ );
+
+ if (!selectedEngine || selectedEngine.supported_languages?.length === 0) {
this.value = undefined;
fireEvent(this, "value-changed", { value: this.value });
}
diff --git a/src/components/ha-tts-picker.ts b/src/components/ha-tts-picker.ts
index 56c5f3f398..35853b6e26 100644
--- a/src/components/ha-tts-picker.ts
+++ b/src/components/ha-tts-picker.ts
@@ -42,7 +42,9 @@ export class HaTTSPicker extends LitElement {
const value =
this.value ??
(this.required
- ? this._engines.find((engine) => engine.language_supported)
+ ? this._engines.find(
+ (engine) => engine.supported_languages?.length !== 0
+ )
: NONE);
return html`
${stateObj ? computeStateName(stateObj) : engine.engine_id}
`;
@@ -88,11 +90,15 @@ export class HaTTSPicker extends LitElement {
private async _updateEngines() {
this._engines = (await listTTSEngines(this.hass, this.language)).providers;
- if (
- this.value &&
- this._engines.find((engine) => engine.engine_id === this.value)
- ?.language_supported === false
- ) {
+ if (!this.value) {
+ return;
+ }
+
+ const selectedEngine = this._engines.find(
+ (engine) => engine.engine_id === this.value
+ );
+
+ if (!selectedEngine || selectedEngine.supported_languages?.length === 0) {
this.value = undefined;
fireEvent(this, "value-changed", { value: this.value });
}
diff --git a/src/data/conversation.ts b/src/data/conversation.ts
index 01a450252f..904fc55c95 100644
--- a/src/data/conversation.ts
+++ b/src/data/conversation.ts
@@ -59,7 +59,7 @@ export interface AgentInfo {
export interface Agent {
id: string;
name: string;
- language_supported: boolean;
+ supported_languages?: string[];
}
export const processConversationInput = (
diff --git a/src/data/stt.ts b/src/data/stt.ts
index 7a5d9da961..e7d652563c 100644
--- a/src/data/stt.ts
+++ b/src/data/stt.ts
@@ -20,7 +20,7 @@ export interface SpeechMetadata {
export interface STTEngine {
engine_id: string;
- language_supported?: boolean;
+ supported_languages?: string[];
}
export const listSTTEngines = (
diff --git a/src/data/tts.ts b/src/data/tts.ts
index 63a237d2b8..47dd2c7266 100644
--- a/src/data/tts.ts
+++ b/src/data/tts.ts
@@ -2,7 +2,7 @@ import { HomeAssistant } from "../types";
export interface TTSEngine {
engine_id: string;
- language_supported?: boolean;
+ supported_languages?: string[];
}
export interface TTSVoice {