ClaudeAgentSDK.SessionStore.Adapter behaviour (claude_agent_sdk v0.18.0)

Copy Markdown View Source

Duck-typed SessionStore adapter contract and dispatcher.

Adapters are ordinary structs or modules. Struct adapters implement append(store, key, entries) and load(store, key). Module-only adapters may implement append(key, entries) and load(key). Optional methods are probed before use.

Summary

Types

entry()

@type entry() :: %{optional(String.t() | atom()) => term()}

list_entry()

@type list_entry() :: %{session_id: String.t(), mtime: integer()}

summary_entry()

@type summary_entry() :: %{session_id: String.t(), mtime: integer(), data: map()}

Callbacks

append(term, t, list)

@callback append(term(), ClaudeAgentSDK.SessionStore.Key.t(), [entry()]) ::
  :ok | {:error, term()}

delete(term, t)

(optional)
@callback delete(term(), ClaudeAgentSDK.SessionStore.Key.t()) :: :ok | {:error, term()}

list_session_summaries(term, t)

(optional)
@callback list_session_summaries(term(), String.t()) ::
  {:ok, [summary_entry()]} | [summary_entry()] | {:error, term()}

list_sessions(term, t)

(optional)
@callback list_sessions(term(), String.t()) ::
  {:ok, [list_entry()]} | [list_entry()] | {:error, term()}

list_subkeys(term, t)

(optional)
@callback list_subkeys(term(), ClaudeAgentSDK.SessionStore.Key.t()) ::
  {:ok, [String.t()]} | [String.t()] | {:error, term()}

load(term, t)

@callback load(term(), ClaudeAgentSDK.SessionStore.Key.t()) ::
  {:ok, [entry()] | nil} | [entry()] | nil | {:error, term()}