timeout override in settings
This commit is contained in:
@@ -61,6 +61,7 @@ from .const import (
|
|||||||
CONF_ALLOW_BRAVE_WEBSPEECH,
|
CONF_ALLOW_BRAVE_WEBSPEECH,
|
||||||
CONF_BROWSER_VOICE_LANGUAGE,
|
CONF_BROWSER_VOICE_LANGUAGE,
|
||||||
CONF_VOICE_PROVIDER,
|
CONF_VOICE_PROVIDER,
|
||||||
|
CONF_THINKING_TIMEOUT,
|
||||||
CONTEXT_STRATEGY_TRUNCATE,
|
CONTEXT_STRATEGY_TRUNCATE,
|
||||||
DEFAULT_CONTEXT_MAX_CHARS,
|
DEFAULT_CONTEXT_MAX_CHARS,
|
||||||
DEFAULT_CONTEXT_STRATEGY,
|
DEFAULT_CONTEXT_STRATEGY,
|
||||||
@@ -71,6 +72,7 @@ from .const import (
|
|||||||
DEFAULT_ALLOW_BRAVE_WEBSPEECH,
|
DEFAULT_ALLOW_BRAVE_WEBSPEECH,
|
||||||
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
||||||
DEFAULT_VOICE_PROVIDER,
|
DEFAULT_VOICE_PROVIDER,
|
||||||
|
DEFAULT_THINKING_TIMEOUT,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
EVENT_MESSAGE_RECEIVED,
|
EVENT_MESSAGE_RECEIVED,
|
||||||
EVENT_TOOL_INVOKED,
|
EVENT_TOOL_INVOKED,
|
||||||
@@ -837,6 +839,10 @@ def _async_register_websocket_api(hass: HomeAssistant) -> None:
|
|||||||
CONF_BROWSER_VOICE_LANGUAGE,
|
CONF_BROWSER_VOICE_LANGUAGE,
|
||||||
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
||||||
),
|
),
|
||||||
|
CONF_THINKING_TIMEOUT: options.get(
|
||||||
|
CONF_THINKING_TIMEOUT,
|
||||||
|
DEFAULT_THINKING_TIMEOUT,
|
||||||
|
),
|
||||||
"language": hass.config.language,
|
"language": hass.config.language,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ from .const import (
|
|||||||
CONF_ALLOW_BRAVE_WEBSPEECH,
|
CONF_ALLOW_BRAVE_WEBSPEECH,
|
||||||
CONF_BROWSER_VOICE_LANGUAGE,
|
CONF_BROWSER_VOICE_LANGUAGE,
|
||||||
CONF_VOICE_PROVIDER,
|
CONF_VOICE_PROVIDER,
|
||||||
|
CONF_THINKING_TIMEOUT,
|
||||||
BROWSER_VOICE_LANGUAGES,
|
BROWSER_VOICE_LANGUAGES,
|
||||||
CONTEXT_STRATEGY_CLEAR,
|
CONTEXT_STRATEGY_CLEAR,
|
||||||
CONTEXT_STRATEGY_TRUNCATE,
|
CONTEXT_STRATEGY_TRUNCATE,
|
||||||
@@ -62,6 +63,7 @@ from .const import (
|
|||||||
DEFAULT_ALLOW_BRAVE_WEBSPEECH,
|
DEFAULT_ALLOW_BRAVE_WEBSPEECH,
|
||||||
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
DEFAULT_BROWSER_VOICE_LANGUAGE,
|
||||||
DEFAULT_VOICE_PROVIDER,
|
DEFAULT_VOICE_PROVIDER,
|
||||||
|
DEFAULT_THINKING_TIMEOUT,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
OPENCLAW_CONFIG_REL_PATH,
|
OPENCLAW_CONFIG_REL_PATH,
|
||||||
)
|
)
|
||||||
@@ -504,6 +506,13 @@ class OpenClawOptionsFlow(OptionsFlow):
|
|||||||
CONF_VOICE_PROVIDER,
|
CONF_VOICE_PROVIDER,
|
||||||
default=selected_provider,
|
default=selected_provider,
|
||||||
): vol.In(["browser", "assist_stt"]),
|
): vol.In(["browser", "assist_stt"]),
|
||||||
|
vol.Optional(
|
||||||
|
CONF_THINKING_TIMEOUT,
|
||||||
|
default=options.get(
|
||||||
|
CONF_THINKING_TIMEOUT,
|
||||||
|
DEFAULT_THINKING_TIMEOUT,
|
||||||
|
),
|
||||||
|
): vol.All(int, vol.Range(min=10, max=3600)),
|
||||||
}
|
}
|
||||||
|
|
||||||
if selected_provider == "browser":
|
if selected_provider == "browser":
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ CONF_WAKE_WORD = "wake_word"
|
|||||||
CONF_ALLOW_BRAVE_WEBSPEECH = "allow_brave_webspeech"
|
CONF_ALLOW_BRAVE_WEBSPEECH = "allow_brave_webspeech"
|
||||||
CONF_VOICE_PROVIDER = "voice_provider"
|
CONF_VOICE_PROVIDER = "voice_provider"
|
||||||
CONF_BROWSER_VOICE_LANGUAGE = "browser_voice_language"
|
CONF_BROWSER_VOICE_LANGUAGE = "browser_voice_language"
|
||||||
|
CONF_THINKING_TIMEOUT = "thinking_timeout"
|
||||||
|
|
||||||
DEFAULT_INCLUDE_EXPOSED_CONTEXT = True
|
DEFAULT_INCLUDE_EXPOSED_CONTEXT = True
|
||||||
DEFAULT_CONTEXT_MAX_CHARS = 13000
|
DEFAULT_CONTEXT_MAX_CHARS = 13000
|
||||||
@@ -44,6 +45,7 @@ DEFAULT_WAKE_WORD = "hey openclaw"
|
|||||||
DEFAULT_ALLOW_BRAVE_WEBSPEECH = False
|
DEFAULT_ALLOW_BRAVE_WEBSPEECH = False
|
||||||
DEFAULT_VOICE_PROVIDER = "browser"
|
DEFAULT_VOICE_PROVIDER = "browser"
|
||||||
DEFAULT_BROWSER_VOICE_LANGUAGE = "auto"
|
DEFAULT_BROWSER_VOICE_LANGUAGE = "auto"
|
||||||
|
DEFAULT_THINKING_TIMEOUT = 120
|
||||||
|
|
||||||
BROWSER_VOICE_LANGUAGES: tuple[str, ...] = (
|
BROWSER_VOICE_LANGUAGES: tuple[str, ...] = (
|
||||||
"auto",
|
"auto",
|
||||||
|
|||||||
@@ -45,7 +45,8 @@
|
|||||||
"wake_word": "Wake word",
|
"wake_word": "Wake word",
|
||||||
"allow_brave_webspeech": "Allow Web Speech in Brave (experimental)",
|
"allow_brave_webspeech": "Allow Web Speech in Brave (experimental)",
|
||||||
"voice_provider": "Voice input provider (browser or HA STT)",
|
"voice_provider": "Voice input provider (browser or HA STT)",
|
||||||
"browser_voice_language": "Browser voice language"
|
"browser_voice_language": "Browser voice language",
|
||||||
|
"thinking_timeout": "Response timeout (seconds)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,8 @@
|
|||||||
"wake_word": "Wake word",
|
"wake_word": "Wake word",
|
||||||
"allow_brave_webspeech": "Allow Web Speech in Brave (experimental)",
|
"allow_brave_webspeech": "Allow Web Speech in Brave (experimental)",
|
||||||
"voice_provider": "Voice input provider (browser or HA STT)",
|
"voice_provider": "Voice input provider (browser or HA STT)",
|
||||||
"browser_voice_language": "Browser voice language"
|
"browser_voice_language": "Browser voice language",
|
||||||
|
"thinking_timeout": "Response timeout (seconds)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
const CARD_VERSION = "0.3.12";
|
const CARD_VERSION = "0.3.12";
|
||||||
|
|
||||||
// Max time (ms) to show the thinking indicator before falling back to an error
|
// Max time (ms) to show the thinking indicator before falling back to an error (default; overridable via card config `thinking_timeout` in seconds)
|
||||||
const THINKING_TIMEOUT_MS = 120_000;
|
const THINKING_TIMEOUT_MS = 120_000;
|
||||||
|
|
||||||
// Session storage key prefix for message persistence across dashboard navigations
|
// Session storage key prefix for message persistence across dashboard navigations
|
||||||
@@ -95,6 +95,7 @@ class OpenClawChatCard extends HTMLElement {
|
|||||||
this._lastAssistantEventSignature = null;
|
this._lastAssistantEventSignature = null;
|
||||||
this._autoScrollPinned = true;
|
this._autoScrollPinned = true;
|
||||||
this._lastHassRenderSignature = null;
|
this._lastHassRenderSignature = null;
|
||||||
|
this._integrationThinkingTimeout = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── HA card interface ───────────────────────────────────────────────
|
// ── HA card interface ───────────────────────────────────────────────
|
||||||
@@ -117,6 +118,7 @@ class OpenClawChatCard extends HTMLElement {
|
|||||||
allow_brave_webspeech: config.allow_brave_webspeech === true,
|
allow_brave_webspeech: config.allow_brave_webspeech === true,
|
||||||
voice_provider: config.voice_provider || null,
|
voice_provider: config.voice_provider || null,
|
||||||
session_id: config.session_id || null,
|
session_id: config.session_id || null,
|
||||||
|
thinking_timeout: config.thinking_timeout ?? 120,
|
||||||
...config,
|
...config,
|
||||||
};
|
};
|
||||||
// Restore messages from sessionStorage if available
|
// Restore messages from sessionStorage if available
|
||||||
@@ -420,6 +422,10 @@ class OpenClawChatCard extends HTMLElement {
|
|||||||
this._integrationVoiceLanguage = result?.language
|
this._integrationVoiceLanguage = result?.language
|
||||||
? this._normalizeSpeechLanguage(result.language)
|
? this._normalizeSpeechLanguage(result.language)
|
||||||
: null;
|
: null;
|
||||||
|
this._integrationThinkingTimeout =
|
||||||
|
typeof result?.thinking_timeout === "number" && result.thinking_timeout >= 10
|
||||||
|
? result.thinking_timeout * 1000
|
||||||
|
: null;
|
||||||
|
|
||||||
if (includePipeline) {
|
if (includePipeline) {
|
||||||
try {
|
try {
|
||||||
@@ -489,7 +495,7 @@ class OpenClawChatCard extends HTMLElement {
|
|||||||
}
|
}
|
||||||
this._persistMessages();
|
this._persistMessages();
|
||||||
this._render();
|
this._render();
|
||||||
}, THINKING_TIMEOUT_MS);
|
}, (Number(this._config?.thinking_timeout) * 1000) || this._integrationThinkingTimeout || THINKING_TIMEOUT_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
_clearThinkingTimer() {
|
_clearThinkingTimer() {
|
||||||
|
|||||||
Reference in New Issue
Block a user