CliSubprocessCore.ModelRegistry (CliSubprocessCore v0.1.0)

Copy Markdown View Source

Canonical model resolution, validation, and argument payload construction.

Summary

Types

model()

provider_backend()

@type provider_backend() :: :anthropic | :ollama | atom()

resolution_error()

@type resolution_error() ::
  {:unknown_model, String.t() | nil, [String.t()], atom()}
  | {:invalid_reasoning_effort, term(), [String.t()] | [number()], atom()}
  | {:model_unavailable, atom(), term()}
  | {:empty_or_invalid_model, String.t(), atom()}

selection()

Functions

build_arg_payload(provider, requested_model, opts \\ [])

@spec build_arg_payload(atom(), String.t() | nil, keyword()) ::
  {:ok, CliSubprocessCore.ModelRegistry.Selection.t()}
  | {:error, resolution_error()}

Builds the resolved payload used by downstream CLI renderers.

default_model(provider, opts \\ [])

@spec default_model(
  atom(),
  keyword()
) :: {:ok, String.t()} | {:error, {:model_unavailable, atom(), term()}}

list_visible(provider, opts \\ [])

@spec list_visible(
  atom(),
  keyword()
) :: {:ok, [String.t()]} | {:error, {:model_unavailable, atom(), term()}}

normalize_reasoning_effort(provider, model, requested_reasoning)

@spec normalize_reasoning_effort(
  atom(),
  CliSubprocessCore.ModelRegistry.Model.t() | String.t(),
  term()
) ::
  {:ok,
   %{
     reasoning: String.t() | nil,
     reasoning_effort: number() | nil,
     normalized_reasoning_effort: number() | nil
   }}
  | {:error,
     {:invalid_reasoning_effort, term(), [String.t()] | [number()], atom()}}

resolve(provider, requested_model, opts \\ [])

@spec resolve(atom(), String.t() | nil, keyword()) ::
  {:ok, CliSubprocessCore.ModelRegistry.Selection.t()}
  | {:error, resolution_error()}

validate(provider, requested_model)

@spec validate(atom(), String.t() | atom() | keyword() | map() | nil) ::
  {:ok, CliSubprocessCore.ModelRegistry.Model.t()}
  | {:error, resolution_error()}