- declare per-model reasoning_effort_levels on all 13 catalog entries
(root + backup cost maps) and map spec reasoning_options in the sync
script so re-runs keep the field
- register aiand in models_by_provider so get_valid_models, proxy
wildcard aiand/*, and cheapest-model picking behave like together_ai
- map aiand error payloads (402 insufficient_credits, 401 invalid key,
404 model_not_found) to precise exceptions, including the openai-SDK
unwrapped body shape
- register /v1/completions so text_completion(model='aiand/...') routes
natively with AIAND_API_KEY auth
Register ai& (https://api.aiand.com/v1) for chat completions, responses,
and Anthropic-style messages via the openai_like JSON provider path, with
AIAND_API_KEY/AIAND_API_BASE env vars and URL autodetection.
Add all 13 catalog models to both cost maps with per-token input, output,
and cache-read pricing, context and output limits, and capability flags
sourced from https://api.aiand.com/v1/api.json, plus scripts/
sync_aiand_models.py and a daily workflow that opens a PR when the live
catalog drifts from the registry. Removals stamp metadata.
absent_from_spec_since so every finding is a real file change, matching
the together_ai sync convention.
Register the provider in the Add Model form, dashboard provider maps
with logo, endpoint support matrices, and the README provider table.
Cover provider resolution, credential override, cost invariants over all
models, root/backup registry sync, respx-mocked chat, responses, and
messages routing, and the sync script's add, update, removal, and
reappearance paths in tests