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.