# `GEPA.LLM.Adapters.AgentSessionManager`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/llm/adapters/agent_session_manager.ex#L1)

GEPA LLM adapter backed by Agent Session Manager.

This is the local/CLI adapter for the temporary GEPA facade. It uses ASM's
public query/stream APIs and normalizes results into `GEPA.LLM.Response`.

# `lane`

```elixir
@type lane() :: :auto | :core | :sdk
```

# `provider`

```elixir
@type provider() :: :claude | :codex | :codex_exec | :gemini | :amp
```

# `t`

```elixir
@type t() :: %GEPA.LLM.Adapters.AgentSessionManager{
  asm_module: module(),
  lane: lane(),
  provider: provider(),
  provider_opts: keyword(),
  query_opts: keyword(),
  session: term(),
  session_opts: keyword(),
  stream_opts: keyword()
}
```

# `build_state`

```elixir
@spec build_state(keyword()) :: {:ok, t()} | {:error, term()}
```

# `capabilities`

```elixir
@spec capabilities(GEPA.LLM.Client.t()) :: MapSet.t(atom())
```

# `close`

```elixir
@spec close(GEPA.LLM.Client.t()) :: :ok | {:error, term()}
```

# `complete`

```elixir
@spec complete(GEPA.LLM.Client.t(), GEPA.LLM.Request.t()) ::
  {:ok, GEPA.LLM.Response.t()} | {:error, term()}
```

# `new`

```elixir
@spec new(keyword()) :: {:ok, GEPA.LLM.Client.t()} | {:error, term()}
```

# `new!`

```elixir
@spec new!(keyword()) :: GEPA.LLM.Client.t()
```

# `stream`

```elixir
@spec stream(GEPA.LLM.Client.t(), GEPA.LLM.Request.t()) ::
  {:ok, Enumerable.t()} | {:error, term()}
```

---

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