Fix model selection, docs links, cache-busting, and Assist routing
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
"""Shared helper utilities for the OpenClaw integration."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
def extract_text_recursive(value: Any, depth: int = 0) -> str | None:
|
||||
"""Recursively extract assistant text from nested response payloads."""
|
||||
if depth > 8:
|
||||
return None
|
||||
|
||||
if isinstance(value, str):
|
||||
text = value.strip()
|
||||
return text or None
|
||||
|
||||
if isinstance(value, list):
|
||||
parts: list[str] = []
|
||||
for item in value:
|
||||
extracted = extract_text_recursive(item, depth + 1)
|
||||
if extracted:
|
||||
parts.append(extracted)
|
||||
if parts:
|
||||
return "\n".join(parts)
|
||||
return None
|
||||
|
||||
if isinstance(value, dict):
|
||||
priority_keys = (
|
||||
"output_text",
|
||||
"text",
|
||||
"content",
|
||||
"message",
|
||||
"response",
|
||||
"answer",
|
||||
"choices",
|
||||
"output",
|
||||
"delta",
|
||||
)
|
||||
|
||||
for key in priority_keys:
|
||||
if key not in value:
|
||||
continue
|
||||
extracted = extract_text_recursive(value.get(key), depth + 1)
|
||||
if extracted:
|
||||
return extracted
|
||||
|
||||
for nested_value in value.values():
|
||||
extracted = extract_text_recursive(nested_value, depth + 1)
|
||||
if extracted:
|
||||
return extracted
|
||||
|
||||
return None
|
||||
Reference in New Issue
Block a user