# `ClaudeAgentSDK.SessionStore.Adapter`
[🔗](https://github.com/nshkrdotcom/claude_agent_sdk/blob/v0.21.0/lib/claude_agent_sdk/session_store/adapter.ex#L1)

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.

# `entry`

```elixir
@type entry() :: %{optional(String.t() | atom()) =&gt; term()}
```

# `list_entry`

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

# `summary_entry`

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

# `append`

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

# `delete`
*optional* 

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

# `list_session_summaries`
*optional* 

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

# `list_sessions`
*optional* 

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

# `list_subkeys`
*optional* 

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

# `load`

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

---

*Consult [api-reference.md](api-reference.md) for complete listing*
