Provider model metadata used for context budgeting.
The primary consumer today is Alloy.Context.Compactor, but this module
keeps model-window knowledge in one place so provider updates do not require
editing token estimation logic directly.
Summary
Functions
Returns the known model catalog.
Returns the known context window limit for a model name.
Returns the default fallback context window for unknown models.
Types
@type model_entry() :: %{ name: String.t(), limit: pos_integer(), suffix_patterns: [String.t() | Regex.t()] }
@type override_entry() :: pos_integer() | %{ :limit => pos_integer(), optional(:suffix_patterns) => [String.t() | Regex.t()] }
Functions
@spec catalog() :: [model_entry()]
Returns the known model catalog.
@spec context_window( String.t(), %{optional(String.t()) => override_entry()} | [{String.t(), override_entry()}] ) :: pos_integer() | nil
Returns the known context window limit for a model name.
overrides may provide exact-model or family overrides as either:
%{"model-name" => 1_000_000}%{"model-name" => %{limit: 1_000_000, suffix_patterns: ["", ~r/^-+$/]}}
For overrides that only provide a limit, existing catalog suffix patterns are reused when available; unknown models default to exact-match only.
Returns nil when the model is not in the current catalog or overrides.
@spec default_context_window() :: pos_integer()
Returns the default fallback context window for unknown models.