diff --git a/.changeset/olive-pandas-smile.md b/.changeset/olive-pandas-smile.md new file mode 100644 index 00000000..f1ad90ac --- /dev/null +++ b/.changeset/olive-pandas-smile.md @@ -0,0 +1,22 @@ +--- +"@upstash/box": patch +"@upstash/box-cli": patch +--- + +Add GPT-6 Astra and Claude Fable 5.1, and correct two model picker entries. + +`GPT_6_Astra` is available on the OpenAI API, OpenRouter, the Vercel AI Gateway +and OpenCode Zen, all at $10 / $50 per MTok. + +`Fable_5_1` is available on the Claude API, OpenRouter, Vercel AI Gateway and +OpenCode Zen. Note the spelling differs by provider: the Claude API and Zen use +`claude-fable-5-1`, while the OpenRouter and Vercel gateways list it as +`claude-fable-5.1`. + +Removed `OpenAICodex.GPT_5_3_Codex_Spark` from the model picker. It is a ChatGPT +research preview rather than an API model. The enum member is still exported, so +this is not a breaking change; `OpenCodeModel.GPT_5_3_Codex_Spark` is unaffected +because Zen does sell it. + +GPT-5 Nano moved from the free group to the paid group, since Zen now charges +$0.05 / $0.40 per MTok for it. diff --git a/packages/cli/src/models.ts b/packages/cli/src/models.ts index 51960210..fd3b6c32 100644 --- a/packages/cli/src/models.ts +++ b/packages/cli/src/models.ts @@ -17,6 +17,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Anthropic", options: [ + { value: ClaudeCode.Fable_5_1, label: "Claude Fable 5.1" }, { value: ClaudeCode.Fable_5, label: "Claude Fable 5" }, { value: ClaudeCode.Opus_5, label: "Claude Opus 5" }, { value: ClaudeCode.Opus_4_8, label: "Claude Opus 4.8" }, @@ -33,6 +34,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5_1, label: "Claude Fable 5.1 (OR)" }, { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_5, label: "Claude Opus 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, @@ -42,6 +44,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: OpenRouterModel.DeepSeek_R1, label: "DeepSeek R1 (OR)" }, { value: OpenRouterModel.Gemini_2_5_Pro, label: "Gemini 2.5 Pro (OR)" }, { value: OpenRouterModel.Gemini_2_5_Flash, label: "Gemini 2.5 Flash (OR)" }, + { value: OpenRouterModel.GPT_6_Astra, label: "GPT-6 Astra (OR)" }, { value: OpenRouterModel.GPT_5_6_Sol, label: "GPT-5.6 Sol (OR)" }, { value: OpenRouterModel.GPT_5_6_Terra, label: "GPT-5.6 Terra (OR)" }, { value: OpenRouterModel.GPT_5_6_Luna, label: "GPT-5.6 Luna (OR)" }, @@ -53,6 +56,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { value: VercelModel.Claude_Fable_5_1, label: "Claude Fable 5.1 (Vercel)" }, { value: VercelModel.Claude_Fable_5, label: "Claude Fable 5 (Vercel)" }, { value: VercelModel.Claude_Opus_5, label: "Claude Opus 5 (Vercel)" }, { value: VercelModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (Vercel)" }, @@ -70,6 +74,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenAI", options: [ + { value: OpenAICodex.GPT_6_Astra, label: "GPT-6 Astra" }, { value: OpenAICodex.GPT_5_6_Sol, label: "GPT-5.6 Sol" }, { value: OpenAICodex.GPT_5_6_Terra, label: "GPT-5.6 Terra" }, { value: OpenAICodex.GPT_5_6_Luna, label: "GPT-5.6 Luna" }, @@ -77,7 +82,6 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: OpenAICodex.GPT_5_4, label: "GPT-5.4" }, { value: OpenAICodex.GPT_5_4_Mini, label: "GPT-5.4 Mini" }, { value: OpenAICodex.GPT_5_3_Codex, label: "GPT-5.3 Codex" }, - { value: OpenAICodex.GPT_5_3_Codex_Spark, label: "GPT-5.3 Codex Spark" }, { value: OpenAICodex.GPT_5_2_Codex, label: "GPT-5.2 Codex" }, { value: OpenAICodex.GPT_5_1_Codex_Max, label: "GPT-5.1 Codex Max" }, { value: OpenAICodex.GPT_5_1_Codex_Mini, label: "GPT-5.1 Codex Mini" }, @@ -86,6 +90,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5_1, label: "Claude Fable 5.1 (OR)" }, { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_5, label: "Claude Opus 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, @@ -95,6 +100,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: OpenRouterModel.DeepSeek_R1, label: "DeepSeek R1 (OR)" }, { value: OpenRouterModel.Gemini_2_5_Pro, label: "Gemini 2.5 Pro (OR)" }, { value: OpenRouterModel.Gemini_2_5_Flash, label: "Gemini 2.5 Flash (OR)" }, + { value: OpenRouterModel.GPT_6_Astra, label: "GPT-6 Astra (OR)" }, { value: OpenRouterModel.GPT_5_6_Sol, label: "GPT-5.6 Sol (OR)" }, { value: OpenRouterModel.GPT_5_6_Terra, label: "GPT-5.6 Terra (OR)" }, { value: OpenRouterModel.GPT_5_6_Luna, label: "GPT-5.6 Luna (OR)" }, @@ -106,6 +112,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { value: VercelModel.GPT_6_Astra, label: "GPT-6 Astra (Vercel)" }, { value: VercelModel.GPT_5_6_Sol, label: "GPT-5.6 Sol (Vercel)" }, { value: VercelModel.GPT_5_6_Terra, label: "GPT-5.6 Terra (Vercel)" }, { value: VercelModel.GPT_5_6_Luna, label: "GPT-5.6 Luna (Vercel)" }, @@ -122,15 +129,14 @@ export const MODEL_OPTIONS_BY_AGENT: Record< [Agent.OpenCode]: [ { label: "OpenCode — Free", - options: [ - { value: OpenCodeModel.Zen_GPT_5_Nano, label: "GPT-5 Nano (Free)" }, - { value: OpenCodeModel.Zen_Big_Pickle, label: "Big Pickle (Free)" }, - ], + options: [{ value: OpenCodeModel.Zen_Big_Pickle, label: "Big Pickle (Free)" }], }, { label: "OpenCode — Paid", options: [ + { value: OpenCodeModel.Zen_GPT_5_Nano, label: "GPT-5 Nano" }, { value: OpenCodeModel.Zen_MiniMax_M2_7, label: "MiniMax M2.7" }, + { value: OpenCodeModel.Zen_Claude_Fable_5_1, label: "Claude Fable 5.1" }, { value: OpenCodeModel.Zen_Claude_Fable_5, label: "Claude Fable 5" }, { value: OpenCodeModel.Zen_Claude_Opus_5, label: "Claude Opus 5" }, { value: OpenCodeModel.Zen_Claude_Sonnet_5, label: "Claude Sonnet 5" }, @@ -151,6 +157,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Anthropic", options: [ + { value: OpenCodeModel.Claude_Fable_5_1, label: "Claude Fable 5.1" }, { value: OpenCodeModel.Claude_Fable_5, label: "Claude Fable 5" }, { value: OpenCodeModel.Claude_Opus_5, label: "Claude Opus 5" }, { value: OpenCodeModel.Claude_Opus_4_8, label: "Claude Opus 4.8" }, @@ -167,6 +174,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenAI", options: [ + { value: OpenCodeModel.GPT_6_Astra, label: "GPT-6 Astra" }, { value: OpenCodeModel.GPT_5_5, label: "GPT-5.5" }, { value: OpenCodeModel.GPT_5_4_Pro, label: "GPT-5.4 Pro" }, { value: OpenCodeModel.GPT_5_4, label: "GPT-5.4" }, @@ -185,6 +193,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5_1, label: "Claude Fable 5.1 (OR)" }, { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_5, label: "Claude Opus 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, @@ -194,6 +203,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: OpenRouterModel.DeepSeek_R1, label: "DeepSeek R1 (OR)" }, { value: OpenRouterModel.Gemini_2_5_Pro, label: "Gemini 2.5 Pro (OR)" }, { value: OpenRouterModel.Gemini_2_5_Flash, label: "Gemini 2.5 Flash (OR)" }, + { value: OpenRouterModel.GPT_6_Astra, label: "GPT-6 Astra (OR)" }, { value: OpenRouterModel.GPT_5_6_Sol, label: "GPT-5.6 Sol (OR)" }, { value: OpenRouterModel.GPT_5_6_Terra, label: "GPT-5.6 Terra (OR)" }, { value: OpenRouterModel.GPT_5_6_Luna, label: "GPT-5.6 Luna (OR)" }, @@ -205,6 +215,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { value: VercelModel.Claude_Fable_5_1, label: "Claude Fable 5.1 (Vercel)" }, { value: VercelModel.Claude_Fable_5, label: "Claude Fable 5 (Vercel)" }, { value: VercelModel.Claude_Opus_5, label: "Claude Opus 5 (Vercel)" }, { value: VercelModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (Vercel)" }, diff --git a/packages/python-sdk/upstash_box/types.py b/packages/python-sdk/upstash_box/types.py index bc0d722e..63073741 100644 --- a/packages/python-sdk/upstash_box/types.py +++ b/packages/python-sdk/upstash_box/types.py @@ -49,6 +49,7 @@ class Agent(str, Enum): class ClaudeCode(str, Enum): """Claude Code model identifiers.""" + FABLE_5_1 = "anthropic/claude-fable-5-1" FABLE_5 = "anthropic/claude-fable-5" OPUS_4_5 = "anthropic/claude-opus-4-5" OPUS_4_6 = "anthropic/claude-opus-4-6" @@ -65,6 +66,7 @@ class ClaudeCode(str, Enum): class OpenAICodex(str, Enum): """OpenAI Codex model identifiers.""" + GPT_6_ASTRA = "openai/gpt-6-astra" GPT_5_6 = "openai/gpt-5.6" GPT_5_6_SOL = "openai/gpt-5.6-sol" GPT_5_6_TERRA = "openai/gpt-5.6-terra" @@ -82,6 +84,7 @@ class OpenAICodex(str, Enum): class OpenRouterModel(str, Enum): """OpenRouter model identifiers — shared across agents that support OpenRouter.""" + CLAUDE_FABLE_5_1 = "openrouter/anthropic/claude-fable-5.1" CLAUDE_FABLE_5 = "openrouter/anthropic/claude-fable-5" CLAUDE_OPUS_5 = "openrouter/anthropic/claude-opus-5" CLAUDE_SONNET_5 = "openrouter/anthropic/claude-sonnet-5" @@ -91,6 +94,7 @@ class OpenRouterModel(str, Enum): DEEPSEEK_R1 = "openrouter/deepseek/deepseek-r1" GEMINI_2_5_PRO = "openrouter/google/gemini-2.5-pro" GEMINI_2_5_FLASH = "openrouter/google/gemini-2.5-flash" + GPT_6_ASTRA = "openrouter/openai/gpt-6-astra" GPT_5_6_SOL = "openrouter/openai/gpt-5.6-sol" GPT_5_6_TERRA = "openrouter/openai/gpt-5.6-terra" GPT_5_6_LUNA = "openrouter/openai/gpt-5.6-luna" @@ -102,6 +106,7 @@ class OpenRouterModel(str, Enum): class VercelModel(str, Enum): """Vercel AI Gateway model identifiers.""" + CLAUDE_FABLE_5_1 = "vercel/anthropic/claude-fable-5.1" CLAUDE_FABLE_5 = "vercel/anthropic/claude-fable-5" CLAUDE_OPUS_5 = "vercel/anthropic/claude-opus-5" CLAUDE_SONNET_5 = "vercel/anthropic/claude-sonnet-5" @@ -109,6 +114,7 @@ class VercelModel(str, Enum): CLAUDE_SONNET_4_6 = "vercel/anthropic/claude-sonnet-4.6" CLAUDE_OPUS_4_6 = "vercel/anthropic/claude-opus-4.6" CLAUDE_HAIKU_4_5 = "vercel/anthropic/claude-haiku-4.5" + GPT_6_ASTRA = "vercel/openai/gpt-6-astra" GPT_5_6_SOL = "vercel/openai/gpt-5.6-sol" GPT_5_6_TERRA = "vercel/openai/gpt-5.6-terra" GPT_5_6_LUNA = "vercel/openai/gpt-5.6-luna" @@ -128,6 +134,7 @@ class OpenCodeModel(str, Enum): """OpenCode model identifiers — supports models from multiple providers.""" # Anthropic-backed OpenCode models + CLAUDE_FABLE_5_1 = "opencode/claude-fable-5-1" CLAUDE_FABLE_5 = "opencode/claude-fable-5" CLAUDE_OPUS_5 = "opencode/claude-opus-5" CLAUDE_OPUS_4_5 = "opencode/claude-opus-4-5" @@ -140,6 +147,7 @@ class OpenCodeModel(str, Enum): CLAUDE_SONNET_5 = "opencode/claude-sonnet-5" CLAUDE_HAIKU_4_5 = "opencode/claude-haiku-4-5" # OpenAI-backed OpenCode models + GPT_6_ASTRA = "opencode/gpt-6-astra" GPT_5_5 = "opencode/gpt-5.5" GPT_5_4 = "opencode/gpt-5.4" GPT_5_4_PRO = "opencode/gpt-5.4-pro" @@ -158,6 +166,7 @@ class OpenCodeModel(str, Enum): ZEN_BIG_PICKLE = "opencode/big-pickle" # Paid models ZEN_MINIMAX_M2_7 = "opencode/minimax-m2.7" + ZEN_CLAUDE_FABLE_5_1 = "opencode/claude-fable-5-1" ZEN_CLAUDE_FABLE_5 = "opencode/claude-fable-5" ZEN_CLAUDE_OPUS_5 = "opencode/claude-opus-5" ZEN_CLAUDE_SONNET_4_6 = "opencode/claude-sonnet-4-6" diff --git a/packages/sdk/README.md b/packages/sdk/README.md index dd3f8a0e..f35a7e48 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -385,6 +385,7 @@ The preferred field in agent config is `harness`, and it is required. Deprecated | Enum | Value | | ----------------------- | ----------------------------- | +| `ClaudeCode.Fable_5_1` | `anthropic/claude-fable-5-1` | | `ClaudeCode.Fable_5` | `anthropic/claude-fable-5` | | `ClaudeCode.Opus_5` | `anthropic/claude-opus-5` | | `ClaudeCode.Opus_4_8` | `anthropic/claude-opus-4-8` | @@ -401,6 +402,7 @@ The preferred field in agent config is `harness`, and it is required. Deprecated | Enum | Value | | --------------------------------- | ------------------------------ | +| `OpenAICodex.GPT_6_Astra` | `openai/gpt-6-astra` | | `OpenAICodex.GPT_5_6` | `openai/gpt-5.6` (alias → Sol) | | `OpenAICodex.GPT_5_6_Sol` | `openai/gpt-5.6-sol` | | `OpenAICodex.GPT_5_6_Terra` | `openai/gpt-5.6-terra` | @@ -417,6 +419,7 @@ The preferred field in agent config is `harness`, and it is required. Deprecated | Enum | Value | | ---------------------------------- | --------------------------------------- | +| `OpenRouterModel.Claude_Fable_5_1` | `openrouter/anthropic/claude-fable-5.1` | | `OpenRouterModel.Claude_Fable_5` | `openrouter/anthropic/claude-fable-5` | | `OpenRouterModel.Claude_Opus_5` | `openrouter/anthropic/claude-opus-5` | | `OpenRouterModel.Claude_Sonnet_5` | `openrouter/anthropic/claude-sonnet-5` | diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index 35899bf0..798d214a 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -44,6 +44,7 @@ export enum Agent { * Claude Code model identifiers */ export enum ClaudeCode { + Fable_5_1 = "anthropic/claude-fable-5-1", Fable_5 = "anthropic/claude-fable-5", Opus_4_5 = "anthropic/claude-opus-4-5", Opus_4_6 = "anthropic/claude-opus-4-6", @@ -61,6 +62,7 @@ export enum ClaudeCode { * OpenAI Codex model identifiers */ export enum OpenAICodex { + GPT_6_Astra = "openai/gpt-6-astra", GPT_5_6 = "openai/gpt-5.6", GPT_5_6_Sol = "openai/gpt-5.6-sol", GPT_5_6_Terra = "openai/gpt-5.6-terra", @@ -79,6 +81,7 @@ export enum OpenAICodex { * OpenRouter model identifiers — shared across agents that support OpenRouter */ export enum OpenRouterModel { + Claude_Fable_5_1 = "openrouter/anthropic/claude-fable-5.1", Claude_Fable_5 = "openrouter/anthropic/claude-fable-5", Claude_Opus_5 = "openrouter/anthropic/claude-opus-5", Claude_Sonnet_5 = "openrouter/anthropic/claude-sonnet-5", @@ -88,6 +91,7 @@ export enum OpenRouterModel { DeepSeek_R1 = "openrouter/deepseek/deepseek-r1", Gemini_2_5_Pro = "openrouter/google/gemini-2.5-pro", Gemini_2_5_Flash = "openrouter/google/gemini-2.5-flash", + GPT_6_Astra = "openrouter/openai/gpt-6-astra", GPT_5_6_Sol = "openrouter/openai/gpt-5.6-sol", GPT_5_6_Terra = "openrouter/openai/gpt-5.6-terra", GPT_5_6_Luna = "openrouter/openai/gpt-5.6-luna", @@ -100,6 +104,7 @@ export enum OpenRouterModel { * Vercel AI Gateway model identifiers — shared across agents that support Vercel AI Gateway */ export enum VercelModel { + Claude_Fable_5_1 = "vercel/anthropic/claude-fable-5.1", Claude_Fable_5 = "vercel/anthropic/claude-fable-5", Claude_Opus_5 = "vercel/anthropic/claude-opus-5", Claude_Sonnet_5 = "vercel/anthropic/claude-sonnet-5", @@ -107,6 +112,7 @@ export enum VercelModel { Claude_Sonnet_4_6 = "vercel/anthropic/claude-sonnet-4.6", Claude_Opus_4_6 = "vercel/anthropic/claude-opus-4.6", Claude_Haiku_4_5 = "vercel/anthropic/claude-haiku-4.5", + GPT_6_Astra = "vercel/openai/gpt-6-astra", GPT_5_6_Sol = "vercel/openai/gpt-5.6-sol", GPT_5_6_Terra = "vercel/openai/gpt-5.6-terra", GPT_5_6_Luna = "vercel/openai/gpt-5.6-luna", @@ -127,6 +133,7 @@ export enum VercelModel { */ export enum OpenCodeModel { // Anthropic-backed OpenCode models + Claude_Fable_5_1 = "opencode/claude-fable-5-1", Claude_Fable_5 = "opencode/claude-fable-5", Claude_Opus_5 = "opencode/claude-opus-5", Claude_Opus_4_5 = "opencode/claude-opus-4-5", @@ -139,6 +146,7 @@ export enum OpenCodeModel { Claude_Sonnet_5 = "opencode/claude-sonnet-5", Claude_Haiku_4_5 = "opencode/claude-haiku-4-5", // OpenAI-backed OpenCode models + GPT_6_Astra = "opencode/gpt-6-astra", GPT_5_5 = "opencode/gpt-5.5", GPT_5_4 = "opencode/gpt-5.4", GPT_5_4_Pro = "opencode/gpt-5.4-pro", @@ -157,6 +165,7 @@ export enum OpenCodeModel { Zen_Big_Pickle = "opencode/big-pickle", // Paid models Zen_MiniMax_M2_7 = "opencode/minimax-m2.7", + Zen_Claude_Fable_5_1 = "opencode/claude-fable-5-1", Zen_Claude_Fable_5 = "opencode/claude-fable-5", Zen_Claude_Opus_5 = "opencode/claude-opus-5", Zen_Claude_Sonnet_4_6 = "opencode/claude-sonnet-4-6",