Raxol.AgentClientProtocol.Schema.LifecycleExtras (Raxol Agent Client Protocol v0.1.0)

Copy Markdown View Source

Minimal, oracle-derived param/result structs for v1.19.0 ACP methods that had no home in the ported f1729 Schema.* layer: session/close, session/delete, logout, session/update (the notification envelope), and the protocol-level $/cancel_request.

Unlike the sibling agent_types.ex/client_types.ex/unstable.ex files, these are not ports of an upstream f1729 module (f1729 predates schema-v1.19.0 and never had these types) — they are read directly off priv/schema-oracle/v1/schema.json's $defs for CloseSessionRequest, CloseSessionResponse, DeleteSessionRequest, DeleteSessionResponse, LogoutResponse, SessionNotification, and CancelRequestNotification. No upstream MIT attribution applies to this file.

Every struct here follows the same total-decode + _meta pass-through convention as the rest of the package, reusing the shared decode helpers from Raxol.AgentClientProtocol.Schema.AgentTypes (fetch/2, decode_optional/3, extract_meta/2, put_meta/2) exactly as Schema.Unstable does. from_json/1 never raises; it always returns {:ok, t} or {:error, reason}.

LogoutRequest is intentionally NOT ported here

priv/schema-oracle/v1/schema.json's LogoutRequest def carries no properties beyond the universal _meta envelope. The logout row in Raxol.AgentClientProtocol.MethodTable declares params: nil for exactly this reason — the Router decodes nil straight through and the generated callback drops to arity 1 (ctx only, no params argument), so there is no from_json/1 call site that would ever receive a LogoutRequest struct. LogoutResponse IS ported below because logout is a :request-kind row and every request row needs a non-nil result module regardless of whether its params are decoded.