Add an Ambient sync provider that maps the OpenRouter-shaped catalog through the
shared builder. Skip catalog entries with is_ready=false so only served models
are generated, and set deleteMissing=false with skipped/missing notices so a
transient catalog omission retains local files instead of deleting them. Emit
reasoning_options = [] for reasoning models, since Ambient exposes no reasoning
control, rather than silently inheriting the base model's options.
Replace the standalone generate-chutes.ts with a SyncProvider module
(src/sync/providers/chutes.ts) registered in the sync system, so the
Chutes catalog is kept current by the automated model sync instead of a
hand-run generator. Resync the catalog to the live llm.chutes.ai/v1/models
set (13 models).
- reasoning_options: emit [] — the API advertises a reasoning capability
but exposes no toggle/effort parameter, so there is no provider evidence
for a reasoning option.
- Qwen3-235B-A22B-Thinking-2507-TEE: carry checkpoint-specific metadata
inline instead of factoring it through the generic alibaba/qwen3-235b-a22b
base (whose context window and capabilities differ).
- Mistral-Nemo-Instruct-2407-TEE references the canonical mistral/mistral-nemo
via a base_model alias (its "unsloth" source org has no default mapping).
- Correct the inline models' release dates (Thinking-2507 -> 2025-07,
DeepSeek-V3.2 -> 2025-12).
- Document the provider under "Chutes Notes" in sync.md.
On Windows, `path.relative()` and `Bun.Glob` return paths with backslash
separators, while model IDs and the Chutes API use forward slashes. This
broke two things on Windows:
- `generate()` keyed model metadata as `provider\model`, so every
`base_model` reference failed to resolve, making `bun run validate`,
the test suite and the web build unusable.
- `generate-chutes.ts` compared backslash file paths against forward-slash
API IDs, so the orphan check matched nothing and would delete every
existing model file.
Normalize the affected paths to forward slashes. No behaviour change on
POSIX, where `path.sep` is already `/`.
- Derive open_weights from base model metadata when present
- Remove open_weights from baseModelOverrides and formatBaseModelToml
- Add temperature comparison in detectChanges for provider models
- Add base_model lookup via models/ metadata directory
- Support new reasoning field (reasoning_options effort), audio pricing, and full TOML formatting
- Preserve existing fields and emit minimal override TOMLs when base_model present
- Update change detection and formatting for base_model mode
Adds the Ambient inference provider (api.ambient.xyz) with an initial
catalog of GLM-5.1 and Kimi K2.6, plus a generator script that pulls
from /v1/models so pricing and limits stay in sync with the upstream API.
Run `bun run ambient:generate` to refresh model TOMLs.