Module: Ask::SessionProtocol

Defined in:
lib/ask/session_protocol.rb,
lib/ask/session_protocol/host.rb,
lib/ask/session_protocol/client.rb,
lib/ask/session_protocol/events.rb,
lib/ask/session_protocol/schema.rb,
lib/ask/session_protocol/methods.rb,
lib/ask/session_protocol/version.rb,
lib/ask/session_protocol/interactions.rb

Overview

ask-session-protocol — the canonical wire contract between the ask session host (ask-app-server) and every client: terminal TUI, web console, bots, IDE integrations.

This gem is a definition, not an implementation. It contains no runtime, no transports, and no session logic. It is the single authoritative, versioned artifact for what a session event looks like on the wire and which methods a host exposes — so the host and every client evolve independently against the same contract.

Defined Under Namespace

Modules: Events, Host, Interactions, Methods, Schema Classes: Client

Constant Summary collapse

PROTOCOL_VERSION =

Wire protocol version, negotiated in the initialize handshake. Semantic: bump the minor on additive changes (new events, new methods), bump the major on breaking changes. Clients must tolerate unknown event types and methods within the same major version.

"1.0"
DELIVERY_KINDS =

How a subscriber receives events for a session.

live                — events are pushed as they happen; no replay
replay              — the host replays the session's event log
                    from after_seq before pushing new events
web-remote-replayable — replay semantics tuned for web/remote
                    clients (snapshot-friendly, resumable)
%w[live replay web-remote-replayable].freeze
VERSION =
"0.2.0"