# `Agentic.LLM.Provider.ClaudeCode`

Catalog-only Provider wrapper for the Claude Code CLI.

The CLI protocol (`Agentic.Protocol.ClaudeCode`) handles the actual
subprocess; this Provider wrapper exists so Claude Code shows up in
`Agentic.LLM.Catalog` as an alternative pathway for the Claude family.
The router groups it under the same `canonical_id` as Anthropic-direct
and OpenRouter, then scores all three pathways via `ProviderAccount`.

## `availability/1`

Three-state result (the proposal's graded availability):

  * `:unavailable` — `claude` binary not on PATH
  * `:degraded`    — binary present but `~/.claude/auth.json` is
                     missing or expired (CLI re-auths lazily on first
                     call; we still want the router to deprioritize)
  * `:ready`       — binary present and auth file is non-expired

Note: the `Agentic.LLM.Provider` behaviour does not yet declare an
`availability/1` callback. That's a follow-up; for now the function
is plain Elixir and the router consumes it via Worth's
`ProviderAccount` resolver.

# `availability`

```elixir
@spec availability(Agentic.LLM.ProviderAccount.t() | nil) ::
  :ready | :degraded | :unavailable
```

Three-state availability for the Claude Code pathway. Used by the
router-side `ProviderAccount` resolver in Worth to set the
`availability` field on this provider's account.

---

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