"""JSON-RPC 2.0 protocol types."""
from typing import Any
from pydantic import BaseModel
class Request(BaseModel):
"""JSON-RPC request."""
jsonrpc: str = "2.0"
id: int | str | None = None
method: str
params: dict[str, Any] = {}
class RpcError(BaseModel):
"""JSON-RPC error."""
code: int
message: str
data: Any | None = None
class Response(BaseModel):
"""JSON-RPC response."""
jsonrpc: str = "2.0"
id: int | str | None = None
result: Any | None = None
error: RpcError | None = None
@classmethod
def success(cls, id: int | str | None, result: Any) -> "Response":
"""Create a success response."""
return cls(id=id, result=result)
@classmethod
def error(
cls, id: int | str | None, code: int, message: str, data: Any = None
) -> "Response":
"""Create an error response."""
return cls(id=id, error=RpcError(code=code, message=message, data=data))
# Standard JSON-RPC error codes
class ErrorCode:
PARSE_ERROR = -32700
INVALID_REQUEST = -32600
METHOD_NOT_FOUND = -32601
INVALID_PARAMS = -32602
INTERNAL_ERROR = -32603
# Custom error codes
MODEL_NOT_LOADED = -32001
MODEL_ERROR = -32002
SKILL_NOT_FOUND = -32003