fix(#20156): Venice - add missing models and set a new model default#12964
fix(#20156): Venice - add missing models and set a new model default#12964sabrinaaquino wants to merge 14 commits intoopenclaw:mainfrom
Conversation
Additional Comments (1)
The Privacy Modes table still lists Prompt To Fix With AIThis is a comment left during a code review.
Path: docs/providers/venice.md
Line: 26:30
Comment:
**Privacy table is inconsistent**
The Privacy Modes table still lists `Kimi` and `MiniMax` under **Anonymized** models, but this PR moves those models into the **Private** section (and updates the static catalog privacy accordingly). This is a conflicting statement in the same doc and will mislead users about whether those models are fully private vs proxied; the table should be updated to match the new classification.
How can I resolve this? If you propose a fix, please make it concise. |
- Add kimi-k2-5 (Kimi K2.5) to static catalog (was missing, causing users to not see it when API fetch fails) - Add claude-opus-4-6 (Claude Opus 4.6) and zai-org-glm-4.7-flash to catalog - Change default Venice model from llama-3.3-70b to kimi-k2-5 (reasoning + vision, fully private) - Fix privacy values: kimi-k2-thinking and minimax-m21 are private (not anonymized) per the Venice API - Move minimax-m21 and kimi-k2-thinking to the private section - Update context window values to match live Venice API - Increase discovery timeout from 5s to 8s for reliability - Filter out offline models during API discovery - Enrich catalog entries with live context window from API - Update docs with new model tables and default recommendations
8b530e2 to
6f2d872
Compare
This reverts commit ecabf04.
|
@greptile-apps re-review |
Additional Comments (1)
In the Prompt To Fix With AIThis is a comment left during a code review.
Path: src/agents/venice-models.ts
Line: 411:419
Comment:
**Falsy context window ignored**
In the `else` branch for models not in the static catalog, `contextWindow` is set with `apiModel.model_spec.availableContextTokens || 128000` (src/agents/venice-models.ts:417). If the API ever returns `0` (or another falsy value), this will incorrectly fall back to `128000`, diverging from the API. Use an explicit null/undefined check here (similar to the fix already applied for catalog entries) so a present API value is always respected.
How can I resolve this? If you propose a fix, please make it concise. |
|
@greptile-apps re-review |
|
@greptile-apps re-review |
Additional Comments (1)
Prompt To Fix With AIThis is a comment left during a code review.
Path: src/agents/venice-models.ts
Line: 377:384
Comment:
**Unsafe cast may crash**
`const data = (await response.json()) as VeniceModelsResponse;` is used without validating the shape before accessing `data.data`/`m.model_spec` (e.g. `data.data.filter(...)`). If the Venice API returns a non-object (or an error payload) with HTTP 200, this will throw and force a full fallback to the static catalog. Consider a minimal runtime guard (e.g. ensure `data` is an object and `data.data` is an array of objects) before iterating so discovery remains robust.
How can I resolve this? If you propose a fix, please make it concise. |
|
@greptile-apps re-review |
|
@greptile-apps re-review |
Additional Comments (1)
Prompt To Fix With AIThis is a comment left during a code review.
Path: src/agents/venice-models.ts
Line: 346:353
Comment:
**Type mismatch can crash**
`VeniceModelsResponse` types `data` as `VeniceModel[]` with required `model_spec` (`interface VeniceModel { ... model_spec: VeniceModelSpec; }`), but the runtime code explicitly handles missing `model_spec` (`filter((m) => m.model_spec && ...)`). This mismatch makes it easy to introduce unsafe dereferences later because TypeScript will assume `model_spec` is always present. To keep the static typing aligned with actual API behavior, make `model_spec` optional in `VeniceModel` (and then rely on the existing `m.model_spec && ...` narrowing) or otherwise adjust the types so missing `model_spec` is represented.
How can I resolve this? If you propose a fix, please make it concise. |
bfc1ccb to
f92900f
Compare
|
@greptile-apps re-review |
|
Quick status after #38306 merged: the catalog-sync, live metadata hardening, and Venice default-onboarding breakages ( What still appears unique in this PR is the product decision to switch the default Venice model to If we keep this path, the next step should be to trim the PR to only the remaining default-model/docs delta so it’s easy to review against what already shipped. |
|
The remaining value from this PR has now landed in #38423.
I’m closing this PR as superseded to keep one canonical merged path for the Venice cleanup. Thanks again for the original report and implementation direction here. |
What this PR fixes
We've been getting reports from Venice users on OpenClaw where they can't see certain models, most critically Kimi K2.5 (kimi-k2-5). After investigating, the root cause is that the static model catalog (used as fallback when the Venice API is unreachable) was missing several models that are live on the API. Fixes #20156
Issues addressed
Files changed (Venice-only, minimal scope)
src/agents/venice-models.ts— catalog + discovery logicsrc/commands/onboard-auth.config-core.ts— default aliasdocs/providers/venice.md— model tables + recommendationsdocs/providers/index.md+ models.md — default model refsNote: The CI test failure in
pi-embedded-helpers.isbillingerrormessage.test.tsis a pre-existing issue on main introduced by #12946, unrelated to this PR.Greptile Summary
Adds missing Venice models (
kimi-k2-5,kimi-k2-thinking,claude-opus-4-6,claude-sonnet-4-6,zai-org-glm-4.7-flash,zai-org-glm-5,minimax-m25) to the static fallback catalog, changes the default model fromllama-3.3-70btokimi-k2-5, corrects privacy classifications forkimi-k2-thinkingandminimax-m21(anonymized → private), and improves model discovery by filtering offline models, increasing the API timeout (5s → 8s), and enriching catalog entries with live context window data.llama-3.3-70b→kimi-k2-5consistently updated across code (VENICE_DEFAULT_MODEL_ID, onboard alias) and docs (index.md,models.md,venice.md).model_specnull guard added. Previous review feedback about truthiness checks (!= nullforavailableContextTokens) and malformed entry handling (m.model_spec &&guard) have been addressed.Confidence Score: 4/5
Last reviewed commit: 2d0780b