# `Jido.Agent.Identity.Agent`
[🔗](https://github.com/agentjido/jido/blob/v2.3.3/lib/jido/agent/identity/agent.ex#L1)

Helper for managing identity state in an agent.

Identity state is stored at the reserved key `:__identity__` in `agent.state`.

# `ensure`

```elixir
@spec ensure(
  Jido.Agent.t(),
  keyword()
) :: Jido.Agent.t()
```

Ensure agent has an identity, initializing it when missing.

# `get`

```elixir
@spec get(Jido.Agent.t(), Jido.Agent.Identity.t() | nil) ::
  Jido.Agent.Identity.t() | nil
```

Get identity state from agent state.

# `has_identity?`

```elixir
@spec has_identity?(Jido.Agent.t()) :: boolean()
```

Check if agent has identity state.

# `key`

```elixir
@spec key() :: atom()
```

Returns the reserved key for identity storage.

# `put`

```elixir
@spec put(Jido.Agent.t(), Jido.Agent.Identity.t()) :: Jido.Agent.t()
```

Put identity state into agent state.

# `snapshot`

```elixir
@spec snapshot(Jido.Agent.t()) :: map() | nil
```

Return a public snapshot of the agent's identity.

# `update`

```elixir
@spec update(Jido.Agent.t(), (Jido.Agent.Identity.t() | nil -&gt;
                          Jido.Agent.Identity.t())) ::
  Jido.Agent.t()
```

Update identity state using a function.
