25 lines
745 B
Python
25 lines
745 B
Python
"""Agent key derivation helpers shared across OpenClaw modules."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
from uuid import uuid4
|
|
|
|
from app.models.agents import Agent
|
|
from app.services.openclaw.constants import _SESSION_KEY_PARTS_MIN
|
|
|
|
|
|
def _slugify(value: str) -> str:
|
|
slug = re.sub(r"[^a-z0-9]+", "-", value.lower()).strip("-")
|
|
return slug or uuid4().hex
|
|
|
|
|
|
def agent_key(agent: Agent) -> str:
|
|
"""Return stable gateway agent id derived from session key or name fallback."""
|
|
session_key = agent.openclaw_session_id or ""
|
|
if session_key.startswith("agent:"):
|
|
parts = session_key.split(":")
|
|
if len(parts) >= _SESSION_KEY_PARTS_MIN and parts[1]:
|
|
return parts[1]
|
|
return _slugify(agent.name)
|