mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
Finished reorganization
This commit is contained in:
+3
-78
@@ -9,30 +9,18 @@ Real-time communication via WebSocket connections for:
|
||||
|
||||
import asyncio
|
||||
import json
|
||||
from dataclasses import dataclass
|
||||
from datetime import UTC, datetime
|
||||
from typing import Any
|
||||
from uuid import UUID
|
||||
|
||||
import httpx
|
||||
from fastapi import APIRouter, WebSocket, WebSocketDisconnect, status
|
||||
from pydantic import BaseModel
|
||||
|
||||
from roboco.api.schemas.websocket import (
|
||||
NewMessageBroadcast,
|
||||
)
|
||||
from roboco.config import settings
|
||||
|
||||
|
||||
@dataclass
|
||||
class NewMessageBroadcast:
|
||||
"""Data for broadcasting a new message."""
|
||||
|
||||
channel_id: UUID
|
||||
session_id: UUID
|
||||
message_id: UUID
|
||||
agent_id: UUID
|
||||
content: str
|
||||
message_type: str
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@@ -215,69 +203,6 @@ async def validate_channel_access(channel_id: UUID, agent_id: UUID) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# WebSocket Message Types
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class WSMessage(BaseModel):
|
||||
"""Base WebSocket message."""
|
||||
|
||||
type: str
|
||||
timestamp: datetime = datetime.now(UTC)
|
||||
|
||||
|
||||
class WSMessageNew(WSMessage):
|
||||
"""New message event."""
|
||||
|
||||
type: str = "message.new"
|
||||
message_id: UUID
|
||||
agent_id: UUID
|
||||
content: str
|
||||
message_type: str
|
||||
|
||||
|
||||
class WSMessageEdit(WSMessage):
|
||||
"""Message edited event."""
|
||||
|
||||
type: str = "message.edit"
|
||||
message_id: UUID
|
||||
content: str
|
||||
|
||||
|
||||
class WSMessageDelete(WSMessage):
|
||||
"""Message deleted event."""
|
||||
|
||||
type: str = "message.delete"
|
||||
message_id: UUID
|
||||
|
||||
|
||||
class WSAgentStream(WSMessage):
|
||||
"""Agent stream chunk."""
|
||||
|
||||
type: str = "agent.stream"
|
||||
agent_id: UUID
|
||||
chunk: str
|
||||
|
||||
|
||||
class WSSessionClosed(WSMessage):
|
||||
"""Session closed event."""
|
||||
|
||||
type: str = "session.closed"
|
||||
session_id: UUID
|
||||
reason: str
|
||||
|
||||
|
||||
class WSNotification(WSMessage):
|
||||
"""Notification event."""
|
||||
|
||||
type: str = "notification"
|
||||
notification_id: UUID
|
||||
notification_type: str
|
||||
subject: str
|
||||
priority: str
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# WebSocket Routes
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user