feat(catalog): updated model catalog with new models and variant support

- Removed deprecated devin models and legacy GPT-5 codex variants from model catalog.
- Added Gemini 3.5 Flash Lite and Gemini 3.6 Flash models across multiple providers.
- Added SWE-1.6, SWE-1.7, poolside/laguna, and other new models to catalog.
- Added variant collapse support for Gemini 3.6 Flash family.
- Updated context windows, pricing, and API routing for various qwen and grok models.
This commit is contained in:
can1357
2026-07-22 20:30:03 +02:00
parent 7b141199d5
commit e06ac0b787
4 changed files with 1221 additions and 2062 deletions
+36
View File
@@ -2,6 +2,42 @@
## [Unreleased]
### Added
- Added MiniMax M3 model with reasoning and multi-modal support
- Added Gemini 3.5 Flash Lite model across multiple providers
- Added Gemini 3.6 Flash model across multiple providers with thinking support
- Added Hy3 model with reasoning and effort-based thinking
- Added Doubao-Seed-Character model with image input support
- Added LongCat 2.0 model across multiple providers
- Added Laguna S 2.1 model (free and paid tiers) across multiple providers
- Added Qwen 3.6 35B A3B model with thinking support
- Added SWE-1.6 Slow model to devin agent catalog
- Added XiaomiMiMo/MiMo-V2.5 model with reasoning support
### Changed
- Changed Grok 4.5 API type from "openai-completions" to "openai-responses"
- Changed thinking format for "o3-mini" from "zai" to "kimi"
- Renamed "Auto Router (Beta)" to "OpenRouter Auto Router (Beta)"
- Renamed "Body Builder (beta)" to "OpenRouter Body Builder (beta)"
- Renamed "Pareto Code Router" to "OpenRouter Pareto Code Router"
- Updated numerous model context window sizes, costs, and token limits
- Updated "o3-mini" model to support thinking capabilities
### Removed
- Removed Claude Fable 5 family of models from devin catalog
- Removed Claude Opus 4.6 and 4.7 model families from devin catalog
- Removed Claude Sonnet 4.6 and 5 model families from devin catalog
- Removed DeepSeek V4 Pro from devin catalog
- Removed Gemini 3.1 Pro and Gemini 3.5 Flash families from devin catalog
- Removed GLM-5.2 and GLM-5.2 1M from devin catalog
- Removed GPT-5 through GPT-5.3 Codex variants from openai-codex catalog
- Removed GPT-5.4 nano from openai-codex catalog
- Removed SWE-1.6 family models from devin catalog
- Removed Nemotron 3 Ultra from devin catalog
## [17.0.6] - 2026-07-20
### Added
File diff suppressed because it is too large Load Diff
+32 -11
View File
@@ -227,13 +227,12 @@ const GEMINI_3_PRO_FAMILY_BUDGETS: Readonly<Partial<Record<Effort, number>>> = {
};
/**
* The two Cloud Code Assist providers share the same Antigravity discovery list
* but disagree on the thinking transport: `google-antigravity` (daily-cloudcode-pa)
* sends an explicit `thinkingBudget` (verified against captured requests), while
* `google-gemini-cli` (cloudcode-pa) follows the official Gemini CLI and uses
* `thinkingLevel`. The Gemini 3.x families therefore differ only in thinking
* transport (and, for Flash, the per-tier wire-id routing); everything else is
* shared verbatim.
* Cloud Code Assist's legacy Gemini 3.5 Flash and 3.1 Pro families use
* different thinking transports: `google-antigravity` (daily-cloudcode-pa)
* sends captured `thinkingBudget` values, while `google-gemini-cli`
* (cloudcode-pa) follows the official Gemini CLI and uses `thinkingLevel`.
* Gemini 3.6 exposes one wire id per level and uses `thinkingLevel` on both
* endpoints.
*/
function geminiFlashFamily(mode: "budget" | "google-level"): EffortVariantFamily {
const budget = mode === "budget";
@@ -266,6 +265,23 @@ function geminiFlashFamily(mode: "budget" | "google-level"): EffortVariantFamily
};
}
const GEMINI_36_FLASH_FAMILY: EffortVariantFamily = {
id: "gemini-3.6-flash",
name: "Gemini 3.6 Flash",
members: ["gemini-3.6-flash-low", "gemini-3.6-flash-medium", "gemini-3.6-flash-high", "gemini-3.6-flash-tiered"],
routing: {
[Effort.Minimal]: "gemini-3.6-flash-low",
[Effort.Low]: "gemini-3.6-flash-low",
[Effort.Medium]: "gemini-3.6-flash-medium",
[Effort.High]: "gemini-3.6-flash-high",
},
thinking: {
mode: "google-level",
efforts: GEMINI_3_FLASH_FAMILY_EFFORTS,
requiresEffort: true,
},
};
function geminiProFamily(mode: "budget" | "google-level"): EffortVariantFamily {
const budget = mode === "budget";
return {
@@ -346,14 +362,19 @@ const SHARED_CCA_FAMILIES: readonly EffortVariantFamily[] = [
thinkingPair("gemini-2.5-flash", "Gemini 2.5 Flash"),
];
/** `google-antigravity` (daily-cloudcode-pa): Gemini 3.x on the budget transport. */
/** `google-antigravity` Gemini families, using each generation's native transport. */
export const ANTIGRAVITY_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = {
families: [geminiFlashFamily("budget"), geminiProFamily("budget"), ...SHARED_CCA_FAMILIES],
families: [GEMINI_36_FLASH_FAMILY, geminiFlashFamily("budget"), geminiProFamily("budget"), ...SHARED_CCA_FAMILIES],
};
/** `google-gemini-cli` (cloudcode-pa): Gemini 3.x on the level transport (official CLI parity). */
/** `google-gemini-cli` Gemini families on the official CLI's level transport. */
export const GEMINI_CLI_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = {
families: [geminiFlashFamily("google-level"), geminiProFamily("google-level"), ...SHARED_CCA_FAMILIES],
families: [
GEMINI_36_FLASH_FAMILY,
geminiFlashFamily("google-level"),
geminiProFamily("google-level"),
...SHARED_CCA_FAMILIES,
],
};
export const DEVIN_VARIANT_COLLAPSE_TABLE: VariantCollapseTable = {
families: [
@@ -109,6 +109,41 @@ describe("collapseEffortVariants", () => {
});
});
it("collapses Gemini 3.6 Flash tiers into one routed logical spec", () => {
const out = collapseEffortVariants(
[
memberSpec("gemini-3.6-flash-high"),
memberSpec("gemini-3.6-flash-low"),
memberSpec("gemini-3.6-flash-medium"),
memberSpec("gemini-3.6-flash-tiered"),
],
ANTIGRAVITY_VARIANT_COLLAPSE_TABLE,
);
expect(out).toHaveLength(1);
const flash = out[0];
expect(flash?.id).toBe("gemini-3.6-flash");
expect(flash?.name).toBe("Gemini 3.6 Flash");
expect(flash?.requestModelId).toBe("gemini-3.6-flash-low");
expect(flash?.thinking).toEqual({
mode: "google-level",
efforts: [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High],
requiresEffort: true,
effortRouting: {
minimal: "gemini-3.6-flash-low",
low: "gemini-3.6-flash-low",
medium: "gemini-3.6-flash-medium",
high: "gemini-3.6-flash-high",
},
});
const model = buildModel(flash as ModelSpec<"google-gemini-cli">);
expect(resolveWireModelId(model, Effort.Minimal)).toBe("gemini-3.6-flash-low");
expect(resolveWireModelId(model, Effort.Low)).toBe("gemini-3.6-flash-low");
expect(resolveWireModelId(model, Effort.Medium)).toBe("gemini-3.6-flash-medium");
expect(resolveWireModelId(model, Effort.High)).toBe("gemini-3.6-flash-high");
});
it("drops routes whose target member is absent", () => {
const out = collapseEffortVariants(
[memberSpec("gemini-3.5-flash-extra-low")],