feat(rpc): page stable message histories
This commit is contained in:
@@ -851,9 +851,20 @@ class SessionStats:
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class ReadyEvent:
|
||||
protocol_version: int | None = None
|
||||
supported_protocol_versions: tuple[int, ...] | None = None
|
||||
max_frame_bytes: int | None = None
|
||||
max_reassembled_frame_bytes: int | None = None
|
||||
type: Literal["ready"] = "ready"
|
||||
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class MessagesPage:
|
||||
messages: tuple[AgentMessage, ...]
|
||||
total_messages: int
|
||||
next_cursor: str | None
|
||||
|
||||
|
||||
@dataclass(slots=True, frozen=True)
|
||||
class ExtensionUiRequest:
|
||||
id: str
|
||||
@@ -1490,7 +1501,23 @@ def parse_extension_error(payload: JsonObject) -> ExtensionError:
|
||||
def parse_notification(payload: JsonObject) -> RpcNotification:
|
||||
event_type = payload.get("type")
|
||||
if event_type == "ready":
|
||||
return ReadyEvent()
|
||||
raw_versions = payload.get("supportedProtocolVersions")
|
||||
supported_versions: tuple[int, ...] | None = None
|
||||
if raw_versions is not None:
|
||||
if not isinstance(raw_versions, list) or any(
|
||||
not isinstance(version, int) or isinstance(version, bool)
|
||||
for version in raw_versions
|
||||
):
|
||||
raise ValueError("ready.supportedProtocolVersions must be integers")
|
||||
supported_versions = tuple(raw_versions)
|
||||
return ReadyEvent(
|
||||
protocol_version=_optional_int(payload, "protocolVersion"),
|
||||
supported_protocol_versions=supported_versions,
|
||||
max_frame_bytes=_optional_int(payload, "maxFrameBytes"),
|
||||
max_reassembled_frame_bytes=_optional_int(
|
||||
payload, "maxReassembledFrameBytes"
|
||||
),
|
||||
)
|
||||
if event_type == "extension_ui_request":
|
||||
return parse_extension_ui_request(payload)
|
||||
if event_type == "extension_error":
|
||||
|
||||
Reference in New Issue
Block a user