Spaces:
Runtime error
Runtime error
| 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(), | |
| } | |