Both Flash models accept audio input (matching their siblings
2.5-flash-lite and 3.5-flash and the google/* base models); the
catalog previously listed only text/image/video. Synced from the
live CrossModel /api/models endpoint.
Addresses the review blocker on #2790. CrossModel's upstream catalog now
reports each Claude model's reasoning surface as Anthropic exposes it, and
the regenerated TOMLs match providers/anthropic/models/ byte-for-byte:
- opus-4-7, opus-4-8, fable-5: effort [low,medium,high,xhigh,max]
- sonnet-5: toggle + effort [low,medium,high,xhigh,max]
- sonnet-4-6: effort [low,medium,high,max] + budget_tokens (min 1024)
- haiku-4-5: budget_tokens (min 1024)
The earlier gateway-specific values (effort truncated to low/medium/high,
budget clamped 1024..32000) are dropped in favor of parity with the native
Anthropic interface.
Also drops the misleading `context as number` cast: buildCrossModel now
skips a model with no resolvable context window instead of fabricating one,
which narrows the value to a number without the assertion.
bun run validate exits 0; bun models:sync crossmodel is idempotent.
Addresses the automated review on #2790:
- buildCrossModel now maps every non-base pricing tier from the live API
into cost.tiers (threshold -> context size), matching the Venice sync
convention, so tier pricing stays fresh on each sync instead of being
frozen at hand-authored values. Falls back to existing tiers only when
the API reports none.
- Cache fields are emitted only when cache_read is a genuine discount
(< input). gpt-5.5-pro reports cache_read == input (no caching benefit,
as OpenAI "pro" tiers offer no prompt caching), so both cache fields are
now dropped, matching how every other provider ships this model. It is
the only model in the catalog where cache_read >= input.
- reasoning effort values are filtered through an isReasoningEffort guard
instead of an `as never` cast, so an unexpected upstream value is dropped
rather than producing a TOML that fails validate.
bun run validate exits 0; bun models:sync crossmodel is idempotent
(0 created, 0 updated, 0 removed).
Addresses automated review feedback:
- claude-sonnet-5: reasoning_options now toggle+effort+budget_tokens (matches
siblings; the earlier [] came from a stale /api/models payload, now fixed)
- qwen3.7-plus: 256K context tier repriced (cache_write 0.18 -> 1.2, plus
input/cache_read), now scaling correctly above the base tier
- minimax-m2.7: drop max-output override (upstream now reports 131072 = base)
- provider.toml: document CrossModel's reasoning API surface
Regenerated via bun models:sync crossmodel; bun run validate passes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
New reasoning models now served by the CrossModel gateway; generated via
the crossmodel sync module (bun models:sync crossmodel).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds a sync provider module (packages/core/src/sync/providers/crossmodel.ts) that
pulls the catalog from CrossModel's public /api/models endpoint and regenerates the
provider TOMLs: served cost (USD micro/1M -> USD, context tiers preserved), limits,
modalities, and explicit per-model reasoning_options.
reasoning_options are provider-specific, derived from CrossModel's own gateway
surface rather than inherited from base_model:
- OpenAI-family: reasoning_effort (effort values per model; gpt-5.5-pro = medium/high/xhigh)
- Anthropic: thinking toggle + effort + budget_tokens, budget clamped to 1024..32000
by the gateway (not the upstream's native 63999)
- Gemini: reasoning_effort via the OpenAI-compatible endpoint; flash variants add toggle
- domestic upstreams (qwen/glm/kimi/minimax/mimo/hunyuan/deepseek): native control via
byte-transparent passthrough (toggle / budget / effort as each upstream accepts)
- non-reasoning models (gpt-4o-mini) carry no reasoning_options
- always-thinking / can't-disable models (kimi-k2.7-code, MiniMax M2.x) -> reasoning_options = []
Registered under the aggregators group so CI's hourly sync keeps the catalog fresh.
Validated with `bun run validate` (exit 0).