"""Frame schemas -- the single source of truth for the wire protocol. Every frame the plugin sends/receives is modelled here as a dataclass + constants. ``docs/protocol/frames.schema.json`` is generated/mirrored from this module, and the Kotlin side mirrors these shapes (see ``docs/04-wire-protocol.md``). Milestone M1: hello/hello.ack, message, error, ping/pong. Milestone M2: message.start/update/stop, reasoning, tool.*, commentary, typing. Milestone M3: channel.*, search, sync. Milestone M4: media.*. Milestone M5: notification, fcm.register, read.receipt. """ PROTOCOL_VERSION = 1 # Frame type constants (the ``type`` field of every frame). TYPE_HELLO = "hello" TYPE_HELLO_ACK = "hello.ack" TYPE_ERROR = "error" TYPE_PING = "ping" TYPE_PONG = "pong"