Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/ai/.changes/res-1273-catalog-update-qwen-gpt6.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Refreshed the generated model catalog (1262 -> 1280 models): added GPT-6 Astra across eight providers with correct Responses routing and thinking levels, restored the Prime Inference Qwen 3.8 Max effort metadata after OpenRouter's route rename, and picked up upstream price and listing updates.
25 changes: 19 additions & 6 deletions packages/ai/scripts/generate-models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,12 @@ const PRIME_INFERENCE_FEATURED_MODELS = new Set([
"z-ai/glm-5.2",
]);

// Prime ids whose OpenRouter listing uses a different id. Empty today — Prime
// currently publishes ids that match OpenRouter's, but HF-style ids show up
// whenever a new route is added, so the mapping stays.
const PRIME_INFERENCE_OPENROUTER_ALIASES: Record<string, string> = {};
// Prime ids whose OpenRouter listing uses a different id (e.g. after an
// OpenRouter route rename); metadata lookups resolve through this mapping.
const PRIME_INFERENCE_OPENROUTER_ALIASES: Record<string, string> = {
Comment thread
cursor[bot] marked this conversation as resolved.
// OpenRouter renamed its route to the dated id; Prime still serves the undated one.
"qwen/qwen3.8-max": "qwen/qwen3.8-max-0902",
};

// Conservative fallbacks for catalog models with no OpenRouter match and no
// override above: an under-declared window degrades gracefully, an
Expand Down Expand Up @@ -300,6 +302,16 @@ function applyThinkingLevelMetadata(model: Model<any>): void {
if (model.id.includes("gpt-5.6")) {
mergeThinkingLevelMap(model, { minimal: null, max: "max" });
}
// gpt-6 reasoning is mandatory with no minimal effort; xhigh/max are supported (OpenRouter capability data).
if (model.id.includes("gpt-6")) {
mergeThinkingLevelMap(model, { minimal: null, xhigh: "xhigh", max: "max" });
}
if (
(model.api === "openai-responses" || model.api === "azure-openai-responses") &&
model.id.startsWith("gpt-6")
) {
mergeThinkingLevelMap(model, { off: null });
}
Comment thread
cursor[bot] marked this conversation as resolved.
// Per-family effort support per the Anthropic effort docs. Opus 4.6 / Sonnet 4.6
// have no xhigh; Fable 5 / Mythos 5 / Mythos Preview think every turn (off: null).
if (
Expand Down Expand Up @@ -1371,8 +1383,9 @@ async function loadModelsDevData(): Promise<Model<any>[]> {

// Copilot proxies Claude via the Anthropic Messages API
const isCopilotClaude = modelId.startsWith("claude-");
// gpt-5 models require responses API, others use completions
const needsResponsesApi = modelId.startsWith("gpt-5") || modelId.startsWith("oswe");
// gpt-5/gpt-6 models require responses API, others use completions
const needsResponsesApi =
modelId.startsWith("gpt-5") || modelId.startsWith("gpt-6") || modelId.startsWith("oswe");

const api: Api = isCopilotClaude
? "anthropic-messages"
Expand Down
Loading
Loading