Summary
Add GLM (Zhipu) as a provider. Zhipu's API is OpenAI Chat Completions-compatible, so this reuses the seam from #71 — data row + pricing rows + a contract test, not a new adapter.
Blocked by #71 (the OpenAI-compatible provider seam).
Scope
Acceptance
provider: zhipu runs from a recorded cassette with no adapter code beyond the seam.
make check green, offline.
Notes
GLM is also reachable via an Anthropic-compatible endpoint on some hosts; we standardize on the OpenAI-compatible path here to reuse the seam. Flag it if tool-calling parity forces the Anthropic path instead.
Summary
Add GLM (Zhipu) as a provider. Zhipu's API is OpenAI Chat Completions-compatible, so this reuses the seam from #71 — data row + pricing rows + a contract test, not a new adapter.
Blocked by #71 (the OpenAI-compatible provider seam).
Scope
zhipu,base_url= Zhipu's OpenAI-compatible endpoint, key fromZHIPUAI_API_KEY. Verify the current base URL and env-var name at implementation time (there are separate CN and international hosts).dryfire/data/pricing.yamlfor the GLM family (e.g.zhipu:glm-4.6).@pytest.mark.livesmoke test behindZHIPUAI_API_KEY.Acceptance
provider: zhipuruns from a recorded cassette with no adapter code beyond the seam.make checkgreen, offline.Notes
GLM is also reachable via an Anthropic-compatible endpoint on some hosts; we standardize on the OpenAI-compatible path here to reuse the seam. Flag it if tool-calling parity forces the Anthropic path instead.