feat(rpc): page stable message histories

This commit is contained in:
Wolfgang Schoenberger
2026-07-22 18:38:03 -07:00
parent 2a6bcc7984
commit ce8c9dc75f
15 changed files with 590 additions and 10 deletions
+28 -1
View File
@@ -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":