diff --git a/bmi-calculator.html b/bmi-calculator.html
deleted file mode 100644
index 4fd6a4b8..00000000
--- a/bmi-calculator.html
+++ /dev/null
@@ -1,404 +0,0 @@
-
-
-
-
-
- BMI 指数计算器
-
-
-
-
-
BMI 指数计算器
-
输入身高体重,快速了解你的身体质量指数
-
-
-
-
-
-
-
-
-
-
--
-
--
-
--
-
-
-
- 偏瘦
- 正常
- 偏胖
- 肥胖
-
-
-
-
-
偏瘦:BMI < 18.5
-
正常:18.5 ≤ BMI < 24
-
偏胖:24 ≤ BMI < 28
-
肥胖:BMI ≥ 28
-
-
-
-
-
-
diff --git a/build.sh b/build.sh
index 2ad6666c..28836531 100755
--- a/build.sh
+++ b/build.sh
@@ -5,6 +5,9 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PI_CLI_DIST="$SCRIPT_DIR/packages/coding-agent/dist/cli.js"
export SPROUTCLAW_CODING_AGENT_DIR="${SPROUTCLAW_CODING_AGENT_DIR:-$SCRIPT_DIR/.sproutclaw/agent}"
+# Align pi-mcp-adapter (and other third-party packages that only read PI_CODING_AGENT_DIR)
+# with SproutClaw's agent dir, so MCP configs in .sproutclaw/agent/mcp.json are loaded.
+export PI_CODING_AGENT_DIR="$SPROUTCLAW_CODING_AGENT_DIR"
NO_ENV=false
ARGS=()
diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts
index afdea285..17112e8c 100644
--- a/packages/ai/src/models.generated.ts
+++ b/packages/ai/src/models.generated.ts
@@ -5155,6 +5155,24 @@ export const MODELS = {
} satisfies Model<"openai-completions">,
},
"huggingface": {
+ "MiniMaxAI/MiniMax-M2": {
+ id: "MiniMaxAI/MiniMax-M2",
+ name: "MiniMax-M2",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.3,
+ output: 1.2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 204800,
+ maxTokens: 128000,
+ } satisfies Model<"openai-completions">,
"MiniMaxAI/MiniMax-M2.1": {
id: "MiniMaxAI/MiniMax-M2.1",
name: "MiniMax-M2.1",
@@ -5209,6 +5227,42 @@ export const MODELS = {
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
+ "MiniMaxAI/MiniMax-M3": {
+ id: "MiniMaxAI/MiniMax-M3",
+ name: "MiniMax-M3",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.3,
+ output: 1.2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 524288,
+ maxTokens: 128000,
+ } satisfies Model<"openai-completions">,
+ "Qwen/Qwen3-235B-A22B": {
+ id: "Qwen/Qwen3-235B-A22B",
+ name: "Qwen3 235B-A22B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.2,
+ output: 0.8,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 40960,
+ maxTokens: 16384,
+ } satisfies Model<"openai-completions">,
"Qwen/Qwen3-235B-A22B-Thinking-2507": {
id: "Qwen/Qwen3-235B-A22B-Thinking-2507",
name: "Qwen3-235B-A22B-Thinking-2507",
@@ -5227,6 +5281,42 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
+ "Qwen/Qwen3-32B": {
+ id: "Qwen/Qwen3-32B",
+ name: "Qwen3 32B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.29,
+ output: 0.59,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 131072,
+ maxTokens: 16384,
+ } satisfies Model<"openai-completions">,
+ "Qwen/Qwen3-Coder-30B-A3B-Instruct": {
+ id: "Qwen/Qwen3-Coder-30B-A3B-Instruct",
+ name: "Qwen3-Coder 30B-A3B Instruct",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: false,
+ input: ["text"],
+ cost: {
+ input: 0.07,
+ output: 0.26,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
"Qwen/Qwen3-Coder-480B-A35B-Instruct": {
id: "Qwen/Qwen3-Coder-480B-A35B-Instruct",
name: "Qwen3-Coder-480B-A35B-Instruct",
@@ -5299,6 +5389,60 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
+ "Qwen/Qwen3.5-122B-A10B": {
+ id: "Qwen/Qwen3.5-122B-A10B",
+ name: "Qwen3.5 122B-A10B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.4,
+ output: 3.2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
+ "Qwen/Qwen3.5-27B": {
+ id: "Qwen/Qwen3.5-27B",
+ name: "Qwen3.5 27B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.3,
+ output: 2.4,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
+ "Qwen/Qwen3.5-35B-A3B": {
+ id: "Qwen/Qwen3.5-35B-A3B",
+ name: "Qwen3.5 35B-A3B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.25,
+ output: 2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
"Qwen/Qwen3.5-397B-A17B": {
id: "Qwen/Qwen3.5-397B-A17B",
name: "Qwen3.5-397B-A17B",
@@ -5317,6 +5461,42 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
+ "Qwen/Qwen3.5-9B": {
+ id: "Qwen/Qwen3.5-9B",
+ name: "Qwen3.5 9B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.17,
+ output: 0.25,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
+ "Qwen/Qwen3.6-35B-A3B": {
+ id: "Qwen/Qwen3.6-35B-A3B",
+ name: "Qwen3.6 35B-A3B",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.15,
+ output: 0.95,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 65536,
+ } satisfies Model<"openai-completions">,
"XiaomiMiMo/MiMo-V2-Flash": {
id: "XiaomiMiMo/MiMo-V2-Flash",
name: "MiMo-V2-Flash",
@@ -5335,6 +5515,24 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
+ "deepseek-ai/DeepSeek-R1": {
+ id: "deepseek-ai/DeepSeek-R1",
+ name: "DeepSeek-R1",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.7,
+ output: 2.5,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 64000,
+ maxTokens: 32768,
+ } satisfies Model<"openai-completions">,
"deepseek-ai/DeepSeek-R1-0528": {
id: "deepseek-ai/DeepSeek-R1-0528",
name: "DeepSeek-R1-0528",
@@ -5371,6 +5569,24 @@ export const MODELS = {
contextWindow: 163840,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
+ "deepseek-ai/DeepSeek-V4-Flash": {
+ id: "deepseek-ai/DeepSeek-V4-Flash",
+ name: "DeepSeek V4 Flash",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.14,
+ output: 0.28,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 1048576,
+ maxTokens: 384000,
+ } satisfies Model<"openai-completions">,
"deepseek-ai/DeepSeek-V4-Pro": {
id: "deepseek-ai/DeepSeek-V4-Pro",
name: "DeepSeek V4 Pro",
@@ -5389,6 +5605,60 @@ export const MODELS = {
contextWindow: 1048576,
maxTokens: 393216,
} satisfies Model<"openai-completions">,
+ "google/gemma-4-26B-A4B-it": {
+ id: "google/gemma-4-26B-A4B-it",
+ name: "Gemma 4 26B A4B IT",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.13,
+ output: 0.4,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 32768,
+ } satisfies Model<"openai-completions">,
+ "google/gemma-4-31B-it": {
+ id: "google/gemma-4-31B-it",
+ name: "Gemma 4 31B IT",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.14,
+ output: 0.4,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 32768,
+ } satisfies Model<"openai-completions">,
+ "meta-llama/Llama-3.3-70B-Instruct": {
+ id: "meta-llama/Llama-3.3-70B-Instruct",
+ name: "Llama-3.3-70B-Instruct",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: false,
+ input: ["text"],
+ cost: {
+ input: 0.59,
+ output: 0.79,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 131072,
+ maxTokens: 4096,
+ } satisfies Model<"openai-completions">,
"moonshotai/Kimi-K2-Instruct": {
id: "moonshotai/Kimi-K2-Instruct",
name: "Kimi-K2-Instruct",
@@ -5479,6 +5749,114 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 262144,
} satisfies Model<"openai-completions">,
+ "moonshotai/Kimi-K2.7-Code": {
+ id: "moonshotai/Kimi-K2.7-Code",
+ name: "Kimi K2.7 Code",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.95,
+ output: 4,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 262144,
+ } satisfies Model<"openai-completions">,
+ "stepfun-ai/Step-3.5-Flash": {
+ id: "stepfun-ai/Step-3.5-Flash",
+ name: "Step 3.5 Flash",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.1,
+ output: 0.3,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 256000,
+ } satisfies Model<"openai-completions">,
+ "zai-org/GLM-4.5": {
+ id: "zai-org/GLM-4.5",
+ name: "GLM-4.5",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.6,
+ output: 2.2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 131072,
+ maxTokens: 98304,
+ } satisfies Model<"openai-completions">,
+ "zai-org/GLM-4.5-Air": {
+ id: "zai-org/GLM-4.5-Air",
+ name: "GLM-4.5-Air",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.13,
+ output: 0.85,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 131072,
+ maxTokens: 98304,
+ } satisfies Model<"openai-completions">,
+ "zai-org/GLM-4.5V": {
+ id: "zai-org/GLM-4.5V",
+ name: "GLM-4.5V",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 0.6,
+ output: 1.8,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 65536,
+ maxTokens: 16384,
+ } satisfies Model<"openai-completions">,
+ "zai-org/GLM-4.6": {
+ id: "zai-org/GLM-4.6",
+ name: "GLM-4.6",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 0.55,
+ output: 2.2,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 204800,
+ maxTokens: 131072,
+ } satisfies Model<"openai-completions">,
"zai-org/GLM-4.7": {
id: "zai-org/GLM-4.7",
name: "GLM-4.7",
@@ -5551,6 +5929,24 @@ export const MODELS = {
contextWindow: 202752,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
+ "zai-org/GLM-5.2": {
+ id: "zai-org/GLM-5.2",
+ name: "GLM-5.2",
+ api: "openai-completions",
+ provider: "huggingface",
+ baseUrl: "https://router.huggingface.co/v1",
+ compat: {"supportsDeveloperRole":false},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 1.4,
+ output: 4.4,
+ cacheRead: 0,
+ cacheWrite: 0,
+ },
+ contextWindow: 262144,
+ maxTokens: 131072,
+ } satisfies Model<"openai-completions">,
},
"kimi-coding": {
"k2p7": {
@@ -8061,6 +8457,24 @@ export const MODELS = {
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
+ "glm-5.2": {
+ id: "glm-5.2",
+ name: "GLM-5.2",
+ api: "openai-completions",
+ provider: "opencode",
+ baseUrl: "https://opencode.ai/zen/v1",
+ compat: {"maxTokensField":"max_tokens"},
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 1.4,
+ output: 4.4,
+ cacheRead: 0.26,
+ cacheWrite: 0,
+ },
+ contextWindow: 1000000,
+ maxTokens: 131072,
+ } satisfies Model<"openai-completions">,
"gpt-5": {
id: "gpt-5",
name: "GPT-5",
@@ -8885,23 +9299,6 @@ export const MODELS = {
contextWindow: 200000,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
- "anthropic/claude-3.5-haiku": {
- id: "anthropic/claude-3.5-haiku",
- name: "Anthropic: Claude 3.5 Haiku",
- api: "openai-completions",
- provider: "openrouter",
- baseUrl: "https://openrouter.ai/api/v1",
- reasoning: false,
- input: ["text", "image"],
- cost: {
- input: 0.8,
- output: 4,
- cacheRead: 0.08,
- cacheWrite: 1,
- },
- contextWindow: 200000,
- maxTokens: 8192,
- } satisfies Model<"openai-completions">,
"anthropic/claude-fable-5": {
id: "anthropic/claude-fable-5",
name: "Anthropic: Claude Fable 5",
@@ -9507,23 +9904,6 @@ export const MODELS = {
contextWindow: 1048576,
maxTokens: 384000,
} satisfies Model<"openai-completions">,
- "essentialai/rnj-1-instruct": {
- id: "essentialai/rnj-1-instruct",
- name: "EssentialAI: Rnj 1 Instruct",
- api: "openai-completions",
- provider: "openrouter",
- baseUrl: "https://openrouter.ai/api/v1",
- reasoning: false,
- input: ["text"],
- cost: {
- input: 0.15,
- output: 0.15,
- cacheRead: 0,
- cacheWrite: 0,
- },
- contextWindow: 32768,
- maxTokens: 4096,
- } satisfies Model<"openai-completions">,
"google/gemini-2.5-flash": {
id: "google/gemini-2.5-flash",
name: "Google: Gemini 2.5 Flash",
@@ -9657,7 +10037,7 @@ export const MODELS = {
cacheRead: 0.2,
cacheWrite: 0.375,
},
- contextWindow: 131072,
+ contextWindow: 65536,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"google/gemini-3.1-flash-lite": {
@@ -9845,7 +10225,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
- maxTokens: 32768,
+ maxTokens: 8192,
} satisfies Model<"openai-completions">,
"ibm-granite/granite-4.1-8b": {
id: "ibm-granite/granite-4.1-8b",
@@ -9947,8 +10327,8 @@ export const MODELS = {
cacheRead: 0.06,
cacheWrite: 0,
},
- contextWindow: 262144,
- maxTokens: 144000,
+ contextWindow: 256000,
+ maxTokens: 80000,
} satisfies Model<"openai-completions">,
"liquid/lfm-2.5-1.2b-thinking:free": {
id: "liquid/lfm-2.5-1.2b-thinking:free",
@@ -10146,13 +10526,13 @@ export const MODELS = {
reasoning: true,
input: ["text"],
cost: {
- input: 0.25,
- output: 1,
- cacheRead: 0.05,
+ input: 0.24,
+ output: 0.96,
+ cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
- maxTokens: 131072,
+ maxTokens: 196608,
} satisfies Model<"openai-completions">,
"minimax/minimax-m3": {
id: "minimax/minimax-m3",
@@ -10169,7 +10549,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 1048576,
- maxTokens: 4096,
+ maxTokens: 512000,
} satisfies Model<"openai-completions">,
"mistralai/codestral-2508": {
id: "mistralai/codestral-2508",
@@ -10505,7 +10885,7 @@ export const MODELS = {
cost: {
input: 0.6,
output: 2.5,
- cacheRead: 0.6,
+ cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -10539,12 +10919,12 @@ export const MODELS = {
input: ["text", "image"],
cost: {
input: 0.66,
- output: 3.5,
- cacheRead: 0.33,
+ output: 3.41,
+ cacheRead: 0.144,
cacheWrite: 0,
},
contextWindow: 262144,
- maxTokens: 262142,
+ maxTokens: 262144,
} satisfies Model<"openai-completions">,
"moonshotai/kimi-k2.7-code": {
id: "moonshotai/kimi-k2.7-code",
@@ -10555,30 +10935,13 @@ export const MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
- input: 0.612,
- output: 3.069,
- cacheRead: 0.1296,
+ input: 0.74,
+ output: 3.5,
+ cacheRead: 0.15,
cacheWrite: 0,
},
contextWindow: 262144,
- maxTokens: 262144,
- } satisfies Model<"openai-completions">,
- "nex-agi/nex-n2-pro:free": {
- id: "nex-agi/nex-n2-pro:free",
- name: "Nex AGI: Nex-N2-Pro (free)",
- api: "openai-completions",
- provider: "openrouter",
- baseUrl: "https://openrouter.ai/api/v1",
- reasoning: true,
- input: ["text", "image"],
- cost: {
- input: 0,
- output: 0,
- cacheRead: 0,
- cacheWrite: 0,
- },
- contextWindow: 262144,
- maxTokens: 262144,
+ maxTokens: 16384,
} satisfies Model<"openai-completions">,
"nvidia/llama-3.3-nemotron-super-49b-v1.5": {
id: "nvidia/llama-3.3-nemotron-super-49b-v1.5",
@@ -10884,7 +11247,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 1047576,
- maxTokens: 4096,
+ maxTokens: 32768,
} satisfies Model<"openai-completions">,
"openai/gpt-4.1-nano": {
id: "openai/gpt-4.1-nano",
@@ -10914,7 +11277,7 @@ export const MODELS = {
cost: {
input: 2.5,
output: 10,
- cacheRead: 1.25,
+ cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 128000,
@@ -11050,11 +11413,11 @@ export const MODELS = {
cost: {
input: 0.25,
output: 2,
- cacheRead: 0.03,
+ cacheRead: 0.025,
cacheWrite: 0,
},
contextWindow: 400000,
- maxTokens: 4096,
+ maxTokens: 128000,
} satisfies Model<"openai-completions">,
"openai/gpt-5-nano": {
id: "openai/gpt-5-nano",
@@ -11118,11 +11481,11 @@ export const MODELS = {
cost: {
input: 1.25,
output: 10,
- cacheRead: 0.125,
+ cacheRead: 0.13,
cacheWrite: 0,
},
contextWindow: 128000,
- maxTokens: 16384,
+ maxTokens: 32000,
} satisfies Model<"openai-completions">,
"openai/gpt-5.1-codex": {
id: "openai/gpt-5.1-codex",
@@ -11209,7 +11572,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 128000,
- maxTokens: 32000,
+ maxTokens: 16384,
} satisfies Model<"openai-completions">,
"openai/gpt-5.2-codex": {
id: "openai/gpt-5.2-codex",
@@ -11816,23 +12179,6 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
- "prime-intellect/intellect-3": {
- id: "prime-intellect/intellect-3",
- name: "Prime Intellect: INTELLECT-3",
- api: "openai-completions",
- provider: "openrouter",
- baseUrl: "https://openrouter.ai/api/v1",
- reasoning: true,
- input: ["text"],
- cost: {
- input: 0.2,
- output: 1.1,
- cacheRead: 0,
- cacheWrite: 0,
- },
- contextWindow: 131072,
- maxTokens: 131072,
- } satisfies Model<"openai-completions">,
"qwen/qwen-2.5-72b-instruct": {
id: "qwen/qwen-2.5-72b-instruct",
name: "Qwen2.5 72B Instruct",
@@ -12422,11 +12768,11 @@ export const MODELS = {
cost: {
input: 0.14,
output: 1,
- cacheRead: 0.05,
+ cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
- maxTokens: 81920,
+ maxTokens: 262144,
} satisfies Model<"openai-completions">,
"qwen/qwen3.5-397b-a17b": {
id: "qwen/qwen3.5-397b-a17b",
@@ -12459,8 +12805,8 @@ export const MODELS = {
cacheRead: 0,
cacheWrite: 0,
},
- contextWindow: 256000,
- maxTokens: 32768,
+ contextWindow: 262144,
+ maxTokens: 262144,
} satisfies Model<"openai-completions">,
"qwen/qwen3.5-flash-02-23": {
id: "qwen/qwen3.5-flash-02-23",
@@ -12734,23 +13080,6 @@ export const MODELS = {
contextWindow: 262144,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
- "thedrummer/rocinante-12b": {
- id: "thedrummer/rocinante-12b",
- name: "TheDrummer: Rocinante 12B",
- api: "openai-completions",
- provider: "openrouter",
- baseUrl: "https://openrouter.ai/api/v1",
- reasoning: false,
- input: ["text"],
- cost: {
- input: 0.17,
- output: 0.43,
- cacheRead: 0,
- cacheWrite: 0,
- },
- contextWindow: 32768,
- maxTokens: 32768,
- } satisfies Model<"openai-completions">,
"thedrummer/unslopnemo-12b": {
id: "thedrummer/unslopnemo-12b",
name: "TheDrummer: UnslopNemo 12B",
@@ -12845,13 +13174,13 @@ export const MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
- input: 0.14,
+ input: 0.105,
output: 0.28,
- cacheRead: 0.0028,
+ cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1048576,
- maxTokens: 131072,
+ maxTokens: 4096,
} satisfies Model<"openai-completions">,
"xiaomi/mimo-v2.5-pro": {
id: "xiaomi/mimo-v2.5-pro",
@@ -13034,11 +13363,11 @@ export const MODELS = {
cost: {
input: 0.98,
output: 3.08,
- cacheRead: 0.182,
+ cacheRead: 0.49,
cacheWrite: 0,
},
contextWindow: 202752,
- maxTokens: 4096,
+ maxTokens: 65535,
} satisfies Model<"openai-completions">,
"z-ai/glm-5.2": {
id: "z-ai/glm-5.2",
@@ -13050,12 +13379,29 @@ export const MODELS = {
thinkingLevelMap: {"xhigh":"xhigh"},
input: ["text"],
cost: {
- input: 1.2,
- output: 4.1,
- cacheRead: 0.2,
+ input: 0.95,
+ output: 3,
+ cacheRead: 0.18,
cacheWrite: 0,
},
contextWindow: 1048576,
+ maxTokens: 32768,
+ } satisfies Model<"openai-completions">,
+ "z-ai/glm-5v-turbo": {
+ id: "z-ai/glm-5v-turbo",
+ name: "Z.ai: GLM 5V Turbo",
+ api: "openai-completions",
+ provider: "openrouter",
+ baseUrl: "https://openrouter.ai/api/v1",
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 1.2,
+ output: 4,
+ cacheRead: 0.24,
+ cacheWrite: 0,
+ },
+ contextWindow: 202752,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"~anthropic/claude-fable-latest": {
@@ -13170,12 +13516,12 @@ export const MODELS = {
input: ["text", "image"],
cost: {
input: 0.66,
- output: 3.5,
- cacheRead: 0.33,
+ output: 3.41,
+ cacheRead: 0.144,
cacheWrite: 0,
},
contextWindow: 262144,
- maxTokens: 262142,
+ maxTokens: 262144,
} satisfies Model<"openai-completions">,
"~openai/gpt-latest": {
id: "~openai/gpt-latest",
@@ -15936,6 +16282,23 @@ export const MODELS = {
contextWindow: 200000,
maxTokens: 8000,
} satisfies Model<"anthropic-messages">,
+ "sakana/fugu-ultra": {
+ id: "sakana/fugu-ultra",
+ name: "Fugu Ultra",
+ api: "anthropic-messages",
+ provider: "vercel-ai-gateway",
+ baseUrl: "https://ai-gateway.vercel.sh",
+ reasoning: true,
+ input: ["text", "image"],
+ cost: {
+ input: 5,
+ output: 30,
+ cacheRead: 0.5,
+ cacheWrite: 0,
+ },
+ contextWindow: 1000000,
+ maxTokens: 1000000,
+ } satisfies Model<"anthropic-messages">,
"stepfun/step-3.5-flash": {
id: "stepfun/step-3.5-flash",
name: "StepFun 3.5 Flash",
@@ -16429,6 +16792,23 @@ export const MODELS = {
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
+ "zai/glm-5.2-fast": {
+ id: "zai/glm-5.2-fast",
+ name: "GLM 5.2 Fast",
+ api: "anthropic-messages",
+ provider: "vercel-ai-gateway",
+ baseUrl: "https://ai-gateway.vercel.sh",
+ reasoning: true,
+ input: ["text"],
+ cost: {
+ input: 3,
+ output: 10.25,
+ cacheRead: 0.5,
+ cacheWrite: 0,
+ },
+ contextWindow: 1000000,
+ maxTokens: 128000,
+ } satisfies Model<"anthropic-messages">,
"zai/glm-5v-turbo": {
id: "zai/glm-5v-turbo",
name: "GLM 5V Turbo",