# `LLMDB.Snapshot.ReleaseStore`
[🔗](https://github.com/agentjido/llm_db/blob/main/lib/llm_db/snapshot/release_store.ex#L1)

GitHub Releases-backed snapshot artifact store.

Runtime fetching resolves immutable snapshot and history releases via the
GitHub Releases API and downloads public assets via Req. Publishing is
handled with the `gh` CLI, intended for local maintainer workflows and
GitHub Actions.

This shared transport is internal. Runtime consumers configure snapshot
sources through `LLMDB.load/1`; maintainers use the supported
`mix llm_db.snapshot.*` and `mix llm_db.history.*` tasks. Direct publishing
calls are documentation-deprecated through the current major release.

# `config`

```elixir
@type config() :: %{repo: String.t(), index_tag: String.t(), cache_dir: String.t()}
```

# `asset_url`

```elixir
@spec asset_url(String.t(), String.t(), keyword() | map()) :: String.t()
```

# `config`

```elixir
@spec config(keyword() | map()) :: config()
```

# `download_history_archive`

```elixir
@spec download_history_archive(String.t(), keyword() | map()) ::
  :ok | {:error, term()}
```

# `ensure_snapshot_release`

```elixir
@spec ensure_snapshot_release(String.t(), String.t(), String.t(), keyword() | map()) ::
  {:ok, String.t()} | {:error, term()}
```

# `fetch_history_meta`

```elixir
@spec fetch_history_meta(keyword() | map()) :: {:ok, map()} | {:error, term()}
```

# `fetch_latest`

```elixir
@spec fetch_latest(keyword() | map()) :: {:ok, map()} | {:error, term()}
```

# `fetch_snapshot`

```elixir
@spec fetch_snapshot(:latest | String.t(), keyword() | map()) ::
  {:ok, %{snapshot: map(), snapshot_id: String.t(), path: String.t()}}
  | {:error, term()}
```

# `fetch_snapshot_index`

```elixir
@spec fetch_snapshot_index(keyword() | map()) :: {:ok, [map()]} | {:error, term()}
```

# `history_archive_asset_url`

```elixir
@spec history_archive_asset_url(String.t(), keyword() | map()) :: String.t() | nil
```

# `history_meta_asset_url`

```elixir
@spec history_meta_asset_url(String.t(), keyword() | map()) :: String.t() | nil
```

# `history_tag`

```elixir
@spec history_tag(String.t()) :: String.t()
```

# `publish_history_release`

```elixir
@spec publish_history_release([String.t()], String.t(), keyword() | map()) ::
  {:ok, String.t()} | {:error, term()}
```

# `snapshot_asset_url`

```elixir
@spec snapshot_asset_url(String.t(), keyword() | map()) :: String.t() | nil
```

# `snapshot_meta_asset_url`

```elixir
@spec snapshot_meta_asset_url(String.t(), keyword() | map()) :: String.t() | nil
```

# `snapshot_tag`

```elixir
@spec snapshot_tag(String.t()) :: String.t()
```

---

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