Persisted Anubis MCP session state, backing AttestoMCP.Anubis.SessionStore.Ecto.
One row per MCP session, keyed by the client's Mcp-Session-Id. state is
the JSON-serializable session map Anubis produces (client_info, capabilities,
frame, ...), stored as jsonb so it round-trips with string keys.
expires_at bounds how long a disconnected session record remains eligible
for recovery; expired rows are reaped lazily on load and by the store's
cleanup_expired/1. Anubis 2.0's normal Streamable HTTP recovery consumes
initialization metadata from that record but does not restore its saved live
frame or assigns.
Compile-guarded on Ecto.Schema: a consumer that does not persist MCP
sessions never compiles it.
Summary
Functions
Build the upsert changeset for a session row. Fail-closed: the session_id
and expires_at are required.
Types
Functions
@spec changeset(t() | Ecto.Changeset.t(), map()) :: Ecto.Changeset.t()
Build the upsert changeset for a session row. Fail-closed: the session_id
and expires_at are required.