Release OpenClaw HA integration 0.1.66
This commit is contained in:
@@ -9,6 +9,7 @@ DEFAULT_CHAT_AGENT_ID = "tetra-home"
|
||||
SYSTEM_HA_USER_ID = "system"
|
||||
|
||||
HA_USER_AGENT_MAP: dict[str, str] = {
|
||||
# TODO: Move this user-to-agent map into config entry options.
|
||||
"bd3f666f43f941e886ef007a794eefe8": "main",
|
||||
"1d2be9a622584cf0abb1c243d12a9959": "family-krzysztof",
|
||||
"eca5887898544556840878ab37a35fbc": "family-ewa",
|
||||
@@ -54,18 +55,28 @@ def build_scoped_session_id(
|
||||
ha_user_id: str | None,
|
||||
agent_id: str | None,
|
||||
) -> str:
|
||||
"""Build the backend/gateway session id scoped by user, agent, and raw session."""
|
||||
"""Build an OpenClaw agent-scoped session key for HA user chat sessions."""
|
||||
raw_session = normalize_optional_text(raw_session_id) or "default"
|
||||
user = normalize_ha_user_id(ha_user_id)
|
||||
agent = normalize_optional_text(agent_id) or DEFAULT_CHAT_AGENT_ID
|
||||
return (
|
||||
f"ha_user_{_sanitize_session_part(user)}"
|
||||
f"__agent_{_sanitize_session_part(agent)}"
|
||||
f"__session_{_sanitize_session_part(raw_session)}"
|
||||
f"agent:{_sanitize_session_part(agent)}"
|
||||
f":ha:user:{_sanitize_session_part(user)}"
|
||||
f":session:{_sanitize_session_part(raw_session)}"
|
||||
)
|
||||
|
||||
|
||||
def build_scoped_session_prefix(
|
||||
ha_user_id: str | None,
|
||||
agent_id: str | None,
|
||||
) -> str:
|
||||
"""Build the common OpenClaw session-key prefix for a HA user and agent."""
|
||||
user = normalize_ha_user_id(ha_user_id)
|
||||
agent = normalize_optional_text(agent_id) or DEFAULT_CHAT_AGENT_ID
|
||||
return f"agent:{_sanitize_session_part(agent)}:ha:user:{_sanitize_session_part(user)}:session:"
|
||||
|
||||
|
||||
def _sanitize_session_part(value: str) -> str:
|
||||
"""Keep scoped session ids header-safe and readable."""
|
||||
cleaned = re.sub(r"[^A-Za-z0-9_.-]+", "_", value.strip())
|
||||
return cleaned.strip("_") or "default"
|
||||
cleaned = re.sub(r"[^A-Za-z0-9_.-]+", "-", value.strip().lower())
|
||||
return cleaned.strip("._-") or "default"
|
||||
|
||||
Reference in New Issue
Block a user