"""Typed events used inside the TUI app and between components."""
from __future__ import annotations
from dataclasses import dataclass
from textual.message import Message
class WsEvent(Message):
"""Raw WebSocket event forwarded from the backend."""
def __init__(self, payload: dict) -> None:
self.payload = payload
super().__init__()
class ConnectionStatusChanged(Message):
"""Fired when WebSocket connection state changes."""
def __init__(self, connected: bool, detail: str = "") -> None:
self.connected = connected
self.detail = detail
super().__init__()
class UserSubmitted(Message):
"""User pressed Enter in the input box."""
def __init__(self, text: str) -> None:
self.text = text
super().__init__()
class CommandTriggered(Message):
"""User typed a slash command."""
def __init__(self, name: str, args: str) -> None:
self.name = name
self.args = args
super().__init__()
class PermissionRequest(Message):
"""Tool call requires destructive-operation confirmation."""
def __init__(self, tool: str, action: str, details: str, callback) -> None:
self.tool = tool
self.action = action
self.details = details
self.callback = callback
super().__init__()
@dataclass
class SessionInfo:
id: str
profile_id: str
title: str = ""
created_at: str = ""
class SessionListUpdated(Message):
"""Sessions list changed (loaded, switched, created)."""
def __init__(self, sessions: list[SessionInfo], current_id: str | None) -> None:
self.sessions = sessions
self.current_id = current_id
super().__init__()