# `ReqManagedAgents.Provisioner.Store`
[🔗](https://github.com/cash-mckeeman/req_managed_agents/blob/v0.12.0/req_managed_agents/lib/req_managed_agents/provisioner/store.ex#L1)

Storage behaviour for the provision cache: where `{spec-hash → handle}` and
tag pointers live. `ReqManagedAgents.Provisioner.Store.ETS` (default) keeps
today's in-process semantics; `ReqManagedAgents.Provisioner.Store.File`
persists across OS processes for CLI/mix-task/cron consumers.

Keys are namespaced strings (`"provision:" <> hash`, `"tag:" <> base <> ":" <> tag`).
`delete_value/2` exists because eviction is value-keyed (a teardown holds the
handle, not the key).

# `delete`

```elixir
@callback delete(store_opts :: term(), key :: String.t()) :: :ok
```

# `delete_value`

```elixir
@callback delete_value(store_opts :: term(), value :: term()) :: :ok
```

# `get`

```elixir
@callback get(store_opts :: term(), key :: String.t()) :: {:ok, term()} | :miss
```

# `put`

```elixir
@callback put(store_opts :: term(), key :: String.t(), value :: term()) :: :ok
```

---

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