"""IPC message type definitions.""" from __future__ import annotations from dataclasses import dataclass, field from typing import Any @dataclass class IPCMessage: """A message exchanged between Rust and Python via JSON-line protocol.""" id: str type: str payload: dict[str, Any] = field(default_factory=dict) def to_dict(self) -> dict[str, Any]: return {"id": self.id, "type": self.type, "payload": self.payload} @classmethod def from_dict(cls, data: dict[str, Any]) -> IPCMessage: return cls( id=data.get("id", ""), type=data.get("type", ""), payload=data.get("payload", {}), ) def progress_message(request_id: str, percent: int, stage: str, message: str) -> IPCMessage: return IPCMessage( id=request_id, type="progress", payload={"percent": percent, "stage": stage, "message": message}, ) def error_message(request_id: str, code: str, message: str) -> IPCMessage: return IPCMessage( id=request_id, type="error", payload={"code": code, "message": message}, ) def ready_message() -> IPCMessage: return IPCMessage(id="system", type="ready", payload={"version": "0.1.0"})