protexa / space_worker /messages.py
admincybers2's picture
Upload folder using huggingface_hub
b0adf0e verified
Raw
History Blame Contribute Delete
2.05 kB
import re
import uuid
from datetime import datetime, timezone
def utc_now():
return datetime.now(timezone.utc).isoformat()
def sanitize_channel_part(value):
return re.sub(r"[^A-Za-z0-9_.-]+", "-", str(value)).strip("-") or "unknown"
class ResponseBuilder:
def __init__(self, settings):
self.settings = settings
def reply_channel_for(self, payload):
explicit = payload.get("reply_channel") or payload.get("reply_topic")
if explicit:
return explicit
user_id = sanitize_channel_part(payload.get("user_id") or payload.get("id") or "unknown")
session_id = sanitize_channel_part(payload.get("session_id") or "default")
return self.settings.reply_channel_template.format(user_id=user_id, session_id=session_id)
def build_success(self, payload):
user_id = payload.get("user_id") or payload.get("id")
if not user_id:
raise ValueError("payload must include user_id")
text = payload.get("message")
if text is None:
raise ValueError("payload must include message")
display_name = payload.get("name") or payload.get("username") or user_id
correlation_id = payload.get("correlation_id") or str(uuid.uuid4())
return {
"type": "space.response",
"ok": True,
"user_id": user_id,
"session_id": payload.get("session_id"),
"correlation_id": correlation_id,
"request": {"message": text},
"message": f"Hello {display_name}",
"created_at": utc_now(),
}
def build_error(self, payload, error):
user_id = payload.get("user_id") or payload.get("id") or "unknown"
return {
"type": "space.response",
"ok": False,
"user_id": user_id,
"session_id": payload.get("session_id"),
"correlation_id": payload.get("correlation_id") or str(uuid.uuid4()),
"error": str(error),
"created_at": utc_now(),
}