diff --git a/.changeset/smooth-geckos-grab.md b/.changeset/smooth-geckos-grab.md new file mode 100644 index 0000000..a93a32b --- /dev/null +++ b/.changeset/smooth-geckos-grab.md @@ -0,0 +1,6 @@ +--- +"@upstash/box-cli": patch +"@upstash/box": patch +--- + +introduce gpt-5.6 and sonnet 5 diff --git a/packages/cli/README.md b/packages/cli/README.md index bb2f979..5fc17d2 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -41,15 +41,15 @@ Create a new box and enter an interactive REPL. ```bash # Uses Upstash-managed key by default (no --agent-api-key needed) -box create --agent-harness claude-code --agent-model anthropic/claude-sonnet-4-5 +box create --agent-harness claude-code --agent-model anthropic/claude-sonnet-5 # Use a key stored in the Upstash console -box create --agent-harness claude-code --agent-model anthropic/claude-sonnet-4-5 --agent-api-key stored +box create --agent-harness claude-code --agent-model anthropic/claude-sonnet-5 --agent-api-key stored # Pass a direct API key box create \ --agent-harness claude-code \ - --agent-model anthropic/claude-sonnet-4-5 \ + --agent-model anthropic/claude-sonnet-5 \ --agent-api-key $CLAUDE_KEY \ --runtime node \ --git-token $GITHUB_TOKEN \ @@ -87,8 +87,8 @@ box connect # connects to most recent Create a new box from a snapshot and enter the REPL. Accepts the same flags as `create`. ```bash -box from-snapshot snap_abc123 --agent-model anthropic/claude-sonnet-4-5 --agent-harness claude-code -box from-snapshot snap_abc123 --agent-model anthropic/claude-sonnet-4-5 --agent-harness claude-code --agent-api-key $CLAUDE_KEY +box from-snapshot snap_abc123 --agent-model anthropic/claude-sonnet-5 --agent-harness claude-code +box from-snapshot snap_abc123 --agent-model anthropic/claude-sonnet-5 --agent-harness claude-code --agent-api-key $CLAUDE_KEY ``` ### `box list` @@ -115,7 +115,7 @@ Scaffold a standalone demo project that uses the `@upstash/box` SDK. Creates a d box init-demo \ --token $UPSTASH_BOX_API_KEY \ --agent-harness claude-code \ - --agent-model anthropic/claude-sonnet-4-5 \ + --agent-model anthropic/claude-sonnet-5 \ --runtime node \ --git-token $GITHUB_TOKEN \ --directory my-demo diff --git a/packages/cli/src/models.ts b/packages/cli/src/models.ts index 3ea34cf..585cbff 100644 --- a/packages/cli/src/models.ts +++ b/packages/cli/src/models.ts @@ -22,6 +22,7 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: ClaudeCode.Opus_4_7, label: "Claude Opus 4.7" }, { value: ClaudeCode.Opus_4_6, label: "Claude Opus 4.6" }, { value: ClaudeCode.Opus_4_5, label: "Claude Opus 4.5" }, + { value: ClaudeCode.Sonnet_5, label: "Claude Sonnet 5" }, { value: ClaudeCode.Sonnet_4_6, label: "Claude Sonnet 4.6" }, { value: ClaudeCode.Sonnet_4_5, label: "Claude Sonnet 4.5" }, { value: ClaudeCode.Sonnet_4, label: "Claude Sonnet 4" }, @@ -31,12 +32,17 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, + { value: OpenRouterModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (OR)" }, { value: OpenRouterModel.Claude_Sonnet_4, label: "Claude Sonnet 4 (OR)" }, { value: OpenRouterModel.Claude_Haiku_4_5, label: "Claude Haiku 4.5 (OR)" }, { 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_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)" }, { value: OpenRouterModel.GPT_4_1, label: "GPT-4.1 (OR)" }, { value: OpenRouterModel.O3, label: "o3 (OR)" }, { value: OpenRouterModel.O4_Mini, label: "o4-mini (OR)" }, @@ -45,6 +51,8 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { value: VercelModel.Claude_Fable_5, label: "Claude Fable 5 (Vercel)" }, + { value: VercelModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (Vercel)" }, { value: VercelModel.Claude_Opus_4_7, label: "Claude Opus 4.7 (Vercel)" }, { value: VercelModel.Claude_Sonnet_4_6, label: "Claude Sonnet 4.6 (Vercel)" }, { value: VercelModel.Claude_Opus_4_6, label: "Claude Opus 4.6 (Vercel)" }, @@ -59,6 +67,9 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenAI", options: [ + { 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" }, { value: OpenAICodex.GPT_5_5, label: "GPT-5.5" }, { value: OpenAICodex.GPT_5_4, label: "GPT-5.4" }, { value: OpenAICodex.GPT_5_4_Mini, label: "GPT-5.4 Mini" }, @@ -72,12 +83,17 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, + { value: OpenRouterModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (OR)" }, { value: OpenRouterModel.Claude_Sonnet_4, label: "Claude Sonnet 4 (OR)" }, { value: OpenRouterModel.Claude_Haiku_4_5, label: "Claude Haiku 4.5 (OR)" }, { 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_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)" }, { value: OpenRouterModel.GPT_4_1, label: "GPT-4.1 (OR)" }, { value: OpenRouterModel.O3, label: "o3 (OR)" }, { value: OpenRouterModel.O4_Mini, label: "o4-mini (OR)" }, @@ -86,6 +102,9 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { 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)" }, { value: VercelModel.GPT_5_5, label: "GPT-5.5 (Vercel)" }, { value: VercelModel.GPT_5_5_Pro, label: "GPT-5.5 Pro (Vercel)" }, { value: VercelModel.GPT_5_4, label: "GPT-5.4 (Vercel)" }, @@ -107,6 +126,8 @@ export const MODEL_OPTIONS_BY_AGENT: Record< label: "OpenCode — Paid", options: [ { value: OpenCodeModel.Zen_MiniMax_M2_7, label: "MiniMax M2.7" }, + { value: OpenCodeModel.Zen_Claude_Fable_5, label: "Claude Fable 5" }, + { value: OpenCodeModel.Zen_Claude_Sonnet_5, label: "Claude Sonnet 5" }, { value: OpenCodeModel.Zen_Claude_Sonnet_4_6, label: "Claude Sonnet 4.6" }, { value: OpenCodeModel.Zen_Claude_Sonnet_4_5, label: "Claude Sonnet 4.5" }, { value: OpenCodeModel.Zen_Claude_Sonnet_4, label: "Claude Sonnet 4" }, @@ -124,10 +145,12 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Anthropic", options: [ + { value: OpenCodeModel.Claude_Fable_5, label: "Claude Fable 5" }, { value: OpenCodeModel.Claude_Opus_4_8, label: "Claude Opus 4.8" }, { value: OpenCodeModel.Claude_Opus_4_7, label: "Claude Opus 4.7" }, { value: OpenCodeModel.Claude_Opus_4_6, label: "Claude Opus 4.6" }, { value: OpenCodeModel.Claude_Opus_4_5, label: "Claude Opus 4.5" }, + { value: OpenCodeModel.Claude_Sonnet_5, label: "Claude Sonnet 5" }, { value: OpenCodeModel.Claude_Sonnet_4_6, label: "Claude Sonnet 4.6" }, { value: OpenCodeModel.Claude_Sonnet_4_5, label: "Claude Sonnet 4.5" }, { value: OpenCodeModel.Claude_Sonnet_4, label: "Claude Sonnet 4" }, @@ -155,12 +178,17 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "OpenRouter", options: [ + { value: OpenRouterModel.Claude_Fable_5, label: "Claude Fable 5 (OR)" }, { value: OpenRouterModel.Claude_Opus_4_5, label: "Claude Opus 4.5 (OR)" }, + { value: OpenRouterModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (OR)" }, { value: OpenRouterModel.Claude_Sonnet_4, label: "Claude Sonnet 4 (OR)" }, { value: OpenRouterModel.Claude_Haiku_4_5, label: "Claude Haiku 4.5 (OR)" }, { 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_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)" }, { value: OpenRouterModel.GPT_4_1, label: "GPT-4.1 (OR)" }, { value: OpenRouterModel.O3, label: "o3 (OR)" }, { value: OpenRouterModel.O4_Mini, label: "o4-mini (OR)" }, @@ -169,6 +197,8 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { label: "Vercel AI Gateway", options: [ + { value: VercelModel.Claude_Fable_5, label: "Claude Fable 5 (Vercel)" }, + { value: VercelModel.Claude_Sonnet_5, label: "Claude Sonnet 5 (Vercel)" }, { value: VercelModel.Claude_Opus_4_7, label: "Claude Opus 4.7 (Vercel)" }, { value: VercelModel.Claude_Sonnet_4_6, label: "Claude Sonnet 4.6 (Vercel)" }, { value: VercelModel.GPT_5_5, label: "GPT-5.5 (Vercel)" }, @@ -187,8 +217,10 @@ export const MODEL_OPTIONS_BY_AGENT: Record< { value: CursorModel.GPT_5_4, label: "GPT-5.4" }, { value: CursorModel.GPT_5_4_Mini, label: "GPT-5.4 Mini" }, { value: CursorModel.GPT_5_3_Codex, label: "GPT-5.3 Codex" }, + { value: CursorModel.Claude_Fable_5, label: "Claude Fable 5" }, { value: CursorModel.Claude_Opus_4_8, label: "Claude Opus 4.8" }, { value: CursorModel.Claude_Opus_4_7, label: "Claude Opus 4.7" }, + { value: CursorModel.Claude_Sonnet_5, label: "Claude Sonnet 5" }, { value: CursorModel.Claude_Sonnet_4_6, label: "Claude Sonnet 4.6" }, { value: CursorModel.Claude_Sonnet_4_5, label: "Claude Sonnet 4.5" }, { value: CursorModel.Gemini_3_1_Pro, label: "Gemini 3.1 Pro" }, diff --git a/packages/python-sdk/README.md b/packages/python-sdk/README.md index 9d2d772..806c972 100644 --- a/packages/python-sdk/README.md +++ b/packages/python-sdk/README.md @@ -20,7 +20,7 @@ from upstash_box import AsyncBox, Agent, ClaudeCode async def main(): box = await AsyncBox.create( runtime="node", - agent={"harness": Agent.CLAUDE_CODE, "model": ClaudeCode.SONNET_4_5}, + agent={"harness": Agent.CLAUDE_CODE, "model": ClaudeCode.SONNET_5}, ) async with box: run = await box.agent.run(prompt="Create a hello world Express server") @@ -37,7 +37,7 @@ from upstash_box import Box, Agent, ClaudeCode box = Box.create( runtime="node", - agent={"harness": Agent.CLAUDE_CODE, "model": ClaudeCode.SONNET_4_5}, + agent={"harness": Agent.CLAUDE_CODE, "model": ClaudeCode.SONNET_5}, ) with box: run = box.agent.run(prompt="Create a hello world Express server") @@ -80,7 +80,7 @@ box = await AsyncBox.create( init_command="npm install && npm run dev", agent={ "harness": Agent.CLAUDE_CODE, - "model": "anthropic/claude-sonnet-4-5", + "model": "anthropic/claude-sonnet-5", "api_key": BoxApiKey.UPSTASH_KEY, # or BoxApiKey.STORED_KEY, or a direct key }, git={"token": "...", "user_name": "Jane", "user_email": "jane@example.com"}, @@ -166,7 +166,7 @@ await box.schedule.pause(schedule.id) await box.cd("my-project") print(box.cwd) -await box.configure_model("anthropic/claude-opus-4-5") +await box.configure_model("anthropic/claude-opus-4-8") print(box.model_config) # {"harness": ..., "model": ...} await box.pause() diff --git a/packages/python-sdk/upstash_box/types.py b/packages/python-sdk/upstash_box/types.py index e767b72..02475e8 100644 --- a/packages/python-sdk/upstash_box/types.py +++ b/packages/python-sdk/upstash_box/types.py @@ -57,12 +57,17 @@ class ClaudeCode(str, Enum): SONNET_4 = "anthropic/claude-sonnet-4" SONNET_4_5 = "anthropic/claude-sonnet-4-5" SONNET_4_6 = "anthropic/claude-sonnet-4-6" + SONNET_5 = "anthropic/claude-sonnet-5" HAIKU_4_5 = "anthropic/claude-haiku-4-5" class OpenAICodex(str, Enum): """OpenAI Codex model identifiers.""" + 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" + GPT_5_6_LUNA = "openai/gpt-5.6-luna" GPT_5_5 = "openai/gpt-5.5" GPT_5_4 = "openai/gpt-5.4" GPT_5_4_MINI = "openai/gpt-5.4-mini" @@ -76,12 +81,17 @@ class OpenAICodex(str, Enum): class OpenRouterModel(str, Enum): """OpenRouter model identifiers — shared across agents that support OpenRouter.""" + CLAUDE_FABLE_5 = "openrouter/anthropic/claude-fable-5" + CLAUDE_SONNET_5 = "openrouter/anthropic/claude-sonnet-5" CLAUDE_SONNET_4 = "openrouter/anthropic/claude-sonnet-4" CLAUDE_OPUS_4_5 = "openrouter/anthropic/claude-opus-4-5" CLAUDE_HAIKU_4_5 = "openrouter/anthropic/claude-haiku-4-5" 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_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" GPT_4_1 = "openrouter/openai/gpt-4.1" O3 = "openrouter/openai/o3" O4_MINI = "openrouter/openai/o4-mini" @@ -90,10 +100,15 @@ class OpenRouterModel(str, Enum): class VercelModel(str, Enum): """Vercel AI Gateway model identifiers.""" + CLAUDE_FABLE_5 = "vercel/anthropic/claude-fable-5" + CLAUDE_SONNET_5 = "vercel/anthropic/claude-sonnet-5" CLAUDE_OPUS_4_7 = "vercel/anthropic/claude-opus-4.7" 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_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" GPT_5_5 = "vercel/openai/gpt-5.5" GPT_5_5_PRO = "vercel/openai/gpt-5.5-pro" GPT_5_4 = "vercel/openai/gpt-5.4" @@ -110,6 +125,7 @@ class OpenCodeModel(str, Enum): """OpenCode model identifiers — supports models from multiple providers.""" # Anthropic-backed OpenCode models + CLAUDE_FABLE_5 = "opencode/claude-fable-5" CLAUDE_OPUS_4_5 = "opencode/claude-opus-4-5" CLAUDE_OPUS_4_6 = "opencode/claude-opus-4-6" CLAUDE_OPUS_4_7 = "opencode/claude-opus-4-7" @@ -117,6 +133,7 @@ class OpenCodeModel(str, Enum): CLAUDE_SONNET_4 = "opencode/claude-sonnet-4" CLAUDE_SONNET_4_5 = "opencode/claude-sonnet-4-5" CLAUDE_SONNET_4_6 = "opencode/claude-sonnet-4-6" + CLAUDE_SONNET_5 = "opencode/claude-sonnet-5" CLAUDE_HAIKU_4_5 = "opencode/claude-haiku-4-5" # OpenAI-backed OpenCode models GPT_5_5 = "opencode/gpt-5.5" @@ -137,9 +154,11 @@ class OpenCodeModel(str, Enum): ZEN_BIG_PICKLE = "opencode/big-pickle" # Paid models ZEN_MINIMAX_M2_7 = "opencode/minimax-m2.7" + ZEN_CLAUDE_FABLE_5 = "opencode/claude-fable-5" ZEN_CLAUDE_SONNET_4_6 = "opencode/claude-sonnet-4-6" ZEN_CLAUDE_SONNET_4_5 = "opencode/claude-sonnet-4-5" ZEN_CLAUDE_SONNET_4 = "opencode/claude-sonnet-4" + ZEN_CLAUDE_SONNET_5 = "opencode/claude-sonnet-5" ZEN_CLAUDE_HAIKU_4_5 = "opencode/claude-haiku-4-5" ZEN_CLAUDE_OPUS_4_8 = "opencode/claude-opus-4-8" ZEN_CLAUDE_OPUS_4_7 = "opencode/claude-opus-4-7" @@ -168,6 +187,7 @@ class CursorModel(str, Enum): GPT_5_1_CODEX_MAX = "cursor/gpt-5.1-codex-max" GPT_5_1_CODEX_MINI = "cursor/gpt-5.1-codex-mini" GPT_5_MINI = "cursor/gpt-5-mini" + CLAUDE_FABLE_5 = "cursor/claude-fable-5" CLAUDE_OPUS_4_8 = "cursor/claude-opus-4-8" CLAUDE_OPUS_4_7 = "cursor/claude-opus-4-7" CLAUDE_OPUS_4_6 = "cursor/claude-opus-4-6" @@ -175,6 +195,7 @@ class CursorModel(str, Enum): CLAUDE_SONNET_4_6 = "cursor/claude-sonnet-4-6" CLAUDE_SONNET_4_5 = "cursor/claude-sonnet-4-5" CLAUDE_SONNET_4 = "cursor/claude-sonnet-4" + CLAUDE_SONNET_5 = "cursor/claude-sonnet-5" CLAUDE_HAIKU_4_5 = "cursor/claude-haiku-4-5" GEMINI_3_1_PRO = "cursor/gemini-3.1-pro" GEMINI_3_FLASH = "cursor/gemini-3-flash" diff --git a/packages/sdk/README.md b/packages/sdk/README.md index 7638174..ba4624e 100644 --- a/packages/sdk/README.md +++ b/packages/sdk/README.md @@ -15,7 +15,7 @@ import { Box, Agent } from "@upstash/box"; const box = await Box.create({ runtime: "node", - agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-4-5" }, + agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-5" }, }); const run = await box.agent.run({ @@ -48,7 +48,7 @@ const box = await Box.create({ initCommand: "npm install && npm run dev", agent: { harness: Agent.ClaudeCode, - model: "anthropic/claude-sonnet-4-5", + model: "anthropic/claude-sonnet-5", apiKey: BoxApiKey.UpstashKey, // Upstash-managed key // apiKey: BoxApiKey.StoredKey, // use a key stored via the Upstash console // apiKey: process.env.CLAUDE_KEY!, // or pass a direct API key @@ -96,7 +96,7 @@ Create a new box from a saved snapshot. ```ts const box = await Box.fromSnapshot("snap_abc123", { - agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-4-5" }, + agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-5" }, keepAlive: true, initCommand: "npm install && npm run dev", }); @@ -249,10 +249,10 @@ await box.cd(".."); // back to /workspace/home const { harness, model } = box.modelConfig; // Change the model -await box.configureModel("anthropic/claude-opus-4-5"); +await box.configureModel("anthropic/claude-opus-4-8"); // modelConfig reflects the change immediately -box.modelConfig.model; // "anthropic/claude-opus-4-5" +box.modelConfig.model; // "anthropic/claude-opus-4-8" ``` ### Lifecycle @@ -328,29 +328,40 @@ The preferred field in agent config is `harness`, and it is required. Deprecated | `ClaudeCode.Sonnet_4` | `anthropic/claude-sonnet-4` | | `ClaudeCode.Sonnet_4_5` | `anthropic/claude-sonnet-4-5` | | `ClaudeCode.Sonnet_4_6` | `anthropic/claude-sonnet-4-6` | +| `ClaudeCode.Sonnet_5` | `anthropic/claude-sonnet-5` | | `ClaudeCode.Haiku_4_5` | `anthropic/claude-haiku-4-5` | ### OpenAI Codex -| Enum | Value | -| --------------------------------- | ---------------------------- | -| `OpenAICodex.GPT_5_4` | `openai/gpt-5.4` | -| `OpenAICodex.GPT_5_4_Mini` | `openai/gpt-5.4-mini` | -| `OpenAICodex.GPT_5_3_Codex` | `openai/gpt-5.3-codex` | -| `OpenAICodex.GPT_5_3_Codex_Spark` | `openai/gpt-5.3-codex-spark` | -| `OpenAICodex.GPT_5_2_Codex` | `openai/gpt-5.2-codex` | -| `OpenAICodex.GPT_5_1_Codex_Max` | `openai/gpt-5.1-codex-max` | +| Enum | Value | +| --------------------------------- | ------------------------------ | +| `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` | +| `OpenAICodex.GPT_5_6_Luna` | `openai/gpt-5.6-luna` | +| `OpenAICodex.GPT_5_5` | `openai/gpt-5.5` | +| `OpenAICodex.GPT_5_4` | `openai/gpt-5.4` | +| `OpenAICodex.GPT_5_4_Mini` | `openai/gpt-5.4-mini` | +| `OpenAICodex.GPT_5_3_Codex` | `openai/gpt-5.3-codex` | +| `OpenAICodex.GPT_5_3_Codex_Spark` | `openai/gpt-5.3-codex-spark` | +| `OpenAICodex.GPT_5_2_Codex` | `openai/gpt-5.2-codex` | +| `OpenAICodex.GPT_5_1_Codex_Max` | `openai/gpt-5.1-codex-max` | ### OpenRouter | Enum | Value | | ---------------------------------- | --------------------------------------- | +| `OpenRouterModel.Claude_Fable_5` | `openrouter/anthropic/claude-fable-5` | +| `OpenRouterModel.Claude_Sonnet_5` | `openrouter/anthropic/claude-sonnet-5` | | `OpenRouterModel.Claude_Opus_4_5` | `openrouter/anthropic/claude-opus-4-5` | | `OpenRouterModel.Claude_Sonnet_4` | `openrouter/anthropic/claude-sonnet-4` | | `OpenRouterModel.Claude_Haiku_4_5` | `openrouter/anthropic/claude-haiku-4-5` | | `OpenRouterModel.DeepSeek_R1` | `openrouter/deepseek/deepseek-r1` | | `OpenRouterModel.Gemini_2_5_Pro` | `openrouter/google/gemini-2.5-pro` | | `OpenRouterModel.Gemini_2_5_Flash` | `openrouter/google/gemini-2.5-flash` | +| `OpenRouterModel.GPT_5_6_Sol` | `openrouter/openai/gpt-5.6-sol` | +| `OpenRouterModel.GPT_5_6_Terra` | `openrouter/openai/gpt-5.6-terra` | +| `OpenRouterModel.GPT_5_6_Luna` | `openrouter/openai/gpt-5.6-luna` | | `OpenRouterModel.GPT_4_1` | `openrouter/openai/gpt-4.1` | | `OpenRouterModel.O3` | `openrouter/openai/o3` | | `OpenRouterModel.O4_Mini` | `openrouter/openai/o4-mini` | @@ -361,14 +372,14 @@ Boxes have configurable resource sizes, set at creation time via the `size` opti | Size | CPU | Memory | | -------- | ------- | ------ | -| `small` | 2 cores | 2 GB | +| `small` | 2 cores | 4 GB | | `medium` | 4 cores | 8 GB | | `large` | 8 cores | 16 GB | ```ts const box = await Box.create({ size: "large", - agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-4-5" }, + agent: { harness: Agent.ClaudeCode, model: "anthropic/claude-sonnet-5" }, }); console.log(box.size); // "large" diff --git a/packages/sdk/examples/index.ts b/packages/sdk/examples/index.ts index 56bfb7e..1d34ada 100644 --- a/packages/sdk/examples/index.ts +++ b/packages/sdk/examples/index.ts @@ -6,7 +6,7 @@ const box = await Box.create({ runtime: "node", agent: { harness: Agent.ClaudeCode, - model: "anthropic/claude-sonnet-4", + model: "anthropic/claude-sonnet-5", apiKey: process.env.CLAUDE_KEY!, }, }); diff --git a/packages/sdk/src/types.ts b/packages/sdk/src/types.ts index a3cea35..e6b123e 100644 --- a/packages/sdk/src/types.ts +++ b/packages/sdk/src/types.ts @@ -52,6 +52,7 @@ export enum ClaudeCode { Sonnet_4 = "anthropic/claude-sonnet-4", Sonnet_4_5 = "anthropic/claude-sonnet-4-5", Sonnet_4_6 = "anthropic/claude-sonnet-4-6", + Sonnet_5 = "anthropic/claude-sonnet-5", Haiku_4_5 = "anthropic/claude-haiku-4-5", } @@ -59,6 +60,10 @@ export enum ClaudeCode { * OpenAI Codex model identifiers */ export enum OpenAICodex { + 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", + GPT_5_6_Luna = "openai/gpt-5.6-luna", GPT_5_5 = "openai/gpt-5.5", GPT_5_4 = "openai/gpt-5.4", GPT_5_4_Mini = "openai/gpt-5.4-mini", @@ -73,12 +78,17 @@ export enum OpenAICodex { * OpenRouter model identifiers — shared across agents that support OpenRouter */ export enum OpenRouterModel { + Claude_Fable_5 = "openrouter/anthropic/claude-fable-5", + Claude_Sonnet_5 = "openrouter/anthropic/claude-sonnet-5", Claude_Sonnet_4 = "openrouter/anthropic/claude-sonnet-4", Claude_Opus_4_5 = "openrouter/anthropic/claude-opus-4-5", Claude_Haiku_4_5 = "openrouter/anthropic/claude-haiku-4-5", 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_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", GPT_4_1 = "openrouter/openai/gpt-4.1", O3 = "openrouter/openai/o3", O4_Mini = "openrouter/openai/o4-mini", @@ -88,10 +98,15 @@ export enum OpenRouterModel { * Vercel AI Gateway model identifiers — shared across agents that support Vercel AI Gateway */ export enum VercelModel { + Claude_Fable_5 = "vercel/anthropic/claude-fable-5", + Claude_Sonnet_5 = "vercel/anthropic/claude-sonnet-5", Claude_Opus_4_7 = "vercel/anthropic/claude-opus-4.7", 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_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", GPT_5_5 = "vercel/openai/gpt-5.5", GPT_5_5_Pro = "vercel/openai/gpt-5.5-pro", GPT_5_4 = "vercel/openai/gpt-5.4", @@ -109,6 +124,7 @@ export enum VercelModel { */ export enum OpenCodeModel { // Anthropic-backed OpenCode models + Claude_Fable_5 = "opencode/claude-fable-5", Claude_Opus_4_5 = "opencode/claude-opus-4-5", Claude_Opus_4_6 = "opencode/claude-opus-4-6", Claude_Opus_4_7 = "opencode/claude-opus-4-7", @@ -116,6 +132,7 @@ export enum OpenCodeModel { Claude_Sonnet_4 = "opencode/claude-sonnet-4", Claude_Sonnet_4_5 = "opencode/claude-sonnet-4-5", Claude_Sonnet_4_6 = "opencode/claude-sonnet-4-6", + Claude_Sonnet_5 = "opencode/claude-sonnet-5", Claude_Haiku_4_5 = "opencode/claude-haiku-4-5", // OpenAI-backed OpenCode models GPT_5_5 = "opencode/gpt-5.5", @@ -136,9 +153,11 @@ export enum OpenCodeModel { Zen_Big_Pickle = "opencode/big-pickle", // Paid models Zen_MiniMax_M2_7 = "opencode/minimax-m2.7", + Zen_Claude_Fable_5 = "opencode/claude-fable-5", Zen_Claude_Sonnet_4_6 = "opencode/claude-sonnet-4-6", Zen_Claude_Sonnet_4_5 = "opencode/claude-sonnet-4-5", Zen_Claude_Sonnet_4 = "opencode/claude-sonnet-4", + Zen_Claude_Sonnet_5 = "opencode/claude-sonnet-5", Zen_Claude_Haiku_4_5 = "opencode/claude-haiku-4-5", Zen_Claude_Opus_4_8 = "opencode/claude-opus-4-8", Zen_Claude_Opus_4_7 = "opencode/claude-opus-4-7", @@ -168,6 +187,7 @@ export enum CursorModel { GPT_5_1_Codex_Max = "cursor/gpt-5.1-codex-max", GPT_5_1_Codex_Mini = "cursor/gpt-5.1-codex-mini", GPT_5_Mini = "cursor/gpt-5-mini", + Claude_Fable_5 = "cursor/claude-fable-5", Claude_Opus_4_8 = "cursor/claude-opus-4-8", Claude_Opus_4_7 = "cursor/claude-opus-4-7", Claude_Opus_4_6 = "cursor/claude-opus-4-6", @@ -175,6 +195,7 @@ export enum CursorModel { Claude_Sonnet_4_6 = "cursor/claude-sonnet-4-6", Claude_Sonnet_4_5 = "cursor/claude-sonnet-4-5", Claude_Sonnet_4 = "cursor/claude-sonnet-4", + Claude_Sonnet_5 = "cursor/claude-sonnet-5", Claude_Haiku_4_5 = "cursor/claude-haiku-4-5", Gemini_3_1_Pro = "cursor/gemini-3.1-pro", Gemini_3_Flash = "cursor/gemini-3-flash",