fix(provider): add glm-5.3 to zai_coding provider - #3847
Conversation
GLM-5.3 was released on 2026-08-14 and is available to all GLM Coding Plan subscribers, but was missing from the hardcoded zai_coding catalog. Adds the glm-5.3 model entry with specs from the official docs: - 1M context window, 128K max output - text-only input - always-on reasoning (low/high/max effort), tools + parallel calls Not added to the general 'zai' provider: the Model API endpoint for GLM-5.3 is not yet live (docs list it as 'available soon').
|
Action required: PR inactive for 5 days. |
|
| Run | Branch/SHA | Nightly | Result |
|---|---|---|---|
| 31225238584 | main @ 4c6b68f6 (Aug 7) |
1.99.0-nightly (84b36a78a 2026-08-06) |
✅ pass |
| 31233723926 | main @ 6ed5d37b (Aug 8) |
1.99.0-nightly (1a98b1e13 2026-08-07) |
❌ fail — same 11 locations |
| 32090104272 | this PR (Aug 20) | current nightly | ❌ fail — same 11 locations |
No relevant code changed between the green and red main runs (only dependency chores: two-face, libsqlite3-sys, diesel, clap_complete). The trigger was the nightly toolchain roll — the autofix workflow uses toolchain: nightly unpinned, so clippy behavior changed overnight.
Root cause
The workspace pins async-trait = "0.1.89" (root Cargo.toml). #[async_trait] generates code that adds #[must_use] to methods returning anyhow::Result<()> — and Result is already #[must_use], so clippy's double_must_use fires on the macro expansion (the errors note: "this warning originates in the attribute macro async_trait").
Upstream fixed this the same day main broke: async-trait 0.1.92 (released 2026-08-08) — "Resolve double_must_use clippy lint in generated code (#303)". The repo is on 0.1.89, so it never picked up the fix.
Suggested fix
Bump the workspace dependency (semver-compatible patch containing exactly this fix):
# Cargo.toml
async-trait = "0.1.92" # was "0.1.89"plus cargo update -p async-trait to refresh Cargo.lock.
Optional hardening, separately worth considering:
- Pin the workflow's nightly (e.g.
nightly-2026-08-06) so lint behavior can't change under you overnight. Trade-off: you lose new-lint drift detection until you deliberately roll the pin. - Note
rust-toolchain.tomlpins stable1.97while autofix.ci overrides with unpinnednightly— that's why CI and local stable builds can disagree.
This blocks every PR opened since Aug 8 (mergeable_state: blocked with Build and Test green). Happy to open the one-line bump PR + Cargo.lock update if that's useful — just say the word.
Summary
GLM-5.3 was released on 2026-08-14 and is available to all GLM Coding Plan subscribers (announcement, docs), but it is missing from the hardcoded
zai_codingmodel catalog. This PR adds it.Changes
glm-5.3as the first model under thezai_codingprovider, mirroring the existingglm-5.2entry schema:context_length: 1048576 (1M, per official docs)tools_supported,supports_parallel_tool_calls,supports_reasoning:trueinput_modalities:["text"](GLM-5.3 is text-only)low/high/max)Why only
zai_codingand notzaiThe GLM Coding Plan endpoint (
https://api.z.ai/api/coding/paas/v4) serves GLM-5.3 to all plan tiers now. The general Model API endpoint still lists GLM-5.3 as "available soon" (docs), so the entry is intentionally not added to thezaiprovider yet.Notes for reviewers
glm-5.2/glm-5.1to GLM-5.3 server-side (devpack docs), so existing users are unaffected; this just makes the real model ID selectable.reasoning.enabledtothinking: {type: enabled}, which matches the required payload.glm-5.2entry. No existing tests reference zai model lists, so no test changes were needed.Verification
provider.jsonparses cleanly and the new entry uses the identical key set asglm-5.2provider_repo.rsor integration tests